diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/build-and-test.sh b/Sapfor/_projects/dvm/tools/tester/trunk/automation/build-and-test.sh deleted file mode 100644 index a0e04dc..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/build-and-test.sh +++ /dev/null @@ -1,104 +0,0 @@ -#!/bin/sh - -SAVE_DIR=`pwd` -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -if [ "$1" = "--continue" ]; then - CONTINUE_FLAG=1 - shift -else - CONTINUE_FLAG=0 -fi -ORIG_DIR="$1" -REV_NUMBER=$2 - -if [ -f "$SAVE_DIR/dvm-tester.config" ]; then - . "$SAVE_DIR/dvm-tester.config" -fi - -if [ -z "$PLATFORMS" ]; then - exit 1 -fi - -if [ -z "$TEST_SUITE" ]; then - exit 1 -fi - -FULL_REP_URL="$PUBL_BASE_URL/r${REV_NUMBER}${PUBL_SUFFIX}/" - -TEST_SUITE=$(cd "$TEST_SUITE" && pwd) - -# Actually, can be taken any temporary name -RESULTS_DIR="$ORIG_DIR.results" -export TMPDIR="$ORIG_DIR.work" -if [ -d "/home/scratch" ]; then - TEMPL_NAME="/home/scratch/$(basename "$TMPDIR").XXX" - TMPDIR=$(mktemp -d "$TEMPL_NAME") -fi -mkdir -p "$TMPDIR" - -# Launch task processor -TASK_FIFO="$(mktemp -u).task-fifo" -mkfifo "$TASK_FIFO" -if [ $CONTINUE_FLAG -eq 0 ]; then - rm -rf "$RESULTS_DIR" -fi -mkdir -p "$RESULTS_DIR" -cd "$SAVE_DIR" -"$MY_DIR/task-processor.sh" "$RESULTS_DIR" <"$TASK_FIFO" & - -# Build DVM-systems for given platforms and sequentially feed task processor from our test-suite -exec 4>"$TASK_FIFO" -for platf in $PLATFORMS; do - WORK_DIR="$ORIG_DIR.$platf" - if [ $CONTINUE_FLAG -eq 0 ]; then - rm -rf "$WORK_DIR" - fi - if [ ! -e "$WORK_DIR" ]; then - cp -r "$ORIG_DIR" "$WORK_DIR" - fi - cd "$WORK_DIR/dvm_sys" - if [ ! -f platforms/$platf ]; then - if [ -f "$SAVE_DIR/$platf" ]; then - cp "$SAVE_DIR/$platf" platforms/ - else - echo "Can not find platform $platf" - fi - fi - if [ -f platforms/$platf ]; then - PLATFORM=$platf ./dvminstall >install.log 2>& 1 - INST_RES=$? - if [ $INST_RES -ne 0 -o ! -f user/dvm ]; then - : - # TODO: Handle errors with building DVM-system - else - cd "$SAVE_DIR" - "$MY_DIR/perform-tests.sh" "$WORK_DIR/dvm_sys" "$TEST_SUITE" 4 - fi - fi -done -exec 4>&- - -# Wait for task processor to finish -wait - -# Cleanup stuff -rm "$TASK_FIFO" -for platf in $PLATFORMS; do - WORK_DIR="$ORIG_DIR.$platf" -# rm -rf "$WORK_DIR" -done - -# Generate final report -cd "$SAVE_DIR" -"$MY_DIR/gen-report.sh" "$TEST_SUITE" "$RESULTS_DIR" "$FULL_REP_URL" $REV_NUMBER - -# Publish the report and send summary e-mail -if [ "$POPULATE_FLAG" = "1" ]; then - cd "$SAVE_DIR" - "$MY_DIR/populate-report.sh" "$RESULTS_DIR" "$REV_NUMBER" -fi - -# Cleanup stuff finally -#rm -rf "$RESULTS_DIR" -#rm -rf "$TMPDIR" diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/check-repo.sh b/Sapfor/_projects/dvm/tools/tester/trunk/automation/check-repo.sh deleted file mode 100644 index f1c9f80..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/check-repo.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh - -unset CDPATH - -REPO_URL=http://svn.dvm-system.org/svn/dvmhrepo/dvm -REPO_USER=dvmhuser -REPO_PASS=dvmh2013 -PATHS_OF_INTEREST="cdvm/trunk cdvmh-clang/trunk driver/trunk fdvm/trunk general/examples/trunk general/platforms/trunk general/trunk rts/trunk rts-dvmh/trunk tools/pppa/trunk tools/predictor/trunk" - -SVN_PARAMS="--username $REPO_USER --password $REPO_PASS --non-interactive" - -PREV_REV=`cat latest-seen-revision` -[ "$PREV_REV" -ge 0 ] 2>/dev/null -if [ $? -ne 0 ]; then - PREV_REV=0 -fi - -NEW_REV=`svn info $SVN_PARAMS $REPO_URL | grep "Revision" | awk '{ print $2 }'` -[ "$NEW_REV" -ge 1 ] 2>/dev/null -if [ $? -ne 0 ]; then - NEW_REV=0 -fi - -# If latest-seen-revision is corrupted, then inspect only latest revision -if [ $PREV_REV -eq 0 -a $NEW_REV -gt 0 ]; then - PREV_REV=$(( NEW_REV - 1 )) -fi - -CUR_REV=$(( PREV_REV + 1 )) -while [ $CUR_REV -le $NEW_REV ]; do - TO_TEST=1 - COMMIT_MSG=`svn log $SVN_PARAMS --incremental -c $CUR_REV $REPO_URL | tail -n +4` - IS_INTERMEDIATE=`echo "$COMMIT_MSG" | grep -i "intermediate" | wc -l` - IS_TRIVIAL=`echo "$COMMIT_MSG" | grep -i "trivial" | wc -l` - IS_COSMETICS=`echo "$COMMIT_MSG" | grep -i "cosmetics" | wc -l` - IS_MAJOR=`echo "$COMMIT_MSG" | grep -i "major" | wc -l` - if [ $IS_INTERMEDIATE -ne 0 -o $IS_TRIVIAL -ne 0 -o $IS_COSMETICS -ne 0 ]; then - TO_TEST=0 - elif [ $IS_MAJOR -ne 0 ]; then - TO_TEST=2 - fi - if [ $TO_TEST -ne 0 -a -n "$PATHS_OF_INTEREST" ]; then - NO_TEST=1 - for p in $PATHS_OF_INTEREST; do - WHAT_CHANGED=`svn diff $SVN_PARAMS --summarize -c $CUR_REV $REPO_URL/$p` - if [ -n "$WHAT_CHANGED" ]; then - NO_TEST=0 - break - fi - done - if [ $NO_TEST -ne 0 ]; then - TO_TEST=0 - fi - fi - if [ $TO_TEST -eq 1 ]; then - echo $CUR_REV >>pending-revisions - elif [ $TO_TEST -eq 2 ]; then - echo $CUR_REV >>pending-revisions-full - fi - CUR_REV=$(( CUR_REV + 1 )) -done - -if [ $NEW_REV -gt 0 ]; then - echo $NEW_REV >latest-seen-revision -fi diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.config b/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.config deleted file mode 100644 index e1ffa48..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.config +++ /dev/null @@ -1,19 +0,0 @@ -PLATFORMS="Titan" - -TEST_SUITE="test-suite" -RECIPIENTS="krukov@keldysh.ru, bakhtin@keldysh.ru, pritmick@yandex.ru, alex-w900i@yandex.ru, valex@keldysh.ru, savol@keldysh.ru, socol@keldysh.ru, konov@keldysh.ru" - -REPO_BASE_URL="http://svn.dvm-system.org/svn/dvmhrepo" -REPO_USER="dvmhuser" -REPO_PASS="dvmh2013" - -LIST_SERVER="admdvm@svn.dvm-system.org" -LIST_PATH="/home/admdvm/pending-revisions" - -PUBL_BASE_URL="http://svn.dvm-system.org/dvm-test-results" -PUBL_SERVER="admdvm@svn.dvm-system.org" -PUBL_BASE_PATH="/var/www/html/dvm-test-results" -PUBL_SUFFIX= - -MAIL_SERVER="admdvm@svn.dvm-system.org" -SENDMAIL="/usr/sbin/sendmail" diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.sh b/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.sh deleted file mode 100644 index 170c256..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/dvm-tester.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh - -unset CDPATH - -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -MAX_INVOCATIONS=-1 -WAIT_INTERVAL=60 -WORKING_DIR=`pwd` - -parse_params() { - while [ -n "$1" ]; do - if [ "$1" = "--once" ]; then - MAX_INVOCATIONS=1 - elif [ "$1" = "--max-invocations" ]; then - MAX_INVOCATIONS=$2 - shift - elif [ "$1" = "--working-dir" ]; then - WORKING_DIR="$2" - shift - elif [ "$1" = "--wait-interval" ]; then - WAIT_INTERVAL=$2 - shift - fi - shift - done -} - -parse_params "$@" - -if [ -f "$WORKING_DIR/dvm-tester.config" ]; then - . "$WORKING_DIR/dvm-tester.config" -else - echo "No dvm-tester.config found!" >& 2 - exit 1 -fi - -if [ $MAX_INVOCATIONS -lt 0 ]; then - INF_MODE=1 -else - INF_MODE=0 -fi - -counter=0 -while [ $INF_MODE -ne 0 -o $counter -lt $MAX_INVOCATIONS ]; do - while true; do - if [ -f "$WORKING_DIR/dvm-tester.pause" ] && [ -n "$(cat "$WORKING_DIR/dvm-tester.pause")" ]; then - echo "[$(date)] Paused explicitly (local)" - elif [ -f "$MY_DIR/dvm-tester.pause" ] && [ -n "$(cat "$MY_DIR/dvm-tester.pause")" ]; then - echo "[$(date)] Paused explicitly (global)" - elif [ $(ps aux | grep task-processor.sh | wc -l) -gt 1 ]; then - echo "[$(date)] Waiting existing task-processor.sh process to finish" - else - break - fi - sleep $WAIT_INTERVAL - done - echo "[$(date)] Attempting to get pending revision number" - REV=`ssh $LIST_SERVER "head -n 1 $LIST_PATH && tail -n +2 $LIST_PATH >$LIST_PATH.tmp && mv $LIST_PATH.tmp $LIST_PATH"` - echo "[$(date)] Got '$REV'" - if [ -z "$REV" ]; then - if [ $INF_MODE -ne 0 ]; then - sleep $WAIT_INTERVAL - continue - else - break - fi - fi - "$MY_DIR/test-revision.sh" --working-dir "$WORKING_DIR" --populate $REV - counter=$(( counter + 1 )) -done - -echo "[$(date)] Exiting normally" diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/populate-report.sh b/Sapfor/_projects/dvm/tools/tester/trunk/automation/populate-report.sh deleted file mode 100644 index ffd5c09..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/populate-report.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/sh - -SAVE_DIR=`pwd` -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -RESULTS_DIR="$1" -REV_NUMBER=$2 - -if [ -f "$SAVE_DIR/dvm-tester.config" ]; then - . "$SAVE_DIR/dvm-tester.config" -fi - -if [ -z "$RECIPIENTS" ]; then - RECIPIENTS="pritmick@yandex.ru" -fi - -PUBL_PATH="$PUBL_BASE_PATH/r${REV_NUMBER}${PUBL_SUFFIX}" -COPY_PATHS="$PUBL_BASE_PATH/latest${PUBL_SUFFIX}" - -ssh $PUBL_SERVER "mkdir -p \"$PUBL_PATH\"" -scp "$RESULTS_DIR/report/full-report.html" "$PUBL_SERVER:$PUBL_PATH/index.html" -scp "$RESULTS_DIR/report/sources.tgz" "$PUBL_SERVER:$PUBL_PATH/sources.tgz" -for p in $COPY_PATHS; do - ssh $PUBL_SERVER "rm -rf \"$p\"; cp -r \"$PUBL_PATH\" \"$p\"" -done -create_email() -{ - echo "MIME-Version: 1.0" - echo "Content-type: text/html;charset=UTF-8" - echo "From: dvm@keldysh.ru" - echo "To: $RECIPIENTS" - echo "Subject: DVM tester: Test results for revision $REV_NUMBER" - echo - cat "$1" - echo "." - echo -} -create_email "$RESULTS_DIR/report/brief-report.html" | ssh $MAIL_SERVER "$SENDMAIL $RECIPIENTS" diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/automation/test-revision.sh b/Sapfor/_projects/dvm/tools/tester/trunk/automation/test-revision.sh deleted file mode 100644 index f468693..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/automation/test-revision.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/sh - -unset CDPATH - -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -POPULATE_FLAG=0 -WORKING_DIR=`pwd` -REV= - -parse_params() { - while [ -n "$1" ]; do - if [ "$1" = "--working-dir" ]; then - WORKING_DIR="$2" - shift - elif [ "$1" = "--populate" ]; then - POPULATE_FLAG=1 - else - REV=$1 - fi - shift - done -} - -parse_params $@ - -if [ -z "$REV" ]; then - exit 1 -fi - -if [ -f "$WORKING_DIR/dvm-tester.config" ]; then - . "$WORKING_DIR/dvm-tester.config" -else - exit 1 -fi - -REPO_URL="$REPO_BASE_URL/dvm/releases/current-trunk" -SVN_PARAMS="--username $REPO_USER --password $REPO_PASS --non-interactive" - -update_test_suite() { - if [ -e "$TEST_SUITE/.svn" ]; then - ( cd "$TEST_SUITE" && svn $SVN_PARAMS update ) - fi -} - -test_revision() { - REV=$1 - echo "[$(date)] Testing revision $REV" - SAVE_DIR=`pwd` - WORK_DIR="$WORKING_DIR/dvm_r$REV" - rm -rf "$WORK_DIR" - svn co $SVN_PARAMS -r $REV "$REPO_URL" "$WORK_DIR" >/dev/null - SVN_RES=$? - while [ $SVN_RES -ne 0 ]; do - sleep 1 - rm -rf "$WORK_DIR" - svn co $SVN_PARAMS -r $REV "$REPO_URL" "$WORK_DIR" >/dev/null - SVN_RES=$? - done - cd "$WORK_DIR" - TMP_FILE=`mktemp` - svn propget svn:externals >$TMP_FILE - SVN_RES=$? - while [ $SVN_RES -ne 0 ]; do - svn propget svn:externals >$TMP_FILE - SVN_RES=$? - done - CHILDREN=`cat $TMP_FILE | sed '/^$/d' | awk '{print $(NF)}'` - rm $TMP_FILE - for d in $CHILDREN; do - cd "$WORK_DIR/$d" - svn up $SVN_PARAMS -r $REV >/dev/null - SVN_RES=$? - while [ $SVN_RES -ne 0 ]; do - sleep 1 - svn cleanup $SVN_PARAMS - svn up $SVN_PARAMS -r $REV >/dev/null - SVN_RES=$? - done - done - rm -rf "$WORK_DIR.tmp" - mv "$WORK_DIR" "$WORK_DIR.tmp" - svn export "$WORK_DIR.tmp" "$WORK_DIR" >/dev/null - SVN_RES=$? - while [ $SVN_RES -ne 0 ]; do - sleep 1 - rm -rf "$WORK_DIR" - svn export "$WORK_DIR.tmp" "$WORK_DIR" >/dev/null - SVN_RES=$? - done - rm -rf "$WORK_DIR.tmp" - cd "$WORKING_DIR" - POPULATE_FLAG=$POPULATE_FLAG "$MY_DIR/build-and-test.sh" "$WORK_DIR" $REV - echo "[$(date)] Testing revision $REV done" -# rm -rf "$WORK_DIR" - cd "$SAVE_DIR" -} - -update_test_suite -test_revision $REV diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/configure-run.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/configure-run.sh deleted file mode 100644 index 857c890..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/configure-run.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh - -# Common part -MAX_PPN=60 -MAX_CPU_SHARING_FACTOR=4 -MAX_CUDA_SHARING_FACTOR=16 - -# Default -NODE_COUNT=1 -MAX_NODES_PER_TASK=1 -INTERACTIVE=1 -HAS_RES_MANAGER=0 - -# Specializations -if [ `hostname` = "k100" ]; then - NODE_COUNT=64 - MAX_NODES_PER_TASK=8 - INTERACTIVE=0 - # Since launch isn't interactive - one must provide is_launched, is_finished, get_elapsed_time, stdout_fn, stderr_fn calls - get_task_dir() { - local n - for n in 1 2 3 4 5 6 7 8 9; do - if [ -d "$1.$n" ]; then - printf %s "$1.$n" - return - fi - done - printf %s "$1" - } - is_launched() { - local STDOUT_FN - STDOUT_FN="$1" - local STDERR_FN - STDERR_FN="$2" - # Add handling for refuses from SUPPZ - echo 1 - } - is_finished() { - if [ "$(tail -n 1 $(get_task_dir "$1")/manager.log)" = "Exiting..." ]; then - echo 1 - else - echo 0 - fi - } - get_elapsed_time() { - local da - local mo - local ye - local dat - local tim - local sec1 - local sec2 - local task_dir - task_dir="$(get_task_dir "$1")" - dat=`grep "started at" <"$task_dir/manager.log" | awk '{print $5}' | sed 's/\./ /g'` - tim=`grep "started at" <"$task_dir/manager.log" | awk '{print $6}'` - da=`echo "$dat" | awk '{print $1}'` - mo=`echo "$dat" | awk '{print $2}'` - ye=`echo "$dat" | awk '{print $3}'` - dat="$ye-$mo-$da $tim" - sec1=`date -d "$dat" +%s` - dat=`grep "done at" <"$task_dir/manager.log" | awk '{print $6}' | sed 's/\./ /g'` - tim=`grep "done at" <"$task_dir/manager.log" | awk '{print $7}'` - da=`echo "$dat" | awk '{print $1}'` - mo=`echo "$dat" | awk '{print $2}'` - ye=`echo "$dat" | awk '{print $3}'` - dat="$ye-$mo-$da $tim" - sec2=`date -d "$dat" +%s` - echo $(( sec2 - sec1 )) - } - stdout_fn() { - echo "$(get_task_dir "$1")/output" - } - stderr_fn() { - echo "$(get_task_dir "$1")/errors" - } - HAS_RES_MANAGER=1 - # Since machine has resource manager (task queue) - one must provide can_launch call - can_launch() { - if [ `mps 2>/dev/null | tail -n +3 | wc -l` -lt 6 ]; then - echo 1 - else - echo 0 - fi - } -fi diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/default-test-analyzer.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/default-test-analyzer.sh deleted file mode 100644 index 49123ff..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/default-test-analyzer.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -# Requires variables: LAUNCH_EXIT_CODE, STDERR_FN -# Produces variables: TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL - -if [ `grep -E 'Assertion' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Assertion failed" - ERROR_LEVEL=3 -elif [ `grep -E 'RTS fatal' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS fatal" - ERROR_LEVEL=2 -elif [ `grep -E 'RTS err' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS err" - ERROR_LEVEL=1 -elif [ $LAUNCH_EXIT_CODE -ne 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Launch failure" - ERROR_LEVEL=4 -else - TEST_PASSED=1 - RESULT_COMMENT="OK" - ERROR_LEVEL=0 -fi diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/gen-report.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/gen-report.sh deleted file mode 100644 index 3268fda..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/gen-report.sh +++ /dev/null @@ -1,348 +0,0 @@ -#!/bin/bash -# Bash is required due to usage of associative arrays - -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) -SAVE_DIR=`pwd` - -TEST_SUITE="$1" -RESULTS_DIR="$2" -FULL_REP_URL="$3" -REV_NUMBER=$4 - -if [ -z "$FULL_REP_URL" ]; then - FULL_REP_URL="full-report.html" -fi - -if [ -z "$REV_NUMBER" ]; then - REV_NUMBER=UNKNOWN -fi - -MAX_LONELY_OK=50 -REPORT_DIR="$RESULTS_DIR/report" -rm -rf "$REPORT_DIR" -RES_FILES=`mktemp` -find "$RESULTS_DIR" -mindepth 1 -type f | LC_ALL=C sort >$RES_FILES -BUGGY_FILE_DIR="$REPORT_DIR/sources" -mkdir -p "$BUGGY_FILE_DIR" -REPORT_FILE="$REPORT_DIR/brief-report.html" -FULL_REPORT_FILE="$REPORT_DIR/full-report.html" - -COL_COUNT=2 -PLATFORMS= -HAS_SUBTESTS=0 -TOTAL_LAUNCHES=0 -TOTAL_ERROR_LAUNCHES=0 - -while IFS= read -r f; do - CUR_DEPTH=0 - TEST_SHORT_PATH=`basename "$f" .result` - TMPSTR=`dirname "$f"` - while [ "$TMPSTR" != "$RESULTS_DIR" ]; do - CUR_DEPTH=$(( $CUR_DEPTH + 1 )) - TEST_SHORT_PATH="$(basename "$TMPSTR")/$TEST_SHORT_PATH" - TMPSTR=`dirname "$TMPSTR"` - done - IS_SUBTEST=0 - if [ ! -e "$TEST_SUITE/$TEST_SHORT_PATH" ]; then - HAS_SUBTESTS=1 - IS_SUBTEST=1 - fi - if [ $(( CUR_DEPTH + 2 )) -gt $COL_COUNT ]; then - COL_COUNT=$(( $CUR_DEPTH + 2 )) - fi - if [ $IS_SUBTEST -eq 0 ]; then - while IFS= read -r lin; do - eval $lin - if [ -z "$PLATFORMS" ]; then - PLATFORMS=$PLATFORM - else - FOUND_FLAG=0 - for platf in $PLATFORMS; do - if [ $platf = $PLATFORM ]; then - FOUND_FLAG=1 - fi - done - if [ $FOUND_FLAG -eq 0 ]; then - PLATFORMS="$PLATFORMS $PLATFORM" - fi - fi - TOTAL_LAUNCHES=$(( $TOTAL_LAUNCHES + 1 )) - if [ "$ERROR_LEVEL" != "0" ]; then - TOTAL_ERROR_LAUNCHES=$(( $TOTAL_ERROR_LAUNCHES + 1 )) - fi - done <"$f" - fi -done <$RES_FILES - -CAT_COUNT=$(( COL_COUNT - 1 - HAS_SUBTESTS - 1 )) - -exec 5>"$REPORT_FILE" -exec 6>"$FULL_REPORT_FILE" - -echo "" >& 5 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 -echo "Test results for DVM-system. Revision $REV_NUMBER." >& 5 -echo "Test results for DVM-system. Revision $REV_NUMBER." >& 6 -echo "" >& 6 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 -echo "

Test results for DVM-system. Revision $REV_NUMBER.

" >& 5 -echo "

Test results for DVM-system. Revision $REV_NUMBER.

" >& 6 -echo "

Tested on platforms: $PLATFORMS.

" >& 5 -echo "

Tested on platforms: $PLATFORMS.

" >& 6 -echo "

Full report can be seen on $FULL_REP_URL

" >& 5 -echo "

Launches with errors: $TOTAL_ERROR_LAUNCHES / $TOTAL_LAUNCHES

" >& 5 -echo "

Launches with errors: $TOTAL_ERROR_LAUNCHES / $TOTAL_LAUNCHES

" >& 6 -echo "

Download sources of buggy tests

" >& 6 -echo "" >& 5 -echo "
" >& 6 -echo "" >& 5 -echo "" >& 6 -CUR_COL=0 -while [ $CUR_COL -lt $CAT_COUNT ]; do - echo "" >& 5 - echo "" >& 6 - CUR_COL=$(( CUR_COL + 1 )) -done -echo "" >& 5 -echo "" >& 6 -if [ $HAS_SUBTESTS -ne 0 ]; then - echo "" >& 6 -fi -echo "" >& 5 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 - -output_cat_recursive() -{ - if [ `basename "$1"` != "$1" ]; then - output_cat_recursive `dirname "$1"` - fi - if [ $TO_BRIEF -ne 0 ]; then - echo "" >& 5 - fi - echo "" >& 6 - FILLED_COLS=$(( FILLED_COLS + 1 )) - if [ $FILLED_COLS -eq 1 -a `basename "$1"` = "Performance" ]; then - FORCE_TABLE=1 - fi -} - -output_cat() -{ - FILLED_COLS=0 - output_cat_recursive "$1" - while [ $FILLED_COLS -lt $CAT_COUNT ]; do - if [ $TO_BRIEF -ne 0 ]; then - echo "" >& 5 - fi - echo "" >& 6 - FILLED_COLS=$(( FILLED_COLS + 1 )) - done -} - -nextDetailsId=1 - -while IFS= read -r f; do - CUR_DEPTH=0 - TEST_SHORT_PATH=`basename "$f" .result` - TMPSTR=`dirname "$f"` - while [ "$TMPSTR" != "$RESULTS_DIR" ]; do - CUR_DEPTH=$(( $CUR_DEPTH + 1 )) - TEST_SHORT_PATH="$(basename "$TMPSTR")/$TEST_SHORT_PATH" - TMPSTR=`dirname "$TMPSTR"` - done - SUBTEST_NAME= - if [ ! -e "$TEST_SUITE/$TEST_SHORT_PATH" ]; then - SUBTEST_NAME=`basename "$TEST_SHORT_PATH"` - TEST_SHORT_PATH=`dirname "$TEST_SHORT_PATH"` - fi - HAS_FAILS=0 - if [ `grep "TEST_PASSED=0" <"$f" | wc -l` -gt 0 ]; then - HAS_FAILS=1 - if [ ! -e "$BUGGY_FILE_DIR/$TEST_SHORT_PATH" ]; then - mkdir -p `dirname "$BUGGY_FILE_DIR/$TEST_SHORT_PATH"` - cp -ur "$TEST_SUITE/$TEST_SHORT_PATH" "$BUGGY_FILE_DIR/$TEST_SHORT_PATH" - fi - fi - TO_BRIEF=1 - if [ -n "$SUBTEST_NAME" -o $HAS_FAILS -eq 0 ]; then - TO_BRIEF=0 - fi - if [ $TO_BRIEF -ne 0 ]; then - echo "" >& 5 - fi - echo "" >& 6 - FORCE_TABLE=0 - output_cat `dirname "$TEST_SHORT_PATH"` - if [ $TO_BRIEF -ne 0 ]; then - echo "" >& 5 - fi - if [ -n "$SUBTEST_NAME" ]; then - echo "" >& 6 - echo "" >& 6 - else - echo "" >& 6 - fi - ERROR_LEVELS=$( - while IFS= read -r lin; do - eval $lin - if [ -z "$ERROR_LEVEL" ]; then - ERROR_LEVEL=0 - fi - echo $ERROR_LEVEL - done <"$f" | sort -unr) - if [ $TO_BRIEF -ne 0 ]; then - echo "" >& 5 - echo "" >& 5 - fi - echo "" >& 6 - echo "" >& 6 -done <$RES_FILES - -echo "
CategoryCategoryTest nameTest nameSubtestTest resultTest result
" >& 5 - basename "$1" >& 5 - echo "" >& 6 - basename "$1" >& 6 - echo "  
" >& 5 - echo `basename "$TEST_SHORT_PATH"` >& 5 - echo "" >& 6 - echo `basename "$TEST_SHORT_PATH"` >& 6 - echo "" >& 6 - echo "$SUBTEST_NAME" >& 6 - echo "" >& 6 - echo `basename "$TEST_SHORT_PATH"` >& 6 - echo "" >& 5 - fi - echo "" >& 6 - LAUNCH_COUNT=`wc -l <"$f"` -# echo "$LAUNCH_COUNT total" >& 5 -# echo "$LAUNCH_COUNT total" >& 6 - if [ -n "$ERROR_LEVELS" ]; then - for el in $ERROR_LEVELS; do - unset countByComment - unset passedByComment - declare -A countByComment - declare -A passedByComment - while IFS= read -r lin; do - eval $lin - if [ -z "$ERROR_LEVEL" ]; then - ERROR_LEVEL=0 - fi - if [ "$ERROR_LEVEL" = "$el" ]; then - if [ -z "${countByComment["$RESULT_COMMENT"]}" ]; then - countByComment["$RESULT_COMMENT"]=0 - fi - countByComment["$RESULT_COMMENT"]=$(( countByComment["$RESULT_COMMENT"] + 1 )) - passedByComment["$RESULT_COMMENT"]=$TEST_PASSED - fi - done <"$f" - for cmt in "${!countByComment[@]}"; do - if [ ${passedByComment["$cmt"]} -ne 0 ]; then - DIV_CLASS=passed - DIV_COLOR=green - else - DIV_CLASS=failed - DIV_COLOR=red - fi - if [ $TO_BRIEF -ne 0 ]; then - echo "
" >& 5 - echo "${countByComment[$cmt]} $cmt" >& 5 - echo "
" >& 5 - fi - echo "
" >& 6 - if [ $HAS_FAILS -ne 0 -o $LAUNCH_COUNT -le $MAX_LONELY_OK -o $FORCE_TABLE -ne 0 ]; then - echo "" >& 6 - echo "${countByComment[$cmt]} $cmt" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - echo "" >& 6 - while IFS= read -r lin; do - eval $lin - if [ -z "$ERROR_LEVEL" ]; then - ERROR_LEVEL=0 - fi - if [ "$ERROR_LEVEL" = "$el" -a "$RESULT_COMMENT" = "$cmt" ]; then - echo "" >& 6 - echo "" >& 6 - if [ $NOH_FLAG -ne 0 ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - if [ $AUTOTFM_FLAG -ne 0 ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - if [ -n "$PROC_GRID" ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - if [ -n "$CPUS_PER_PROC" ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - if [ -n "$CUDAS_PER_PROC" ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - if [ -n "$CALC_TIME" ]; then - echo "" >& 6 - else - echo "" >& 6 - fi - echo "" >& 6 - fi - done <"$f" - echo "
PlatformnoHautoTfmGridCPUsGPUsTime
$PLATFORM+-+-$PROC_GRIDN/A$CPUS_PER_PROCN/A$CUDAS_PER_PROCN/A$CALC_TIMEN/A
" >& 6 - nextDetailsId=$(( nextDetailsId + 1 )) - else - echo "${countByComment[$cmt]} $cmt" >& 6 - fi - echo "
" >& 6 - done - done - else - if [ $TO_BRIEF -ne 0 ]; then - echo " " >& 5 - fi - echo " " >& 6 - fi - if [ $TO_BRIEF -ne 0 ]; then - echo "
" >& 5 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 -echo "" >& 5 -echo "" >& 6 - -exec 5>&- -exec 6>&- - -cd "$REPORT_DIR" -tar -czf "sources.tgz" "sources" -cd "$SAVE_DIR" - -rm $RES_FILES diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/machine-config.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/machine-config.sh deleted file mode 100644 index 5b3e82f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/machine-config.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Default -# Assuming several identical processors and not counting HT cores -CPUS_PER_NODE=$(( `cat /proc/cpuinfo | grep "cpu cores" | LC_ALL=C sort | uniq | awk '{ print $4 }'` * `cat /proc/cpuinfo | grep "physical id" | LC_ALL=C sort | uniq | wc -l` )) -which nvidia-smi >/dev/null 2>& 1 -if [ $? -eq 0 ]; then - CUDAS_PER_NODE=`nvidia-smi -L 2>/dev/null | wc -l` -else - CUDAS_PER_NODE=0 -fi - -# Specializations -if [ `hostname` = "k100" ]; then - CPUS_PER_NODE=12 - CUDAS_PER_NODE=3 -fi diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/perform-tests.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/perform-tests.sh deleted file mode 100644 index 50724bf..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/perform-tests.sh +++ /dev/null @@ -1,352 +0,0 @@ -#!/bin/bash -# Bash is required due to usage of arrays - -SAVE_DIR=`pwd` -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -DVMSYS_DIR="$1" -TEST_SUITE="$2" -TASK_PROCESSOR_FD=$3 - -. "$MY_DIR/machine-config.sh" - -if [ -f "$SAVE_DIR/machine-config.sh" ]; then - . "$SAVE_DIR/machine-config.sh" -fi - -. "$MY_DIR/test-utils.sh" - -PLATFORM_CMD=$(grep "PLATFORM=" <"$DVMSYS_DIR/bin/dvm_settings.sh" | sed -s 's/export //g') -eval $PLATFORM_CMD - -SETTINGS_FILE=settings -ANALYZER_FILE=test-analyzer.sh - -prepare_new_dir() { - local TASK_DIR - TASK_DIR=`mktemp -d` - local COMP_OPTS - COMP_OPTS="$1" - local COMPILE_PID - local COMPILE_RES - cd "$TASK_DIR" - echo "#!/bin/sh" >dvm - echo "export dvmarithmloopsize=1000000" >>dvm - echo "exec '$DVMSYS_DIR/bin/dvm_drv' \"\$@\"" >>dvm - chmod a+x dvm - cp "$DVMSYS_DIR/user/usr.par" ./ - set -m - if [ -f "$TEST_FILE" ]; then - cp "$TEST_FILE" "$TEST_NAME" - ./dvm $LANG_COMP -shared-dvm $COMP_OPTS "$TEST_NAME" >"build.log" 2>& 1 & - COMPILE_PID=$! - else - find "$TEST_FILE" -mindepth 1 -maxdepth 1 | xargs cp -r -t . - PATH="$TASK_DIR:$PATH" ./compile.sh $COMP_OPTS >"build.log" 2>& 1 & - COMPILE_PID=$! - fi - proc_killer -$COMPILE_PID 600 & - KILLER_PID=$! - disown - wait $COMPILE_PID - COMPILE_RES=$? - kill -2 $KILLER_PID >/dev/null 2>& 1 - kill -15 $KILLER_PID >/dev/null 2>& 1 - kill -9 $KILLER_PID >/dev/null 2>& 1 - if [ ! -f "$TEST_FILE" ] && [ $COMPILE_RES -eq 0 ] && [ ! -f "$TEST_EXENAME" ]; then - :> "$TEST_EXENAME" - fi - echo "$TASK_DIR" -} - -do_test() { - TEST_FILE="$1" - TEST_NAME=`basename "$TEST_FILE"` - TEST_SHORT_PATH="$TEST_NAME" - TMPSTR=`dirname $TEST_FILE` - while [ "$TMPSTR" != "$TEST_SUITE" ]; do - TEST_SHORT_PATH="$(basename $TMPSTR)/$TEST_SHORT_PATH" - TMPSTR=`dirname $TMPSTR` - done - TEST_EXENAME="${TEST_NAME%.*}" - case ${TEST_NAME##*.} in - c|cdv) IS_FORTRAN=0;; - f|f90|fdv) IS_FORTRAN=1;; - esac - if [ $IS_FORTRAN -ne 0 ]; then - LANG_COMP="f" - else - LANG_COMP="c" - fi - TEST_DIMS= - if [ -n "$DIMENSION_COUNT" ]; then - TEST_DIMS=$DIMENSION_COUNT - else - for t in $DIMENSION_MAP; do - FN=`echo $t | sed 's/=/ /g' | awk '{print $1}'` - DIM=`echo $t | sed 's/=/ /g' | awk '{print $2}'` - if [ "$FN" = "$TEST_NAME" ]; then - TEST_DIMS=$DIM - break - fi - done - fi - if [ -z "$TEST_DIMS" ]; then - # Trying to extract dimension number from filename - it is first digit in it. - TEST_DIMS=`echo "$TEST_EXENAME" | sed 's/[^0-9]//g' | cut -c1` - fi - if [ -z "$TEST_DIMS" ]; then - echo "Can not find information about dimension count for test $TEST_FILE" >& 2 - TEST_DIMS=1 - fi - if [ $MAX_DIM_PROC_COUNT -le 0 ]; then - MAX_DIM_PROC_COUNT=$MAX_PROC_COUNT - fi - while true; do - if [ -f "$SAVE_DIR/dvm-tester.pause" ] && [ "$(cat "$SAVE_DIR/dvm-tester.pause")" = "Immediate" ]; then - echo "Paused explicitly (local)" - elif [ -f "$MY_DIR/dvm-tester.pause" ] && [ "$(cat "$MY_DIR/dvm-tester.pause")" = "Immediate" ]; then - echo "Paused explicitly (global)" - else - break - fi - sleep 60 - done - echo "Compiling $TEST_SHORT_PATH on $PLATFORM platform" - if [ $GPU_ONLY -eq 0 ]; then - # Compile with noH - NOH_DIR=`prepare_new_dir "-noH"` - if [ -f "$NOH_DIR/$TEST_EXENAME" ]; then - ISSUE_NOH=1 - else - ISSUE_NOH=0 - fi - fi - if [ $DVM_ONLY -eq 0 ]; then - # Compile without noH - H_DIR=`prepare_new_dir ""` - if [ -f "$H_DIR/$TEST_EXENAME" ]; then - ISSUE_H=1 - else - ISSUE_H=0 - fi - # And with autoTfm - AUTOTFM_DIR=`prepare_new_dir "-autoTfm"` - if [ -f "$AUTOTFM_DIR/$TEST_EXENAME" ]; then - ISSUE_AUTOTFM=1 - else - ISSUE_AUTOTFM=0 - fi - fi -# cat "$H_DIR/build.log" - echo "Generating tasks for $TEST_SHORT_PATH with $TEST_DIMS dimensions on $PLATFORM platform" - COMMON_PART=$( - echo -n "TASK_TYPE=1" - echo -n " TEST_PLATFORM=$PLATFORM" - echo -n " SHARE_RESOURCES=$SHARE_RESOURCES" - echo -n " TEST_ANALYZER=\"$TEST_ANALYZER\"" - echo -n " TEST_SHORT_PATH=\"$TEST_SHORT_PATH\"" - echo -n " TASK_EXE=\"$TEST_EXENAME\"" - echo -n " TEST_MAX_TIME=$MAX_TIME" - ) - # Additional size number 0 added - i=0 - while [ $i -le $TEST_DIMS ]; do - sizes[$i]=1 - i=$(( i + 1 )) - done - counter=0 - totalSize=1 - while [ $(( sizes[0] )) -eq 1 ]; do - PROC_GRID= - if [ $IS_FORTRAN -eq 0 ]; then - i=1 - while [ $i -le $TEST_DIMS ]; do - PROC_GRID="$PROC_GRID $((sizes[i]))" - i=$(( i + 1 )) - done - else - i=$TEST_DIMS - while [ $i -ge 1 ]; do - PROC_GRID="$PROC_GRID $((sizes[i]))" - i=$(( i - 1 )) - done - fi - if [ $GPU_ONLY -eq 0 ]; then - if [ $ISSUE_NOH -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$NOH_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " TASK_NOH_FLAG=1" >&$TASK_PROCESSOR_FD - echo -n " CPUS_PER_PROC=1" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - fi - if [ $DVM_ONLY -eq 0 ]; then - # Single-device and single-threaded configurations - if [ $GPU_ONLY -eq 0 ]; then - if [ $ISSUE_H -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$H_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " CPUS_PER_PROC=1" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - fi - if [ $CUDAS_PER_NODE -gt 0 ]; then - if [ $ISSUE_H -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$H_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " CUDAS_PER_PROC=1" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - if [ $ISSUE_AUTOTFM -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$AUTOTFM_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " TASK_AUTOTFM_FLAG=1" >&$TASK_PROCESSOR_FD - echo -n " CUDAS_PER_PROC=1" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - fi - # Multi-device and multi-threaded configurations - MAX_DEVS_PER_PROC=$((sizes[1])) - DEVS_PER_PROC=2 - while [ $DEVS_PER_PROC -le $MAX_DEVS_PER_PROC ]; do - if [ $(( MAX_DEVS_PER_PROC % DEVS_PER_PROC )) -ne 0 ]; then - DEVS_PER_PROC=$(( $DEVS_PER_PROC + 1 )) - continue - fi - if [ $IS_FORTRAN -eq 0 ]; then - MD_PROC_GRID=" $((MAX_DEVS_PER_PROC / DEVS_PER_PROC))" - i=2 - while [ $i -le $TEST_DIMS ]; do - MD_PROC_GRID="$MD_PROC_GRID $((sizes[i]))" - i=$(( i + 1 )) - done - else - MD_PROC_GRID= - i=$TEST_DIMS - while [ $i -ge 2 ]; do - MD_PROC_GRID="$MD_PROC_GRID $((sizes[i]))" - i=$(( i - 1 )) - done - MD_PROC_GRID="$MD_PROC_GRID $((MAX_DEVS_PER_PROC / DEVS_PER_PROC))" - fi - if [ $GPU_ONLY -eq 0 ]; then - if [ $ISSUE_H -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$H_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " CPUS_PER_PROC=$DEVS_PER_PROC" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$MD_PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - fi - if [ $ALLOW_MULTIDEV -ne 0 ] && [ $CUDAS_PER_NODE -gt 0 ]; then - for ((GPUS_PER_PROC=1; GPUS_PER_PROC<=$DEVS_PER_PROC; GPUS_PER_PROC++)); do - if [ $ISSUE_H -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$H_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " CPUS_PER_PROC=$(($DEVS_PER_PROC - $GPUS_PER_PROC))" >&$TASK_PROCESSOR_FD - echo -n " CUDAS_PER_PROC=$GPUS_PER_PROC" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$MD_PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - if [ $ISSUE_AUTOTFM -ne 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$AUTOTFM_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " TASK_AUTOTFM_FLAG=1" >&$TASK_PROCESSOR_FD - echo -n " CPUS_PER_PROC=$(($DEVS_PER_PROC - $GPUS_PER_PROC))" >&$TASK_PROCESSOR_FD - echo -n " CUDAS_PER_PROC=$GPUS_PER_PROC" >&$TASK_PROCESSOR_FD - echo -n " PROC_GRID=\"$MD_PROC_GRID\"" >&$TASK_PROCESSOR_FD - counter=$(( counter + 1 )) - echo >&$TASK_PROCESSOR_FD - fi - done - fi - DEVS_PER_PROC=$(( $DEVS_PER_PROC + 1 )) - done - fi - # Advance to next configuration - i=$TEST_DIMS - while [ $i -ge 0 ]; do - sizes[$i]=$(( sizes[i] + 1 )) - totalSize=1 - j=1 - while [ $j -le $TEST_DIMS ]; do - totalSize=$(( totalSize * sizes[j] )) - j=$(( j + 1 )) - done - if [ $(( sizes[i] )) -le $MAX_DIM_PROC_COUNT -a $totalSize -le $MAX_PROC_COUNT ]; then - break - elif [ $i -gt 0 ]; then - sizes[$i]=1 - fi - i=$(( i - 1 )) - done - done - echo "Generated $counter tasks" - COMMON_PART=$( - echo -n "TASK_TYPE=0" - echo -n " TEST_PLATFORM=$PLATFORM" - echo -n " TEST_SHORT_PATH=\"$TEST_SHORT_PATH\"" - echo -n " TASK_EXE=\"$TEST_EXENAME\"" - ) - if [ $GPU_ONLY -eq 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$NOH_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " TASK_NOH_FLAG=1" >&$TASK_PROCESSOR_FD - echo >&$TASK_PROCESSOR_FD - fi - if [ $DVM_ONLY -eq 0 ]; then - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$H_DIR\"" >&$TASK_PROCESSOR_FD - echo >&$TASK_PROCESSOR_FD - echo -n "$COMMON_PART" >&$TASK_PROCESSOR_FD - echo -n " TASK_DIR=\"$AUTOTFM_DIR\"" >&$TASK_PROCESSOR_FD - echo -n " TASK_AUTOTFM_FLAG=1" >&$TASK_PROCESSOR_FD - echo >&$TASK_PROCESSOR_FD - fi -} - -traverse_tests() { - CUR_DIR="$1" - if [ -f "$CUR_DIR/$SETTINGS_FILE" ]; then - . "$CUR_DIR/$SETTINGS_FILE" - fi - if [ -f "$CUR_DIR/$ANALYZER_FILE" ]; then - TEST_ANALYZER="$CUR_DIR/$ANALYZER_FILE" - fi - TESTS=`mktemp` - find "$CUR_DIR" -mindepth 1 -maxdepth 1 -regex '.*[.]\(c\|cdv\|f\|f90\|fdv\)' | LC_ALL=C sort >$TESTS - DIRS=`mktemp` - find "$CUR_DIR" -mindepth 1 -maxdepth 1 -type d -regex '.*/[^.]*' | LC_ALL=C sort >$DIRS - while IFS= read -r f; do - ( do_test "$f" ) - done <$TESTS - while IFS= read -r d; do - ( traverse_tests "$d" ) - done <$DIRS - rm $DIRS $TESTS -} - -set_default_settings() { - MAX_PROC_COUNT=1 - MAX_DIM_PROC_COUNT=0 - SHARE_RESOURCES=0 - ALLOW_MULTIDEV=1 - DVM_ONLY=0 - GPU_ONLY=0 - TEST_ANALYZER="$MY_DIR/default-test-analyzer.sh" - MAX_TIME=300 -} - -set_default_settings -(traverse_tests "$TEST_SUITE") diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/report.css b/Sapfor/_projects/dvm/tools/tester/trunk/main/report.css deleted file mode 100644 index 73c2b3a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/report.css +++ /dev/null @@ -1,24 +0,0 @@ -th, td { - text-align: center; -} -div.passed, a.passed { - color: green; -} -div.failed, a.failed { - color: red; -} -a.details { - text-decoration: none; - font-size: 50%; - border-bottom: 1px dashed; -} -span.details { - font-size: 200%; - line-height: normal; -} -table.details0 { - display: none; -} -table.details1 { - display: block; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/report.js b/Sapfor/_projects/dvm/tools/tester/trunk/main/report.js deleted file mode 100644 index a06a4fb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/report.js +++ /dev/null @@ -1,7 +0,0 @@ -function toggleElem(id) { - var e = document.getElementById(id); - if(e.style.display == 'block') - e.style.display = 'none'; - else - e.style.display = 'block'; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/task-processor.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/task-processor.sh deleted file mode 100644 index 2c867d8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/task-processor.sh +++ /dev/null @@ -1,366 +0,0 @@ -#!/bin/bash -# Bash is required due to usage of 'disown' command - -SAVE_DIR=`pwd` -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -RESULTS_DIR="$1" - -. "$MY_DIR/machine-config.sh" - -if [ -f "$SAVE_DIR/machine-config.sh" ]; then - . "$SAVE_DIR/machine-config.sh" -fi - -. "$MY_DIR/configure-run.sh" - -if [ -f "$SAVE_DIR/configure-run.sh" ]; then - . "$SAVE_DIR/configure-run.sh" -fi - -. "$MY_DIR/test-utils.sh" - -if [ $INTERACTIVE -ne 0 ]; then - stdout_fn() { - echo "$1.stdout" - } - stderr_fn() { - echo "$1.stderr" - } -fi - -if [ $HAS_RES_MANAGER -eq 0 ]; then - RES_MAN_DIR=`mktemp -d` -fi - -resources_freed() { - FN=`mktemp` - if [ $SHARE_RESOURCES -eq 0 ]; then - FREED_CPUS=$(( CPUS_PER_NODE * MAX_CPU_SHARING_FACTOR )) - FREED_CUDAS=$(( CUDAS_PER_NODE * MAX_CUDA_SHARING_FACTOR )) - else - FREED_CPUS=$(( totalProcs * CPUS_PER_PROC )) - FREED_CUDAS=$(( totalProcs * CUDAS_PER_PROC )) - fi - echo "FREED_CPUS=$FREED_CPUS" >>$FN - echo "FREED_CUDAS=$FREED_CUDAS" >>$FN -# echo "rm $FN" >>$FN - mv $FN $RES_MAN_DIR/ -} - -interactive_launcher() { - cd "$LAUNCH_DIR" - STDOUT_FN=`stdout_fn "$LAUNCH_NAME"` - STDERR_FN=`stderr_fn "$LAUNCH_NAME"` - :>$STDOUT_FN - :>$STDERR_FN - set -m -# echo ./dvm run $PROC_GRID "$TASK_EXE" - START_T=`date +%s` - if [ -f "run.sh" ]; then - PATH="$LAUNCH_DIR:$PATH" PROC_GRID="$PROC_GRID" DVMH_PPN=$LAUNCH_PPN DVMH_NUM_THREADS=$CPUS_PER_PROC DVMH_NUM_CUDAS=$CUDAS_PER_PROC ./run.sh "$STDOUT_FN" 2>"$STDERR_FN" & - LAUNCH_PID=$! - else - DVMH_PPN=$LAUNCH_PPN DVMH_NUM_THREADS=$CPUS_PER_PROC DVMH_NUM_CUDAS=$CUDAS_PER_PROC ./dvm run $PROC_GRID "$TASK_EXE" "$STDOUT_FN" 2>"$STDERR_FN" & - LAUNCH_PID=$! - fi - if [ $TEST_MAX_TIME -gt 0 ]; then -# echo "Setting proc_killer to process $LAUNCH_PID for $TEST_MAX_TIME" - proc_killer -$LAUNCH_PID $TEST_MAX_TIME /dev/null 2>& 1 & - KILLER_PID=$! - disown - fi - wait $LAUNCH_PID - START_RES=$? - END_T=`date +%s` - CALC_TIME=$(( END_T - START_T )) - if [ $TEST_MAX_TIME -gt 0 ]; then - kill -2 $KILLER_PID >/dev/null 2>& 1 - kill -15 $KILLER_PID >/dev/null 2>& 1 - kill -9 $KILLER_PID >/dev/null 2>& 1 - fi - if [ $HAS_RES_MANAGER -eq 0 ]; then - resources_freed - fi - echo "$START_RES $CALC_TIME" >"$TASK_EXE.finished" -} - -non_interactive_launcher() { - cd "$LAUNCH_DIR" - STDOUT_FN=`mktemp` - STDERR_FN=`mktemp` -# echo ./dvm run $PROC_GRID "$TASK_EXE" - if [ $TEST_MAX_TIME -gt 0 ]; then - export maxtime=$(( (TEST_MAX_TIME + 59) / 60)) - fi - if [ -f "run.sh" ]; then - PATH="$LAUNCH_DIR:$PATH" PROC_GRID="$PROC_GRID" DVMH_PPN=$LAUNCH_PPN DVMH_NUM_THREADS=$CPUS_PER_PROC DVMH_NUM_CUDAS=$CUDAS_PER_PROC ./run.sh >$STDOUT_FN 2>$STDERR_FN - START_RES=$? - else - DVMH_PPN=$LAUNCH_PPN DVMH_NUM_THREADS=$CPUS_PER_PROC DVMH_NUM_CUDAS=$CUDAS_PER_PROC ./dvm run $PROC_GRID "$TASK_EXE" >$STDOUT_FN 2>$STDERR_FN - START_RES=$? - fi - unset maxtime - :>"$TASK_EXE.committed" - IS_LAUNCHED=`is_launched $STDOUT_FN $STDERR_FN` - rm $STDOUT_FN $STDERR_FN - if [ $START_RES -eq 0 -a $IS_LAUNCHED -ne 0 ]; then - while [ `is_finished "$LAUNCH_NAME"` -eq 0 ]; do - sleep 1 - done - CALC_TIME=`get_elapsed_time "$LAUNCH_NAME"` - fi - if [ $HAS_RES_MANAGER -eq 0 ]; then - resources_freed - fi - echo "$START_RES $CALC_TIME" >"$TASK_EXE.finished" -} - -already_analyzed() { -# echo -n "PLATFORM=\"$TEST_PLATFORM\"" -# echo -n " NOH_FLAG=$TASK_NOH_FLAG" -# echo -n " AUTOTFM_FLAG=$TASK_AUTOTFM_FLAG" -# echo -n " PROC_GRID=\"$PROC_GRID\"" -# echo -n " CPUS_PER_PROC=$CPUS_PER_PROC" -# echo -n " CUDAS_PER_PROC=$CUDAS_PER_PROC" - local res - res=0 - if [ -f "$RESULTS_DIR/$TEST_SHORT_PATH.result" ]; then - if [ $( cat "$RESULTS_DIR/$TEST_SHORT_PATH.result" | grep "PLATFORM=\"$TEST_PLATFORM\"" | grep "NOH_FLAG=$TASK_NOH_FLAG" | grep "AUTOTFM_FLAG=$TASK_AUTOTFM_FLAG" | grep "PROC_GRID=\"$PROC_GRID\"" | grep "CPUS_PER_PROC=$CPUS_PER_PROC" | grep "CUDAS_PER_PROC=$CUDAS_PER_PROC" | wc -l ) -gt 0 ]; then - res=1 - fi - fi - echo $res -} - -launcher() { - counter=0 - if [ $HAS_RES_MANAGER -eq 0 ]; then - if [ $MAX_NODES_PER_TASK -gt 1 ]; then - echo "Can manage resources only for one-node system" - MAX_NODES_PER_TASK=1 - fi - FREE_CPUS=$(( CPUS_PER_NODE * MAX_CPU_SHARING_FACTOR )) - FREE_CUDAS=$(( CUDAS_PER_NODE * MAX_CUDA_SHARING_FACTOR )) - fi - exec 4>$1 - while IFS= read -r TASK_SPEC; do - TEST_PLATFORM=Unknown - TASK_NOH_FLAG=0 - TASK_AUTOTFM_FLAG=0 - PROC_GRID=0 - CPUS_PER_PROC=0 - CUDAS_PER_PROC=0 - eval $TASK_SPEC - LAUNCHED_FLAG=0 - ALREADY_ANALYZED=$( already_analyzed ) - if [ $TASK_TYPE -eq 1 -a $ALREADY_ANALYZED -eq 0 ]; then - CAN_CPUS=$CPUS_PER_NODE - CAN_CUDAS=$CUDAS_PER_NODE - if [ $SHARE_RESOURCES -ne 0 ]; then - CAN_CPUS=$(( CAN_CPUS * MAX_CPU_SHARING_FACTOR )) - CAN_CUDAS=$(( CAN_CUDAS * MAX_CUDA_SHARING_FACTOR )) - fi - LAUNCH_PPN=$MAX_PPN - CUR_PPN=$LAUNCH_PPN - if [ $CPUS_PER_PROC -gt 0 ]; then - CUR_PPN=$(( CAN_CPUS / $CPUS_PER_PROC )) - fi - if [ $CUR_PPN -lt $LAUNCH_PPN ]; then - LAUNCH_PPN=$CUR_PPN - fi - if [ $CUDAS_PER_PROC -gt 0 ]; then - CUR_PPN=$(( CAN_CUDAS / $CUDAS_PER_PROC )) - fi - if [ $CUR_PPN -lt $LAUNCH_PPN ]; then - LAUNCH_PPN=$CUR_PPN - fi - totalProcs=1 - for proc in $PROC_GRID; do - totalProcs=$(( totalProcs * proc )) - done - if [ $LAUNCH_PPN -gt 0 ]; then - USE_NODES=$(( ( totalProcs + LAUNCH_PPN - 1 ) / LAUNCH_PPN )) - else - LAUNCH_PPN=1 - USE_NODES=$(( MAX_NODES_PER_TASK + 1 )) - fi - NEED_CPUS=$(( totalProcs * CPUS_PER_PROC )) - NEED_CUDAS=$(( totalProcs * CUDAS_PER_PROC )) - if [ $USE_NODES -le $MAX_NODES_PER_TASK ]; then - # Launch - counter=$(( counter + 1 )) - LAUNCH_DIR=`mktemp -d` - cp -r $TASK_DIR/* $LAUNCH_DIR/ - TASK_SPEC=$( echo -n "$TASK_SPEC" ; echo " LAUNCH_DIR=\"$LAUNCH_DIR\"" ) - if [ $HAS_RES_MANAGER -eq 0 ]; then - LAUNCH_NAME="$LAUNCH_DIR/$TASK_EXE" - else - LAUNCH_NAME="$LAUNCH_DIR/$TASK_EXE.$totalProcs.1" - fi - TASK_SPEC=$( echo -n "$TASK_SPEC" ; echo " LAUNCH_NAME=\"$LAUNCH_NAME\"" ) - while true; do - if [ -f "$SAVE_DIR/dvm-tester.pause" ] && [ "$(cat "$SAVE_DIR/dvm-tester.pause")" = "Immediate" ]; then - : - elif [ -f "$MY_DIR/dvm-tester.pause" ] && [ "$(cat "$MY_DIR/dvm-tester.pause")" = "Immediate" ]; then - : - else - break - fi - sleep 60 - done - if [ $HAS_RES_MANAGER -ne 0 ]; then - while [ `can_launch` -eq 0 ]; do - sleep 1 - done - else - if [ $SHARE_RESOURCES -eq 0 ]; then - NEED_CPUS=$(( CPUS_PER_NODE * MAX_CPU_SHARING_FACTOR )) - NEED_CUDAS=$(( CUDAS_PER_NODE * MAX_CUDA_SHARING_FACTOR )) - fi - cd "$RES_MAN_DIR" - while [ $FREE_CPUS -lt $NEED_CPUS -o $FREE_CUDAS -lt $NEED_CUDAS ]; do - FOUND_SMTH=0 - for f in `ls`; do - FREED_CPUS= - FREED_CUDAS= - . ./$f - if [ -n "$FREED_CPUS" -a -n "$FREED_CUDAS" ]; then - FOUND_SMTH=1 - FREE_CPUS=$(( FREE_CPUS + FREED_CPUS )) - FREE_CUDAS=$(( FREE_CUDAS + FREED_CUDAS )) - rm $f - fi - done - if [ $FOUND_SMTH -eq 0 ]; then - sleep 1 - fi - done - FREE_CPUS=$(( FREE_CPUS - NEED_CPUS )) - FREE_CUDAS=$(( FREE_CUDAS - NEED_CUDAS )) - fi - # Actually launch - if [ $INTERACTIVE -ne 0 ]; then - interactive_launcher & - else - non_interactive_launcher & - if [ $HAS_RES_MANAGER -ne 0 ]; then - while [ ! -f "$LAUNCH_DIR/$TASK_EXE.committed" ]; do - sleep 1 - done - fi - fi - LAUNCHED_FLAG=1 - else - # Can not launch such big task - echo "Discarding too big task: $TASK_SPEC" - fi - elif [ $TASK_TYPE -eq 0 ]; then - LAUNCHED_FLAG=1 - else - echo "Discarding task: $TASK_SPEC" - fi - if [ $LAUNCHED_FLAG -ne 0 ]; then - echo "$TASK_SPEC" >& 4 - fi - done - echo ":" >& 4 - exec 4>&- - echo "Total tasks launched: $counter" -} - -print_result_line() { - echo -n "PLATFORM=\"$TEST_PLATFORM\"" - echo -n " NOH_FLAG=$TASK_NOH_FLAG" - echo -n " AUTOTFM_FLAG=$TASK_AUTOTFM_FLAG" - echo -n " PROC_GRID=\"$PROC_GRID\"" - echo -n " CPUS_PER_PROC=$CPUS_PER_PROC" - echo -n " CUDAS_PER_PROC=$CUDAS_PER_PROC" - echo -n " CALC_TIME=$TASK_CALC_TIME" - echo -n " TEST_PASSED=$TEST_PASSED" - echo -n " RESULT_COMMENT=\"$RESULT_COMMENT\"" - echo " ERROR_LEVEL=$ERROR_LEVEL" -} - -analyzer() { - counter=0 - FIFO_NAME="$1" - while IFS= read -r TASK_SPEC; do - if [ "$TASK_SPEC" = ":" ]; then - break - fi - CPUS_PER_PROC=0 - CUDAS_PER_PROC=0 - TASK_NOH_FLAG=0 - TASK_AUTOTFM_FLAG=0 - eval $TASK_SPEC - if [ $TASK_TYPE -eq 0 ]; then - if [ ! -f "$TASK_DIR/$TASK_EXE" ]; then - # Report compilation error - if [ `basename "$TEST_SHORT_PATH"` != "$TEST_SHORT_PATH" ]; then - mkdir -p "$RESULTS_DIR/$(dirname "$TEST_SHORT_PATH")" - fi - PROC_GRID= - CPUS_PER_PROC= - CUDAS_PER_PROC= - TASK_CALC_TIME= - TEST_PASSED=0 - RESULT_COMMENT="Compilation error" - ERROR_LEVEL=255 - print_result_line >>"$RESULTS_DIR/$TEST_SHORT_PATH.result" - fi - # Cleanup all the test's stuff - rm -rf "$TASK_DIR" - else - counter=$(( counter + 1 )) - cd "$LAUNCH_DIR" - while [ ! -f "$TASK_EXE.finished" ]; do - sleep 1 - done - read LAUNCH_EXIT_CODE TASK_CALC_TIME <"$TASK_EXE.finished" - STDOUT_FN=`stdout_fn "$LAUNCH_NAME"` - STDERR_FN=`stderr_fn "$LAUNCH_NAME"` - SUBTEST_COUNT=0 - . $TEST_ANALYZER - if [ `basename "$TEST_SHORT_PATH"` != "$TEST_SHORT_PATH" ]; then - mkdir -p "$RESULTS_DIR/$(dirname "$TEST_SHORT_PATH")" - fi - print_result_line >>"$RESULTS_DIR/$TEST_SHORT_PATH.result" - if [ $SUBTEST_COUNT -gt 0 ]; then - mkdir -p $RESULTS_DIR/$TEST_SHORT_PATH - for i in `seq $SUBTEST_COUNT`; do - SUBTEST_NAME=$i - analyze_subtest $i - print_result_line >>"$RESULTS_DIR/$TEST_SHORT_PATH/$SUBTEST_NAME.result" - done - fi -# if [ $LAUNCH_EXIT_CODE -ne 0 -o "$RESULT_COMMENT" = "Crash" ]; then -# echo "Test's $TEST_SHORT_PATH stdout:" -# cat "$STDOUT_FN" -# echo "Test's $TEST_SHORT_PATH stderr:" -# cat "$STDERR_FN" -# fi - rm -rf "$LAUNCH_DIR" - fi - done <$FIFO_NAME - echo "Total tasks analyzed: $counter" -} - -FIFO_NAME="$(mktemp -u).launch-fifo" -mkfifo $FIFO_NAME - -analyzer $FIFO_NAME & -launcher $FIFO_NAME - -wait - -rm $FIFO_NAME - -if [ $HAS_RES_MANAGER -eq 0 ]; then - cd "$RES_MAN_DIR" - for f in `ls`; do - . ./$f - done - cd "$SAVE_DIR" - rm -rf "$RES_MAN_DIR" -fi diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/test-system.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/test-system.sh deleted file mode 100644 index cdaea50..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/test-system.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/sh - -unset CDPATH - -SAVE_DIR=`pwd` -MY_DIR=$(cd "$(dirname "$(which "$0")")" && pwd) - -DVMSYS_DIR= -if [ -f ./dvm ]; then - DVMSYS_DIR_CMD="DVMSYS_DIR=$(grep 'dvmdir=' <./dvm | sed -s 's/export //g' | sed -s 's/dvmdir=//g')" - eval $DVMSYS_DIR_CMD -fi -TEST_SUITE=test-suite -RESULTS_DIR= -APPEND_RESULTS=0 - -parse_params() { - while [ -n "$1" ]; do - if [ "$1" = "--dvm_sys" ]; then - DVMSYS_DIR="$2" - shift - elif [ "$1" = "--test-suite" ]; then - TEST_SUITE="$2" - shift - elif [ "$1" = "--append-results" ]; then - APPEND_RESULTS=1 - RESULTS_DIR="$2" - shift - else - echo "Unknown option '$1'" - exit 1 - fi - shift - done -} - -parse_params $@ || exit 1 - -# Check settings -cd "$SAVE_DIR" -if [ ! -d "$DVMSYS_DIR" -o ! -d "$DVMSYS_DIR/user" -o ! -f "$DVMSYS_DIR/user/dvm" -o ! -d "$TEST_SUITE" ]; then - MY_NAME=`basename "$0"` - echo "Usage: $0 []" - echo " --dvm_sys Directory of already installed DVM-system. Note that it is a directory, which contains directory 'user' directly. Usually it is .../dvm_current/dvm_sys. By default $MY_NAME searches for 'dvm' file in current directory and makes attempt to use its DVM-system" - echo " --test-suite Directory with test suite, which is formed in special way. By default 'test-suite' directory is used." - echo " --append-results Directory with partial results, which will be appended. By default new directory will be created." - echo "Exiting" - exit 1 -fi - -# Make them global paths -DVMSYS_DIR=$(cd "$DVMSYS_DIR" && pwd) -TEST_SUITE=$(cd "$TEST_SUITE" && pwd) - -if [ $APPEND_RESULTS -eq 0 ]; then - RESULTS_DIR="$SAVE_DIR/$(basename "$TEST_SUITE").results" -else - RESULTS_DIR=$(cd "$RESULTS_DIR" && pwd) -fi -export TMPDIR="$SAVE_DIR/$(basename "$TEST_SUITE").work" -if [ -d "/home/scratch" ]; then - TEMPL_NAME="/home/scratch/$(basename "$TMPDIR").XXX" - TMPDIR=$(mktemp -d "$TEMPL_NAME") -fi -mkdir -p "$TMPDIR" - -# Launch task processor -TASK_FIFO="$(mktemp -u).task-fifo" -mkfifo "$TASK_FIFO" -if [ $APPEND_RESULTS -eq 0 ]; then - if [ -e "$RESULTS_DIR" ]; then - echo -n "$RESULTS_DIR already exists. Do you want to rewrite it (Y/n)? " - ans=n - read ans - if [ "$ans" != "y" -a "$ans" != "Y" ]; then - echo "Exiting" - exit 1 - fi - fi - rm -rf "$RESULTS_DIR" -fi -mkdir -p "$RESULTS_DIR" -cd "$SAVE_DIR" -"$MY_DIR/task-processor.sh" "$RESULTS_DIR" <"$TASK_FIFO" & - -# Sequentially feed task processor from our test-suite -exec 4>"$TASK_FIFO" -cd "$SAVE_DIR" -"$MY_DIR/perform-tests.sh" "$DVMSYS_DIR" "$TEST_SUITE" 4 -exec 4>&- - -# Wait for task processor to finish -wait - -# Cleanup stuff -rm "$TASK_FIFO" - -# Generate final report -cd "$SAVE_DIR" -"$MY_DIR/gen-report.sh" "$TEST_SUITE" "$RESULTS_DIR" - -echo "Results can be seen in $RESULTS_DIR directory" -rm -rf "$TMPDIR" diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/main/test-utils.sh b/Sapfor/_projects/dvm/tools/tester/trunk/main/test-utils.sh deleted file mode 100644 index a260849..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/main/test-utils.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -proc_killer() { - local PROC - local TIMEOUT - local counter - PROC="$1" - TIMEOUT=$2 - counter=0 - while [ $counter -lt $TIMEOUT ]; do - sleep 10 - counter=$(( counter + 10 )) - done - kill -2 $PROC >/dev/null 2>& 1 - sleep 10 - kill -15 $PROC >/dev/null 2>& 1 - sleep 10 - kill -9 $PROC >/dev/null 2>& 1 -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr014.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr014.cdv deleted file mode 100644 index 541b849..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr014.cdv +++ /dev/null @@ -1,1228 +0,0 @@ -/* ACR014 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAYS A(N), A(N, M, K, L) ARE TO HAVE NO DISTRIBUTED DIMENSIONS AND DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void ACR0101(); -static void ACR0102(); -static void ACR0103(); -static void ACR0104(); -static void ACR0105(); -static void ACR0106(); -static void ACR0107(); -static void ACR0108(); -static void ACR0109(); -static void ACR0110(); - -static void acr0401(); -static void acr0402(); -static void acr0403(); -static void acr0404(); -static void acr0405(); -static void acr0406(); -static void acr0407(); -static void acr0408(); -static void acr0409(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j, ii, jj; - -int main(int an, char **as) -{ - printf("===START OF ACR014========================\n"); - /* ---------------------------------------- */ - ACR0101(); - /* ---------------------------------------- */ - ACR0102(); - /* ---------------------------------------- */ - ACR0103(); - /* ---------------------------------------- */ - ACR0104(); - /* ---------------------------------------- */ - ACR0105(); - /* ---------------------------------------- */ - ACR0106(); - /* ---------------------------------------- */ - ACR0107(); - /* ---------------------------------------- */ - ACR0108(); - /* ---------------------------------------- */ - ACR0109(); - /* ---------------------------------------- */ - ACR0110(); - /* ---------------------------------------- */ - - /* ---------------------------------------- */ - acr0401(); - /* ---------------------------------------- */ - acr0402(); - /* ---------------------------------------- */ - acr0403(); - /* ---------------------------------------- */ - acr0404(); - /* ---------------------------------------- */ - acr0405(); - /* ---------------------------------------- */ - acr0406(); - /* ---------------------------------------- */ - acr0407(); - /* ---------------------------------------- */ - acr0408(); - /* ---------------------------------------- */ - acr0409(); - /* ---------------------------------------- */ - - printf("=== END OF ACR014 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR0101*/ -void ACR0101() -{ - #define N 8 - #define NL 1000 - char tname[] = "ACR0101 "; - int nloop; - #pragma dvm array distribute[*] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i - 1] + C[i + 1]; - - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[1:1]) - for (i = 1; i < N - 1; i++) - A[i] = A[i - 1] + A[i + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0102 */ -void ACR0102() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0102 "; - int nloop; - #pragma dvm array distribute[*] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i - 1] + C[i + 1]; - - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:1]) - for (i = 1; i < N - 1; i++) - A[i] = A[i - 1] + A[i + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0103 */ -void ACR0103() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0103 "; - int nloop; - #pragma dvm array distribute[*] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i - 1] + C[i + 1]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[1:0]) - for (i = 1; i < N - 1; i++) - A[i] = A[i - 1] + A[i + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0104 */ -void ACR0104() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0104 "; - int nloop; - #pragma dvm array distribute[*], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 2; i < N - 2; i++) - C[i] = C[i - 1] + C[i + 1] + C[i + 2] + C[i - 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[2:2]) - for (i = 2; i < N - 2; i++) - A[i] = A[i - 1] + A[i + 1] + A[i + 2] + A[i - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 2; i < N - 2; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0105 */ -void ACR0105() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0105 "; - int nloop; - #pragma dvm array distribute[*], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 2; i++) - C[i] = C[i + 1] + C[i + 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:2]) - for (i = 1; i < N - 2; i++) - A[i] = A[i + 1] + A[i + 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 2; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0106 */ -void ACR0106() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0106 "; - int nloop; - #pragma dvm array distribute[*], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 2; i < N; i++) - C[i] = C[i - 1] + C[i - 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[2:0]) - for (i = 2; i < N; i++) - A[i] = A[i - 1] + A[i - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 2; i < N; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0107 */ -void ACR0107() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR0107 "; - int nloop; - #pragma dvm array distribute[*], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 3; i < N - 3; i++) - C[i] = C[i - 1] + C[i + 1] + C[i + 2] + C[i - 2] + C[i - 3] + C[i + 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[3:3]) - for (i = 3; i < N - 3; i ++) - A[i] = A[i - 1] + A[i + 1] + A[i + 2] + A[i - 2] + A[i - 3] + A[i + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 3; i < N - 3; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0108 */ -void ACR0108() -{ - #define N 24 - #define NL 1000 - char tname[] = "ACR0108 "; - int nloop; - #pragma dvm array distribute[*], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 3; i++) - C[i] = C[i + 1] + C[i + 2] + C[i + 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:3]) - for (i = 1; i < N - 3; i ++) - A[i] = A[i + 1] + A[i + 2] + A[i + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 3; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0109 */ -void ACR0109() -{ - #define N 24 - #define NL 1000 - char tname[] = "ACR0109 "; - int nloop; - #pragma dvm array distribute[*], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 3; i < N; i++) - C[i] = C[i - 1] + C[i - 2] + C[i - 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[3:0]) - for (i = 3; i < N; i ++) - A[i] = A[i - 1] + A[i - 2] + A[i - 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 3; i < N; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0110 */ -void ACR0110() -{ - #define N 60 - #define NL 1000 - char tname[] = "ACR0110 "; - int nloop; - #pragma dvm array distribute[*], shadow[11:11] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 11; i < N - 11; i++) - C[i] = C[i - 9] + C[i + 9] + C[i + 10] + C[i - 10] + C[i - 11] + C[i + 11]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[11:11]) - for (i = 11; i < N - 11; i ++) - A[i] = A[i - 9] + A[i + 9] + A[i + 10] + A[i - 10] + A[i - 11] + A[i + 11]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 11; i < N - 11; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR0401*/ -void acr0401() -{ - #define NL 1000 - #define N 16 - #define M 8 - #define K 8 - #define L 8 - char tname[] = "ACR0401 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - printf("1234r5\n"); - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - C[i][j][ii][jj] = C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:1][1:1][1:1][1:1]) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - A[i][j][ii][jj] = A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0402*/ -void acr0402() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR0402 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 2] + C[i - 1][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 1] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:2][2:2][2:1][1:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 2] + A[i - 1][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 1] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0403*/ -void acr0403() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR0403 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:0][2:2][2:0][2:0]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0404*/ -void acr0404() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR0404 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i + 1][j][ii][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][2:0][0:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i + 1][j][ii][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0405*/ -void acr0405() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR0405 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[2:2][2:0][0:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][0:2][2:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0406*/ -void acr0406() -{ - #define NL 1000 - #define N 32 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR0406 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i - 3][j][ii][jj] + C[i][j - 3][ii][jj] + C[i][j][ii - 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[3:3][3:3][3:3][3:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i - 3][j][ii][jj] + A[i][j - 3][ii][jj] + A[i][j][ii - 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0407*/ -void acr0407() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR0407 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[0:3][3:3][0:3][0:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i][j - 3][ii][jj] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i][j - 2][ii][jj] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][3:3][0:3][0:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i][j - 3][ii][jj] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i][j - 2][ii][jj] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0408*/ -void acr0408() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR0408 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[0:3][3:3][0:3][3:0] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][0:3][0:3][3:0]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR0409*/ -void acr0409() -{ - #define NL 1000 - #define N 59 - #define M 59 - #define K 59 - #define L 59 - char tname[] = "ACR0409 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][*][*][*], shadow[11:11][11:11][11:11][11:11] - int (*A)[M][K][L]; - int (*C)[M][K][L]; - int NNL = NL; - A = malloc(N * M * K * L * sizeof(int)); - C = malloc(N * M * K * L * sizeof(int)); - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - for (ii = 11; ii < K - 11; ii++) - for (jj = 11; jj < L - 11; jj++) - C[i][j][ii][jj] = C[i + 11][j][ii][jj] + C[i][j + 11][ii][jj] + C[i][j][ii + 11][jj] + C[i][j][ii][jj + 11] + C[i - 11][j][ii][jj] + C[i][j - 11][ii][jj] + C[i][j][ii - 11][jj] + C[i][j][ii][jj - 11]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[11:11][11:11][11:11][11:11]) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - A[i][j][ii][jj] = A[i + 11][j][ii][jj] + A[i][j + 11][ii][jj] + A[i][j][ii + 11][jj] + A[i][j][ii][jj + 11] + A[i - 11][j][ii][jj] + A[i][j - 11][ii][jj] + A[i][j][ii - 11][jj] + A[i][j][ii][jj - 11]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr11.cdv deleted file mode 100644 index 867ed75..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr11.cdv +++ /dev/null @@ -1,538 +0,0 @@ -/* ACR11 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr1101(); -static void acr1102(); -static void acr1103(); -static void acr1104(); -static void acr1105(); -static void acr1106(); -static void acr1107(); -static void acr1108(); -static void acr1109(); -static void acr1110(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i; - -int main(int an, char **as) -{ - printf("===START OF ACR11========================\n"); - /* ---------------------------------------- */ - acr1101(); - /* ---------------------------------------- */ - acr1102(); - /* ---------------------------------------- */ - acr1103(); - /* ---------------------------------------- */ - acr1104(); - /* ---------------------------------------- */ - acr1105(); - /* ---------------------------------------- */ - acr1106(); - /* ---------------------------------------- */ - acr1107(); - /* ---------------------------------------- */ - acr1108(); - /* ---------------------------------------- */ - acr1109(); - /* ---------------------------------------- */ - acr1110(); - /* ---------------------------------------- */ - - printf("=== END OF ACR11 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR1101*/ -void acr1101() -{ - #define N 8 - #define NL 1000 - char tname[] = "ACR1101 "; - int nloop; - #pragma dvm array distribute[block] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i - 1] + C[i + 1]; - - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[1:1]) - for (i = 1; i < N - 1; i++) - A[i] = A[i - 1] + A[i + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1102 */ -void acr1102() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1102 "; - int nloop; - #pragma dvm array distribute[block] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i] + C[i + 1]; - - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:1]) - for (i = 1; i < N - 1; i++) - A[i] = A[i] + A[i + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1103 */ -void acr1103() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1103 "; - int nloop; - #pragma dvm array distribute[block] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 1; i++) - C[i] = C[i - 1] + C[i]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[1:0]) - for (i = 1; i < N - 1; i++) - A[i] = A[i - 1] + A[i]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1104 */ -void acr1104() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1104 "; - int nloop; - #pragma dvm array distribute[block], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 2; i < N - 2; i++) - C[i] = C[i - 1] + C[i + 1] + C[i + 2] + C[i - 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[2:2]) - for (i = 2; i < N - 2; i++) - A[i] = A[i - 1] + A[i + 1] + A[i + 2] + A[i - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 2; i < N - 2; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1105 */ -void acr1105() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1105 "; - int nloop; - #pragma dvm array distribute[block], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 2; i++) - C[i] = C[i + 1] + C[i + 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:2]) - for (i = 1; i < N - 2; i++) - A[i] = A[i + 1] + A[i + 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 2; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1106 */ -void acr1106() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1106 "; - int nloop; - #pragma dvm array distribute[block], shadow[2:2] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 2; i < N; i++) - C[i] = C[i - 1] + C[i - 2]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[2:0]) - for (i = 2; i < N; i++) - A[i] = A[i - 1] + A[i - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 2; i < N; i++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1107 */ -void acr1107() -{ - #define N 16 - #define NL 1000 - char tname[] = "ACR1107 "; - int nloop; - #pragma dvm array distribute[block], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 3; i < N - 3; i++) - C[i] = C[i - 1] + C[i + 1] + C[i + 2] + C[i - 2] + C[i - 3] + C[i + 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[3:3]) - for (i = 3; i < N - 3; i ++) - A[i] = A[i - 1] + A[i + 1] + A[i + 2] + A[i - 2] + A[i - 3] + A[i + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 3; i < N - 3; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1108 */ -void acr1108() -{ - #define N 24 - #define NL 1000 - char tname[] = "ACR1108 "; - int nloop; - #pragma dvm array distribute[block], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 1; i < N - 3; i++) - C[i] = C[i + 1] + C[i + 2] + C[i + 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[0:3]) - for (i = 1; i < N - 3; i ++) - A[i] = A[i + 1] + A[i + 2] + A[i + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 1; i < N - 3; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1109 */ -void acr1109() -{ - #define N 24 - #define NL 1000 - char tname[] = "ACR1109 "; - int nloop; - #pragma dvm array distribute[block], shadow[3:3] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 3; i < N; i++) - C[i] = C[i - 1] + C[i - 2] + C[i - 3]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[3:0]) - for (i = 3; i < N; i ++) - A[i] = A[i - 1] + A[i - 2] + A[i - 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 3; i < N; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ---------------------------------------------ACR1110 */ -void acr1110() -{ - #define N 60 - #define NL 1000 - char tname[] = "ACR1110 "; - int nloop; - #pragma dvm array distribute[block], shadow[11:11] - int *A; - A = (int (*))malloc(N * sizeof(int)); - int *C; - C = (int (*))malloc(N * sizeof(int)); - int NNL = NL; - - for (i = 0; i < N; i++) - C[i] = NNL + i; - nloop = NL; - - for (i = 11; i < N - 11; i++) - C[i] = C[i - 9] + C[i + 9] + C[i + 10] + C[i - 10] + C[i - 11] + C[i + 11]; - #pragma dvm actual(nloop) - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) across(A[11:11]) - for (i = 11; i < N - 11; i ++) - A[i] = A[i - 9] + A[i + 9] + A[i + 10] + A[i - 10] + A[i - 11] + A[i + 11]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i] on A[i]) reduction(min(nloop)) - for (i = 11; i < N - 11; i ++) - if (A[i] != C[i]) - nloop = Min(nloop, i); - #pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef N - #undef NL -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr12.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr12.cdv deleted file mode 100644 index 62b721f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr12.cdv +++ /dev/null @@ -1,939 +0,0 @@ -/* ACR12 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N, M) IS TO HAVE 1 DISTRIBUTED DIMENSION AND DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr1201(); -static void acr1202(); -static void acr1203(); -static void acr1204(); -static void acr1205(); -static void acr1206(); -static void acr1207(); -static void acr1208(); -static void acr1209(); -static void acr1210(); -static void acr1211(); -static void acr1212(); -static void acr1213(); -static void acr1214(); -static void acr1215(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j; - -int main(int an, char **as) -{ - printf("===START OF ACR12========================\n"); - /* ---------------------------------------- */ - acr1201(); - /* ---------------------------------------- */ - acr1202(); - /* ---------------------------------------- */ - acr1203(); - /* ---------------------------------------- */ - acr1204(); - /* ---------------------------------------- */ - acr1205(); - /* ---------------------------------------- */ - acr1206(); - /* ---------------------------------------- */ - acr1207(); - /* ---------------------------------------- */ - acr1208(); - /* ---------------------------------------- */ - acr1209(); - /* ---------------------------------------- */ - acr1210(); - /* ---------------------------------------- */ - acr1211(); - /* ---------------------------------------- */ - acr1212(); - /* ---------------------------------------- */ - acr1213(); - /* ---------------------------------------- */ - acr1214(); - /* ---------------------------------------- */ - acr1215(); - /* ---------------------------------------- */ - - printf("=== END OF ACR12 =========================\n"); - return 0; -} -/* ---------------------------------------------acr1201*/ -void acr1201() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1201 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block] - int (*A)[M]; - A = (int (*)[M])malloc(N * sizeof(int[M])); - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j] + C[i][j + 1] + C[i - 1][j] + C[i][j - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[1:1][1:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j] + A[i][j + 1] + A[i - 1][j] + A[i][j - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1202*/ -void acr1202() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1202 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:0]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1203*/ -void acr1203() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1203 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i - 1][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[1:0][0:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i - 1][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1204*/ -void acr1204() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1204 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[1:1][0:1] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi, nloopj) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1205*/ -void acr1205() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1205 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[0:1][1:1] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i][j - 1] + C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][1:0]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i][j - 1] + A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1206*/ -void acr1206() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1206 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i + 2][j] + C[i][j + 2] + C[i + 2][j] + C[i - 2][j] + C[i][j - 2]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][2:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i + 2][j] + A[i][j + 2] + A[i + 2][j] + A[i - 2][j] + A[i][j - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1207*/ -void acr1207() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1207 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i + 2][j] + C[i][j + 2] + C[i][j - 2]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:2][2:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i + 2][j] + A[i][j + 2] + A[i][j - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1208*/ -void acr1208() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1208 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i - 1][j] + C[i][j - 1] + C[i - 2][j] + C[i + 2][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][2:0]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i - 1][j] + A[i][j - 1] + A[i - 2][j] + A[i + 2][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1209*/ -void acr1209() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1209 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[2:2][0:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j + 2] + C[i + 1][j] + C[i + 2][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][0:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j + 2] + A[i + 1][j] + A[i + 2][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1210*/ -void acr1210() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1210 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[3:3][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i + 1][j] + C[i][j + 2] + C[i + 3][j] + C[i][j -3 ] + C[i - 2][j] + C[i][j - 1]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:3][3:3]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i + 1][j] + A[i][j + 2] + A[i + 3][j] + A[i][j - 3] + A[i - 2][j] + A[i][j - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1211*/ -void acr1211() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1211 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[3:3][0:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:0][0:1]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1212*/ -void acr1212() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1212 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[0:3][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j] + C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:0]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j] + A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1213*/ -void acr1213() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1213 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[3:3][3:0] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i][j - 3] + C[i + 3][j] + C[i - 3][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:3][3:0]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i][j - 3] + A[i + 3][j] + A[i - 3][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1214*/ -void acr1214() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "acr1214 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][*], shadow[3:0][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i - 3][j] + C[i][j + 3]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:0][3:3]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i - 3][j] + A[i][j + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------acr1215*/ -void acr1215() -{ - #define NL 1000 - #define N 59 - #define M 59 - char tname[] = "acr1215 "; - int nloopi, nloopj; - #pragma dvm array distribute[*][block], shadow[11:11][11:11] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - C[i][j] = C[i + 11][j] + C[i][j + 10] + C[i + 9][j] + C[i][j - 11] + C[i - 10][j] + C[i][j - 9]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[10:11][11:10]) - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - A[i][j] = A[i + 11][j] + A[i][j + 10] + A[i + 9][j] + A[i][j - 11] + A[i - 10][j] + A[i][j - 9]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr22.cdv deleted file mode 100644 index a742575..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr22.cdv +++ /dev/null @@ -1,939 +0,0 @@ -/* ACR22 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr2201(); -static void acr2202(); -static void acr2203(); -static void acr2204(); -static void acr2205(); -static void acr2206(); -static void acr2207(); -static void acr2208(); -static void acr2209(); -static void acr2210(); -static void acr2211(); -static void acr2212(); -static void acr2213(); -static void acr2214(); -static void acr2215(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j; - -int main(int an, char **as) -{ - printf("===START OF ACR22========================\n"); - /* ---------------------------------------- */ - acr2201(); - /* ---------------------------------------- */ - acr2202(); - /* ---------------------------------------- */ - acr2203(); - /* ---------------------------------------- */ - acr2204(); - /* ---------------------------------------- */ - acr2205(); - /* ---------------------------------------- */ - acr2206(); - /* ---------------------------------------- */ - acr2207(); - /* ---------------------------------------- */ - acr2208(); - /* ---------------------------------------- */ - acr2209(); - /* ---------------------------------------- */ - acr2210(); - /* ---------------------------------------- */ - acr2211(); - /* ---------------------------------------- */ - acr2212(); - /* ---------------------------------------- */ - acr2213(); - /* ---------------------------------------- */ - acr2214(); - /* ---------------------------------------- */ - acr2215(); - /* ---------------------------------------- */ - - printf("=== END OF ACR22 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR2201*/ -void acr2201() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2201 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block] - int (*A)[M]; - A = (int (*)[M])malloc(N * sizeof(int[M])); - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j] + C[i][j + 1] + C[i - 1][j] + C[i][j - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[1:1][1:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j] + A[i][j + 1] + A[i - 1][j] + A[i][j - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2202*/ -void acr2202() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2202 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:0]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2203*/ -void acr2203() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2203 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i - 1][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[1:0][0:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i - 1][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2204*/ -void acr2204() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2204 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[1:1][0:1] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i + 1][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:1]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i + 1][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi, nloopj) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2205*/ -void acr2205() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2205 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[0:1][1:1] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - C[i][j] = C[i][j - 1] + C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][1:0]) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - A[i][j] = A[i][j - 1] + A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2206*/ -void acr2206() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2206 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i + 2][j] + C[i][j + 2] + C[i + 2][j] + C[i - 2][j] + C[i][j - 2]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][2:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i + 2][j] + A[i][j + 2] + A[i + 2][j] + A[i - 2][j] + A[i][j - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2207*/ -void acr2207() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2207 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i + 2][j] + C[i][j + 2] + C[i][j - 2]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:2][2:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i + 2][j] + A[i][j + 2] + A[i][j - 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2208*/ -void acr2208() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2208 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[2:2][2:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i - 1][j] + C[i][j - 1] + C[i - 2][j] + C[i + 2][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][2:0]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i - 1][j] + A[i][j - 1] + A[i - 2][j] + A[i + 2][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2209*/ -void acr2209() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2209 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[2:2][0:2] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j + 2] + C[i + 1][j] + C[i + 2][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[2:2][0:2]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j + 2] + A[i + 1][j] + A[i + 2][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2210*/ -void acr2210() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2210 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[3:3][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i + 1][j] + C[i][j + 2] + C[i + 3][j] + C[i][j -3 ] + C[i - 2][j] + C[i][j - 1]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:3][3:3]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i + 1][j] + A[i][j + 2] + A[i + 3][j] + A[i][j - 3] + A[i - 2][j] + A[i][j - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2211*/ -void acr2211() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2211 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[3:3][0:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j] + C[i][j + 1]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:0][0:1]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j] + A[i][j + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2212*/ -void acr2212() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2212 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[0:3][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - C[i][j] = C[i][j] + C[i + 1][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[0:1][0:0]) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - A[i][j] = A[i][j] + A[i + 1][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2213*/ -void acr2213() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2213 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[3:3][3:0] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i][j - 3] + C[i + 3][j] + C[i - 3][j]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:3][3:0]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i][j - 3] + A[i + 3][j] + A[i - 3][j]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2214*/ -void acr2214() -{ - #define NL 1000 - #define N 16 - #define M 16 - char tname[] = "ACR2214 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[3:0][3:3] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - C[i][j] = C[i - 3][j] + C[i][j + 3]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[3:0][3:3]) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - A[i][j] = A[i - 3][j] + A[i][j + 3]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ---------------------------------------------ACR2215*/ -void acr2215() -{ - #define NL 1000 - #define N 59 - #define M 59 - char tname[] = "ACR2215 "; - int nloopi, nloopj; - #pragma dvm array distribute[block][block], shadow[11:11][11:11] - int A[N][M]; - int (*C)[M]; - C = (int (*)[M])malloc(N * sizeof(int[M])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - C[i][j] = NNL + i + j; - nloopi = NL; - nloopj = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - C[i][j] = C[i + 11][j] + C[i][j + 10] + C[i + 9][j] + C[i][j - 11] + C[i - 10][j] + C[i][j - 9]; - - #pragma dvm actual(nloopi, nloopj) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) across(A[10:11][11:10]) - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - A[i][j] = A[i + 11][j] + A[i][j + 10] + A[i + 9][j] + A[i][j - 11] + A[i - 10][j] + A[i][j - 9]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - if (A[i][j] != C[i][j]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - #undef NL - #undef N - #undef M -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr23.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr23.cdv deleted file mode 100644 index 9c87451..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr23.cdv +++ /dev/null @@ -1,675 +0,0 @@ -/* ACR23 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr2301(); -static void acr2302(); -static void acr2303(); -static void acr2304(); -static void acr2305(); -static void acr2306(); -static void acr2307(); -static void acr2308(); -static void acr2309(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j, ii; - -int main(int an, char **as) -{ - printf("===START OF ACR23========================\n"); - /* ---------------------------------------- */ - acr2301(); - /* ---------------------------------------- */ - acr2302(); - /* ---------------------------------------- */ - acr2303(); - /* ---------------------------------------- */ - acr2304(); - /* ---------------------------------------- */ - acr2305(); - /* ---------------------------------------- */ - acr2306(); - /* ---------------------------------------- */ - acr2307(); - /* ---------------------------------------- */ - acr2308(); - /* ---------------------------------------- */ - acr2309(); - /* ---------------------------------------- */ - - printf("=== END OF ACR23 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR2301*/ -void acr2301() -{ - #define NL 1000 - #define N 16 - #define M 8 - #define K 8 - char tname[] = "ACR2301 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[*][block][block] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - C[i][j][ii] = C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[1:1][1:1][1:1]) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - A[i][j][ii] = A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2302*/ -void acr2302() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR2302 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][*][block], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j - 2][ii] + C[i][j][ii - 1] + C[i - 1][j][ii] + C[i + 1][j][ii] + C[i][j - 1][ii] + C[i][j + 2][ii] + C[i][j][ii + 2]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[1:2][2:2][1:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j - 2][ii] + A[i][j][ii - 1] + A[i - 1][j][ii] + A[i + 1][j][ii] + A[i][j - 1][ii] + A[i][j + 2][ii] + A[i][j][ii + 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2303*/ -void acr2303() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR2303 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][*], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i][j - 2][ii] + C[i][j - 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:2][2:2][0:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i][j - 2][ii] + A[i][j - 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2304*/ -void acr2304() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR2304 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[*][block][block], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j][ii - 2] + C[i - 2][j][ii] + C[i][j - 2][ii] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1] + C[i + 1][j][ii]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[2:2][2:0][2:0]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j][ii - 2] + A[i - 2][j][ii] + A[i][j - 2][ii] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1] + A[i + 1][j][ii]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2305*/ -void acr2305() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR2305 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][*][block], shadow[0:2][2:2][0:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i][j - 2][ii] + C[i][j - 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:2][2:2][0:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i][j - 2][ii] + A[i][j - 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2306*/ -void acr2306() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR2306 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][*], shadow[3:3][3:3][3:3] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i][j][ii + 3] + C[i - 3][j][ii] + C[i][j - 3][ii] + C[i][j][ii - 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i - 2][j][ii] + C[i][j - 2][ii] + C[i][j][ii - 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[3:3][3:3][3:3]) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i][j][ii + 3] + A[i - 3][j][ii] + A[i][j - 3][ii] + A[i][j][ii - 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i - 2][j][ii] + A[i][j - 2][ii] + A[i][j][ii - 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2307*/ -void acr2307() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR2307 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[*][block][block], shadow[3:3][0:3][3:0] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i - 3][j][ii] + C[i][j][ii - 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i - 2][j][ii] + C[i][j][ii - 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i - 1][j][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[3:3][0:3][3:0]) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i - 3][j][ii] + A[i][j][ii - 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i - 2][j][ii] + A[i][j][ii - 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i - 1][j][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2308*/ -void acr2308() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR2308 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][*][block], shadow[0:3][0:3][0:3] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 0; i < N - 3; i++) - for (j = 0; j < M - 3; j++) - for (ii = 0; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i][j][ii + 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:3][0:3][0:3]) - for (ii = 0; ii < K - 3; ii++) - for (j = 0; j < M - 3; j++) - for (i = 0; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i][j][ii + 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 0; ii < K - 3; ii++) - for (j = 0; j < M - 3; j++) - for (i = 0; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR2309*/ -void acr2309() -{ - #define NL 1000 - #define N 59 - #define M 59 - #define K 59 - char tname[] = "ACR2309 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][*], shadow[11:11][11:11][11:11] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - for (ii = 11; ii < K - 11; ii++) - C[i][j][ii] = C[i + 11][j][ii] + C[i][j + 11][ii] + C[i][j][ii + 11] + C[i - 11][j][ii] + C[i][j - 11][ii] + C[i][j][ii - 11] + C[i + 10][j][ii] + C[i][j + 10][ii] + C[i][j][ii + 10] + C[i - 10][j][ii] + C[i][j - 10][ii] + C[i][j][ii - 10] + C[i - 9][j][ii] + C[i][j - 9][ii] + C[i][j][ii - 9] + C[i + 9][j][ii] + C[i][j + 9][ii] + C[i][j][ii + 9]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[11:11][11:11][11:11]) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - A[i][j][ii] = A[i + 11][j][ii] + A[i][j + 11][ii] + A[i][j][ii + 11] + A[i - 11][j][ii] + A[i][j - 11][ii] + A[i][j][ii - 11] + A[i + 10][j][ii] + A[i][j + 10][ii] + A[i][j][ii + 10] + A[i - 10][j][ii] + A[i][j - 10][ii] + A[i][j][ii - 10] + A[i - 9][j][ii] + A[i][j - 9][ii] + A[i][j][ii - 9] + A[i + 9][j][ii] + A[i][j + 9][ii] + A[i][j][ii + 9]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr33.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr33.cdv deleted file mode 100644 index 7e4aee2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr33.cdv +++ /dev/null @@ -1,675 +0,0 @@ -/* ACR33 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr3301(); -static void acr3302(); -static void acr3303(); -static void acr3304(); -static void acr3305(); -static void acr3306(); -static void acr3307(); -static void acr3308(); -static void acr3309(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j, ii; - -int main(int an, char **as) -{ - printf("===START OF ACR33========================\n"); - /* ---------------------------------------- */ - acr3301(); - /* ---------------------------------------- */ - acr3302(); - /* ---------------------------------------- */ - acr3303(); - /* ---------------------------------------- */ - acr3304(); - /* ---------------------------------------- */ - acr3305(); - /* ---------------------------------------- */ - acr3306(); - /* ---------------------------------------- */ - acr3307(); - /* ---------------------------------------- */ - acr3308(); - /* ---------------------------------------- */ - acr3309(); - /* ---------------------------------------- */ - - printf("=== END OF ACR33 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR3301*/ -void acr3301() -{ - #define NL 1000 - #define N 16 - #define M 8 - #define K 8 - char tname[] = "ACR3301 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - C[i][j][ii] = C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[1:1][1:1][1:1]) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - A[i][j][ii] = A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3302*/ -void acr3302() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR3302 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j - 2][ii] + C[i][j][ii - 1] + C[i - 1][j][ii] + C[i + 1][j][ii] + C[i][j - 1][ii] + C[i][j + 2][ii] + C[i][j][ii + 2]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[1:2][2:2][1:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j - 2][ii] + A[i][j][ii - 1] + A[i - 1][j][ii] + A[i + 1][j][ii] + A[i][j - 1][ii] + A[i][j + 2][ii] + A[i][j][ii + 2]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3303*/ -void acr3303() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR3303 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i][j - 2][ii] + C[i][j - 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:2][2:2][0:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i][j - 2][ii] + A[i][j - 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3304*/ -void acr3304() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR3304 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[2:2][2:2][2:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j][ii - 2] + C[i - 2][j][ii] + C[i][j - 2][ii] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1] + C[i + 1][j][ii]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[2:2][2:0][2:0]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j][ii - 2] + A[i - 2][j][ii] + A[i][j - 2][ii] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1] + A[i + 1][j][ii]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3305*/ -void acr3305() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - char tname[] = "ACR3305 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[0:2][2:2][0:2] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - C[i][j][ii] = C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i][j - 2][ii] + C[i][j - 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region in(C) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:2][2:2][0:2]) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii] = A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i][j - 2][ii] + A[i][j - 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3306*/ -void acr3306() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR3306 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[3:3][3:3][3:3] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i][j][ii + 3] + C[i - 3][j][ii] + C[i][j - 3][ii] + C[i][j][ii - 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i - 2][j][ii] + C[i][j - 2][ii] + C[i][j][ii - 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1] + C[i - 1][j][ii] + C[i][j - 1][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[3:3][3:3][3:3]) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i][j][ii + 3] + A[i - 3][j][ii] + A[i][j - 3][ii] + A[i][j][ii - 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i - 2][j][ii] + A[i][j - 2][ii] + A[i][j][ii - 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1] + A[i - 1][j][ii] + A[i][j - 1][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3307*/ -void acr3307() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR3307 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[3:3][0:3][3:0] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i - 3][j][ii] + C[i][j][ii - 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i - 2][j][ii] + C[i][j][ii - 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i - 1][j][ii] + C[i][j][ii - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[3:3][0:3][3:0]) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i - 3][j][ii] + A[i][j][ii - 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i - 2][j][ii] + A[i][j][ii - 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i - 1][j][ii] + A[i][j][ii - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3308*/ -void acr3308() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - char tname[] = "ACR3308 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[0:3][0:3][0:3] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 0; i < N - 3; i++) - for (j = 0; j < M - 3; j++) - for (ii = 0; ii < K - 3; ii++) - C[i][j][ii] = C[i + 3][j][ii] + C[i][j + 3][ii] + C[i][j][ii + 3] + C[i + 2][j][ii] + C[i][j + 2][ii] + C[i][j][ii + 2] + C[i + 1][j][ii] + C[i][j + 1][ii] + C[i][j][ii + 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[0:3][0:3][0:3]) - for (ii = 0; ii < K - 3; ii++) - for (j = 0; j < M - 3; j++) - for (i = 0; i < N - 3; i++) - A[i][j][ii] = A[i + 3][j][ii] + A[i][j + 3][ii] + A[i][j][ii + 3] + A[i + 2][j][ii] + A[i][j + 2][ii] + A[i][j][ii + 2] + A[i + 1][j][ii] + A[i][j + 1][ii] + A[i][j][ii + 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 0; ii < K - 3; ii++) - for (j = 0; j < M - 3; j++) - for (i = 0; i < N - 3; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ---------------------------------------------ACR3309*/ -void acr3309() -{ - #define NL 1000 - #define N 59 - #define M 59 - #define K 59 - char tname[] = "ACR3309 "; - int nloopi, nloopj, nloopii; - #pragma dvm array distribute[block][block][block], shadow[11:11][11:11][11:11] - int (*A)[M][K]; - A = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int (*C)[M][K]; - C = (int (*)[M][K])malloc(N * sizeof(int[M][K])); - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - C[i][j][ii] = NNL + i + j + ii; - nloopi = NL; - nloopj = NL; - nloopii = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - for (ii = 11; ii < K - 11; ii++) - C[i][j][ii] = C[i + 11][j][ii] + C[i][j + 11][ii] + C[i][j][ii + 11] + C[i - 11][j][ii] + C[i][j - 11][ii] + C[i][j][ii - 11] + C[i + 10][j][ii] + C[i][j + 10][ii] + C[i][j][ii + 10] + C[i - 10][j][ii] + C[i][j - 10][ii] + C[i][j][ii - 10] + C[i - 9][j][ii] + C[i][j - 9][ii] + C[i][j][ii - 9] + C[i + 9][j][ii] + C[i][j + 9][ii] + C[i][j][ii + 9]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii] = NL + i + j + ii; - - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) across(A[11:11][11:11][11:11]) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - A[i][j][ii] = A[i + 11][j][ii] + A[i][j + 11][ii] + A[i][j][ii + 11] + A[i - 11][j][ii] + A[i][j - 11][ii] + A[i][j][ii - 11] + A[i + 10][j][ii] + A[i][j + 10][ii] + A[i][j][ii + 10] + A[i - 10][j][ii] + A[i][j - 10][ii] + A[i][j][ii - 10] + A[i - 9][j][ii] + A[i][j - 9][ii] + A[i][j][ii - 9] + A[i + 9][j][ii] + A[i][j + 9][ii] + A[i][j][ii + 9]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([ii][j][i] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - if (A[i][j][ii] != C[i][j][ii]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr34.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr34.cdv deleted file mode 100644 index a58a683..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr34.cdv +++ /dev/null @@ -1,723 +0,0 @@ -/* ACR34 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr3401(); -static void acr3402(); -static void acr3403(); -static void acr3404(); -static void acr3405(); -static void acr3406(); -static void acr3407(); -static void acr3408(); -static void acr3409(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j, ii, jj; - -int main(int an, char **as) -{ - printf("===START OF ACR34========================\n"); - /* ---------------------------------------- */ - acr3401(); - /* ---------------------------------------- */ - acr3402(); - /* ---------------------------------------- */ - acr3403(); - /* ---------------------------------------- */ - acr3404(); - /* ---------------------------------------- */ - acr3405(); - /* ---------------------------------------- */ - acr3406(); - /* ---------------------------------------- */ - acr3407(); - /* ---------------------------------------- */ - acr3408(); - /* ---------------------------------------- */ - acr3409(); - /* ---------------------------------------- */ - - printf("=== END OF ACR34 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR3401*/ -void acr3401() -{ - #define NL 1000 - #define N 16 - #define M 8 - #define K 8 - #define L 8 - char tname[] = "ACR3401 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - printf("1234r5\n"); - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - C[i][j][ii][jj] = C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:1][1:1][1:1][1:1]) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - A[i][j][ii][jj] = A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3402*/ -void acr3402() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR3402 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 2] + C[i - 1][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 1] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:2][2:2][2:1][1:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 2] + A[i - 1][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 1] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3403*/ -void acr3403() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR3403 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:0][2:2][2:0][2:0]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3404*/ -void acr3404() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR3404 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i + 1][j][ii][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][2:0][0:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i + 1][j][ii][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3405*/ -void acr3405() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR3405 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[2:2][2:0][0:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][0:2][2:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3406*/ -void acr3406() -{ - #define NL 1000 - #define N 32 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR3406 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i - 3][j][ii][jj] + C[i][j - 3][ii][jj] + C[i][j][ii - 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[3:3][3:3][3:3][3:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i - 3][j][ii][jj] + A[i][j - 3][ii][jj] + A[i][j][ii - 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3407*/ -void acr3407() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR3407 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[0:3][3:3][0:3][0:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i][j - 3][ii][jj] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i][j - 2][ii][jj] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][3:3][0:3][0:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i][j - 3][ii][jj] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i][j - 2][ii][jj] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3408*/ -void acr3408() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR3408 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[0:3][3:3][0:3][3:0] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][0:3][0:3][3:0]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR3409*/ -void acr3409() -{ - #define NL 1000 - #define N 59 - #define M 59 - #define K 59 - #define L 59 - char tname[] = "ACR3409 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[*][block][block][block], shadow[11:11][11:11][11:11][11:11] - int (*A)[M][K][L]; - int (*C)[M][K][L]; - int NNL = NL; - A = malloc(N * M * K * L * sizeof(int)); - C = malloc(N * M * K * L * sizeof(int)); - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - for (ii = 11; ii < K - 11; ii++) - for (jj = 11; jj < L - 11; jj++) - C[i][j][ii][jj] = C[i + 11][j][ii][jj] + C[i][j + 11][ii][jj] + C[i][j][ii + 11][jj] + C[i][j][ii][jj + 11] + C[i - 11][j][ii][jj] + C[i][j - 11][ii][jj] + C[i][j][ii - 11][jj] + C[i][j][ii][jj - 11]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[11:11][11:11][11:11][11:11]) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - A[i][j][ii][jj] = A[i + 11][j][ii][jj] + A[i][j + 11][ii][jj] + A[i][j][ii + 11][jj] + A[i][j][ii][jj + 11] + A[i - 11][j][ii][jj] + A[i][j - 11][ii][jj] + A[i][j][ii - 11][jj] + A[i][j][ii][jj - 11]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr44.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr44.cdv deleted file mode 100644 index f6a6d92..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/acr44.cdv +++ /dev/null @@ -1,723 +0,0 @@ -/* ACR44 - - TESTING OF THE ACROSS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT - FLOW-DEP-LENGTH ON BOTH SIDES */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void acr4401(); -static void acr4402(); -static void acr4403(); -static void acr4404(); -static void acr4405(); -static void acr4406(); -static void acr4407(); -static void acr4408(); -static void acr4409(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int i, j, ii, jj; - -int main(int an, char **as) -{ - printf("===START OF ACR44========================\n"); - /* ---------------------------------------- */ - acr4401(); - /* ---------------------------------------- */ - acr4402(); - /* ---------------------------------------- */ - acr4403(); - /* ---------------------------------------- */ - acr4404(); - /* ---------------------------------------- */ - acr4405(); - /* ---------------------------------------- */ - acr4406(); - /* ---------------------------------------- */ - acr4407(); - /* ---------------------------------------- */ - acr4408(); - /* ---------------------------------------- */ - acr4409(); - /* ---------------------------------------- */ - - printf("=== END OF ACR44 =========================\n"); - return 0; -} -/* ---------------------------------------------ACR4401*/ -void acr4401() -{ - #define NL 1000 - #define N 16 - #define M 8 - #define K 8 - #define L 8 - char tname[] = "ACR4401 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - printf("1234r5\n"); - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - C[i][j][ii][jj] = C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:1][1:1][1:1][1:1]) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - A[i][j][ii][jj] = A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 1; jj < L - 1; jj++) - for (ii = 1; ii < K - 1; ii++) - for (j = 1; j < M - 1; j++) - for (i = 1; i < N - 1; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4402*/ -void acr4402() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR4402 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 2] + C[i - 1][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 1] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[1:2][2:2][2:1][1:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 2] + A[i - 1][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 1] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4403*/ -void acr4403() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR4403 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, nloopj, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:0][2:2][2:0][2:0]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4404*/ -void acr4404() -{ - #define NL 1000 - #define N 16 - #define M 10 - #define K 10 - #define L 10 - char tname[] = "ACR4404 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i + 1][j][ii][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][2:0][0:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i + 1][j][ii][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4405*/ -void acr4405() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR4405 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[2:2][2:0][0:2][2:2] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - C[i][j][ii][jj] = C[i + 2][j][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[2:2][2:0][0:2][2:2]) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - A[i][j][ii][jj] = A[i + 2][j][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 2; jj < L - 2; jj++) - for (ii = 2; ii < K - 2; ii++) - for (j = 2; j < M - 2; j++) - for (i = 2; i < N - 2; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4406*/ -void acr4406() -{ - #define NL 1000 - #define N 32 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR4406 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i - 3][j][ii][jj] + C[i][j - 3][ii][jj] + C[i][j][ii - 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i - 2][j][ii][jj] + C[i][j - 2][ii][jj] + C[i][j][ii - 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i - 1][j][ii][jj] + C[i][j - 1][ii][jj] + C[i][j][ii - 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[3:3][3:3][3:3][3:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i - 3][j][ii][jj] + A[i][j - 3][ii][jj] + A[i][j][ii - 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i - 2][j][ii][jj] + A[i][j - 2][ii][jj] + A[i][j][ii - 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i - 1][j][ii][jj] + A[i][j - 1][ii][jj] + A[i][j][ii - 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4407*/ -void acr4407() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR4407 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[0:3][3:3][0:3][0:3] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj + 3] + C[i][j - 3][ii][jj] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj + 2] + C[i][j - 2][ii][jj] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj + 1] + C[i][j - 1][ii][jj]; - - #pragma dvm actual(nloopi) - #pragma dvm region - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][3:3][0:3][0:3]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj + 3] + A[i][j - 3][ii][jj] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj + 2] + A[i][j - 2][ii][jj] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj + 1] + A[i][j - 1][ii][jj]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4408*/ -void acr4408() -{ - #define NL 1000 - #define N 16 - #define M 16 - #define K 16 - #define L 16 - char tname[] = "ACR4408 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[0:3][3:3][0:3][3:0] - int A[N][M][K][L]; - int C[N][M][K][L]; - int NNL = NL; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - C[i][j][ii][jj] = C[i + 3][j][ii][jj] + C[i][j + 3][ii][jj] + C[i][j][ii + 3][jj] + C[i][j][ii][jj - 3] + C[i + 2][j][ii][jj] + C[i][j + 2][ii][jj] + C[i][j][ii + 2][jj] + C[i][j][ii][jj - 2] + C[i + 1][j][ii][jj] + C[i][j + 1][ii][jj] + C[i][j][ii + 1][jj] + C[i][j][ii][jj - 1]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region inout(C), out(A) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[0:3][0:3][0:3][3:0]) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - A[i][j][ii][jj] = A[i + 3][j][ii][jj] + A[i][j + 3][ii][jj] + A[i][j][ii + 3][jj] + A[i][j][ii][jj - 3] + A[i + 2][j][ii][jj] + A[i][j + 2][ii][jj] + A[i][j][ii + 2][jj] + A[i][j][ii][jj - 2] + A[i + 1][j][ii][jj] + A[i][j + 1][ii][jj] + A[i][j][ii + 1][jj] + A[i][j][ii][jj - 1]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 3; jj < L - 3; jj++) - for (ii = 3; ii < K - 3; ii++) - for (j = 3; j < M - 3; j++) - for (i = 3; i < N - 3; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------ACR4409*/ -void acr4409() -{ - #define NL 1000 - #define N 59 - #define M 59 - #define K 59 - #define L 59 - char tname[] = "ACR4409 "; - int nloopi, nloopj, nloopii, nloopjj; - #pragma dvm array distribute[block][block][block][block], shadow[11:11][11:11][11:11][11:11] - int (*A)[M][K][L]; - int (*C)[M][K][L]; - int NNL = NL; - A = malloc(N * M * K * L * sizeof(int)); - C = malloc(N * M * K * L * sizeof(int)); - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NNL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - for (i = 11; i < N - 11; i++) - for (j = 11; j < M - 11; j++) - for (ii = 11; ii < K - 11; ii++) - for (jj = 11; jj < L - 11; jj++) - C[i][j][ii][jj] = C[i + 11][j][ii][jj] + C[i][j + 11][ii][jj] + C[i][j][ii + 11][jj] + C[i][j][ii][jj + 11] + C[i - 11][j][ii][jj] + C[i][j - 11][ii][jj] + C[i][j][ii - 11][jj] + C[i][j][ii][jj - 11]; - - #pragma dvm actual(nloopi, C) - #pragma dvm region in(C) - { - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) - for (jj = 0; jj < L; jj++) - for (ii = 0; ii < K; ii++) - for (j = 0; j < M; j++) - for (i = 0; i < N; i++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) across(A[11:11][11:11][11:11][11:11]) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - A[i][j][ii][jj] = A[i + 11][j][ii][jj] + A[i][j + 11][ii][jj] + A[i][j][ii + 11][jj] + A[i][j][ii][jj + 11] + A[i - 11][j][ii][jj] + A[i][j - 11][ii][jj] + A[i][j][ii - 11][jj] + A[i][j][ii][jj - 11]; - } - #pragma dvm get_actual(A) - #pragma dvm parallel([jj][ii][j][i] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (jj = 11; jj < L - 11; jj++) - for (ii = 11; ii < K - 11; ii++) - for (j = 11; j < M - 11; j++) - for (i = 11; i < N - 11; i++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - nloopi = Min(nloopi, i); - nloopj = Min(nloopj, j); - nloopii = Min(nloopii, ii); - nloopjj = Min(nloopjj, jj); - } - - #pragma dvm get_actual(nloopi) - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); - - free(C); - free(A); - #undef NL - #undef N - #undef M - #undef K - #undef L -} -/* ----------------------------------------------- */ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/settings deleted file mode 100644 index fd6919c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ACROSS/settings +++ /dev/null @@ -1 +0,0 @@ -ALLOW_MULTIDEV=0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align11.cdv deleted file mode 100644 index c87bdec..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align11.cdv +++ /dev/null @@ -1,415 +0,0 @@ -/* ALIGN11 -TESTING align CLAUSE */ - -#include -#include -#include - -static void align111(); -static void align1111(); -static void align1112(); -static void align112(); -static void align113(); -static void align114(); -static void align115(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN11 ======================\n"); - /* ALIGN arrB[i] WITH arrA[i] normal*/ - align111(); - /* ALIGN arrB[i] WITH arrA[i] small array*/ - align1111(); - /* ALIGN arrB[i] WITH arrA[2 * i+3] small array*/ - align1112(); - /* ALIGN arrB[i] WITH arrA[i + 4] shift along i*/ - align112(); - /* ALIGN arrB[i] WITH arrA[-i + 7] reverse on i*/ -// align113(); - /* ALIGN arrB[i] WITH arrA[2 * i + 8] stretching along i*/ - align114(); - /* ALIGN arrB[] WITH arrA[]*/ - align115(); - - printf("=== END OF ALIGN11 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN111*/ -/* ALIGN arrB[i] WITH arrA[i] normal*/ -void align111() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 8 - #define BN1 8 - int k1i = 1; - int li = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align111 "; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN1111*/ -/* ALIGN arrB[i] WITH arrA[i] small array*/ -void align1111() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 5 - #define BN1 2 - int k1i = 1; - int li = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align1111"; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN1112*/ -/* ALIGN arrB[i] WITH arrA[2 * i + 1] small array*/ -void align1112() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 5 - #define BN1 2 - int k1i = 2; - int li = 1; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align1112"; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN112*/ -/* ALIGN arrB[i] WITH arrA[i + 4] shift along i*/ -void align112() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 8 - #define BN1 4 - int k1i = 1; - int li = 4; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align112 "; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN113*/ -/* ALIGN arrB[i] WITH arrA[-i + 7] reverse on i*/ -void align113() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 8 - #define BN1 8 - int k1i = -1; - int li = 7; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align113 "; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN114*/ -/* ALIGN arrB[i] WITH arrA[2 * i + 8] stretching along i*/ -void align114() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 24 - #define BN1 8 - int k1i = 2; - int li = 8; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - char tname[] = "align114 "; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1), inout(erri) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------ALIGN115*/ -/* ALIGN arrB[] WITH arrA[]*/ -void align115() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - #define AN1 24 - #define BN1 8 - int k1i = 0; - int li = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([] with A1[]) - int B1[BN1]; - char tname[] = "align115 "; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), private(j) - for (i = 0; i < AN1; i++) - for (j = 0; j < BN1; j++) - if (B1[j] != (j)) - if (erri > j) erri = j; - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef BN1 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align12.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align12.cdv deleted file mode 100644 index a3060e4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align12.cdv +++ /dev/null @@ -1,228 +0,0 @@ -/* ALIGN12 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align121(); -static void align122(); -static void align123(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, ia, ja, ib, jb; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN12 ======================\n"); -/* ALIGN arrB[][i] WITH arrA[i]*/ - align121(); -/* ALIGN arrB[i][] WITH arrA[2 * i + 1]*/ - align122(); -/* ALIGN arrB[][] WITH arrA[]*/ - align123(); - - printf("=== END OF ALIGN12 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN121*/ -/* ALIGN arrB[][i] WITH arrA[i]*/ -void align121() -{ -/* parameters for ALIGN arrB[][i] WITH arrA[k1i * i + li]*/ - #define AN1 8 - #define AN2 0 - #define BN1 4 - #define BN2 4 - int k1i = 1; - int li = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([][i] with A1[k1i * i + li]) - int B2[BN1][BN2]; - char tname[] = "align121"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A1, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib, jb, j) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - for (j = 0; j < BN1; j++) - { - if (((i - li) ==(((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN2)) - { - ib = j; - jb = (i - li) / k1i; - B2[ib][jb] = ib * NL + jb; - } - } - }; - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j; - s = s + B2[i][j]; - if (B2[i][j] != i * NL + j) - if (erri > val) erri = val; - } - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL + j; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN122*/ -/* ALIGN arrB[i][] WITH arrA[2 * i + 1]*/ -void align122() -{ -/* parameters for ALIGN arrB[i][] WITH arrA[k1i * i + li]*/ - #define AN1 16 - #define AN2 0 - #define BN1 4 - #define BN2 4 - int k1i = 2; - int li = 1; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i][] with A1[k1i * i + li]) - int B2[BN1][BN2]; - char tname[] = "align122"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A1, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib, jb, j) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - for (j = 0; j < BN1; j++) - { - if (((i - li) ==(((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN2)) - { - jb = j; - ib = (i - li) / k1i; - B2[ib][jb] = ib * NL + jb; - } - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j; - s = s + B2[i][j]; - if (B2[i][j] != (i * NL + j)) - if (erri > val) erri = val; - } - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL + j; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN123*/ -/* ALIGN arrB[][] WITH arrA[]*/ -void align123() -{ -/* parameters for ALIGN arrB[][] WITH arrA[]*/ - #define AN1 16 - #define AN2 0 - #define BN1 4 - #define BN2 4 - int k1i = 0; - int li = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([][] with A1[]) - int B2[BN1][BN2]; - char tname[] = "align123"; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A1, B2) - { - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i * NL + j; - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), private(ib, jb) - for (i = 0; i < AN1; i++) - for (ib = 0; ib < BN1; ib++) - for (jb = 0; jb < BN2; jb++) - { - int val = i * NL / 10 + j; - if (B2[ib][jb] != ib * NL + jb) - if (erri > val) erri = val; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align214.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align214.cdv deleted file mode 100644 index 9b64ce6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align214.cdv +++ /dev/null @@ -1,727 +0,0 @@ -/* ALIGN214 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align211(); -static void align212(); -static void align213(); -static void align214(); - -static void align241(); -static void align2421(); -static void align2422(); -static void align243(); -static void align244(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, n, m, k, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN214 ======================\n"); - -/* ALIGN arrB[i] WITH arrA[1][i] vector arrB on section - (the first line of arrA)*/ - align211(); -/* ALIGN arrB[i] WITH arrA[2 * i + 2][2] vector arrB on section - (the second column of arrA) with stretching and shift*/ - align212(); -/* ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA*/ - align213(); -/* ALIGN arrB[i] WITH arrA[2 * i + 2][] vector arrB on replication on - every column of arrA with stretching and shift*/ - align214(); - -/* ALIGN arrB[i][j][][] WITH arrA[i][j] - matrix compression*/ - align241(); -/* ALIGN arrB[][i][][j] WITH arrA[j+4][2*i] matrix compression*/ - align2421(); -/* ALIGN arrB[][i][][j] WITH arrA[j+1][2*i] small array*/ - align2422(); -/* ALIGN arrB[][][i][] WITH arrA[1][i] matrix compression - and replication*/ - align243(); -/* ALIGN arrB[][][][i] WITH arrA[i][] matrix compression - and replication*/ - align244(); - - printf("=== END OF ALIGN214 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN211 */ -/* ALIGN arrB[i] WITH arrA[1][i] vector arrB on section - (the first line of arrA)*/ -void align211() -{ -/* parameters for ALIGN arrB[i] WITH arrA[1][i]*/ - #define AN1 8 - #define AN2 8 - #define BN1 4 - int k1i = 0, k2i = 0, li = 1; - int k1j = 1, k2j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i] with A2[1][i]) - int B1[BN1]; - char tname[] = "align211"; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A2, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if ((i == 1) && (j < BN1)) - { - ib = j; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = 1; - ja = i; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 -} -/* ---------------------------------------------ALIGN212*/ -/* ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section - (the second column of arrA) with stretching and shift*/ -void align212() -{ - /* parameters for ALIGN arrB[i] WITH arrA[2*i+2][2]*/ - #define AN1 14 - #define AN2 3 - #define BN1 6 - int k1i = 2, k2i = 0, li = 2; - int k1j = 0, k2j = 0, lj = 2; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i] with A2[k1i * i + li][lj]) - int B1[BN1]; - char tname[] = "align212"; - - erri = ER; - #pragma dvm actual(erri) - #pragma dvm region local(A2, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (j == lj){ - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - ja = lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 -} -/* ---------------------------------------------ALIGN213*/ -/* ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA*/ -void align213() -{ -/* parameters for ALIGN arrB[i] WITH arrA[][k1j * i + lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 6 - int k1i = 0, k2i = 0, li = 0; - int k1j = 1, k2j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i] with A2[][k1j * i + lj]) - int B1[BN1]; - char tname[] = "align213"; - - erri = ER; - s = 0; - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), private(ib) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((j - lj) == (((j - lj) / k1j) * k1j)) && - (((j - lj) / k1j) >= 0) && - (((j - lj) / k1j) < BN1)) - { - ib = (j - lj) / k1j; - if (B1[ib] != ib) - if (erri > ib) erri = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - { - s = s + B1[i]; - if (B1[i] != i) - if (erri > i) erri = i; - } - } - #pragma dvm get_actual(erri, s) - - cs = (0 + BN1-1) * BN1 / 2; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - { - ansno(tname); -// printf("%d, %d, %d\n", erri, s, cs); - } - #undef AN1 - #undef AN2 - #undef BN1 -} -/* ---------------------------------------------ALIGN214*/ -/* ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on - every column of arrA with stretching and shift*/ -void align214() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li][]*/ - #define AN1 28 - #define AN2 8 - #define BN1 5 - int k1i = 2, k2i = 0, li = 2; - int k1j = 0, k2j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i] with A2[k1i * i + li][]) - int B1[BN1]; - char tname[] = "align214"; - - erri = ER; - s = 0; - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), private(ib) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - if (B1[ib] != ib) - if (erri > i) erri = i; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(sum(s)) - for (i = 0; i < BN1; i++) - s = s + B1[i]; - } - #pragma dvm get_actual(erri, s) - - cs = (0 + BN1-1) * BN1 / 2; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 -} -/* ---------------------------------------------ALIGN241 */ -/* ALIGN arrB[i][j][][] WITH arrA[i][j] - matrix compression*/ -void align241() -{ -/* parameters for ALIGN arrB[i][j][][] WITH arrA[k1i*i+li][k2j*j+lj]*/ - #define AN1 5 - #define AN2 5 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j][][] with A2[k1i*i+li][k2j*j+lj]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align241 "; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb, n, m, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL / 10 + j; - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = n; - mb = m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN2421*/ -/* ALIGN arrB[][i][][j] WITH arrA[j+4][2*i] matrix compression*/ -void align2421() -{ -/* parameters for ALIGN arrB[][i][][j] WITH arrA[k2i*j+li][k1j*i+lj]*/ - #define AN1 12 - #define AN2 9 - #define BN1 4 - #define BN2 4 - #define BN3 4 - #define BN4 4 - int k1i = 0, k2i = 1, k3i = 0, k4i = 0, li = 4; - int k1j = 2, k2j = 0, k3j = 0, k4j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([][i][][j] with A2[k2i*j+li][k1j*i+lj]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align2421"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb, n, m, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL / 10 + j; - for (n = 0; n < BN1; n++) - for (m = 0; m < BN3; m++) - { - if (((i - li) == (((i - li) / k2i) * k2i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((i - li) / k2i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((i - li) / k2i) < BN4) && - (((j - lj) / k1j) < BN2)) - { - ib = n; - jb = (j - lj) / k1j; - nb = m; - mb = (i - li) / k2i; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN2422*/ -/* ALIGN arrB[][i][][j] WITH arrA[j+1][2*i] small array*/ -void align2422() -{ -/* parameters for ALIGN arrB[][i][][j] WITH arrA[k2i*j+li][k1j*i+lj]*/ - #define AN1 3 - #define AN2 4 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 0, k2i = 1, k3i = 0, k4i = 0, li = 1; - int k1j = 2, k2j = 0, k3j = 0, k4j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([][i][][j] with A2[k2i*j+li][k1j*i+lj]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align2422"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb, n, m, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL / 10 + j; - for (n = 0; n < BN1; n++) - for (m = 0; m < BN3; m++) - { - if (((i - li) == (((i - li) / k2i) * k2i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((i - li) / k2i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((i - li) / k2i) < BN4) && - (((j - lj) / k1j) < BN2)) - { - ib = n; - jb = (j - lj) / k1j; - nb = m; - mb = (i - li) / k2i; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN243*/ -/* ALIGN arrB[][][i][] WITH arrA[1][i] matrix compression - and replication*/ -void align243() -{ -/* parameters for ALIGN arrB[][][i][] WITH arrA[li][k1j*i+lj]*/ - #define AN1 3 - #define AN2 4 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 0, k2i = 0, k3i = 0, k4i = 0, li = 1; - int k1j = 1, k2j = 0, k3j = 0, k4j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([][][i][] with A2[li][k1j*i+lj]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align243 "; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb, k, n, m, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL / 10 + j; - if (i == li) - for (n = 0; n < BN1; n++) - for (m = 0; m < BN2; m++) - for (k = 0; k < BN4; k++) - { - if (((j - lj) == (((j - lj) / k1j) * k1j)) && - (((j - lj) / k1j) >= 0) && - (((j - lj) / k1j) < BN3)) - { - ib = n; - jb = m; - nb = ((j - lj) / k1j); - mb = k; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN244*/ -/* ALIGN arrB[][][][i] WITH arrA[i][] matrix compression - and replication*/ -void align244() -{ -/* parameters for ALIGN arrB[][][i][] WITH arrA[k1i*i+li][]*/ - #define AN1 12 - #define AN2 9 - #define BN1 4 - #define BN2 4 - #define BN3 4 - #define BN4 4 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 0, k3j = 0, k4j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([][][i][] with A2[k1i * i + li][]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align244 "; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A2, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), private(ib, jb, m, n, k, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL / 10 + j; - for (n = 0; n < BN1; n++) - for (m = 0; m < BN2; m++) - for (k = 0; k < BN4; k++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN3)) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - ib = n; - jb = m; - nb = ((i - li) / k1i); - mb = k; - if (B4[ib][jb][nb][mb] != ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb) - if (erri > val) erri = val; - } - } - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align22.cdv deleted file mode 100644 index d03cef9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align22.cdv +++ /dev/null @@ -1,600 +0,0 @@ -/* ALIGN22 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align221(); -static void align222(); -static void align223(); -static void align224(); -static void align225(); -static void align2251(); -static void align226(); -static void align227(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, ia, ja, ib, jb; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN22 ======================\n"); - /* ALIGN arrB[i][j] WITH arrA[i][j] normal*/ - align221(); - /* ALIGN arrB[i][j] WITH arrA[i][2 * j] stretching along j*/ - align222(); - /* ALIGN arrB[i][j] WITH arrA[i + 4][j] shift along i*/ - align223(); - /* ALIGN arrB[i][j] WITH arrA[-i + 9][j] reverse on i*/ -// align224(); - /* ALIGN arrB[i][j] WITH arrA[i + 4][j + 4] shift along i and j*/ - align225(); - /* */ - align2251(); - /* ALIGN arrB[i][j] WITH arrA[j][i] rotation*/ - align226(); - /* ALIGN arrB[i][j] WITH arrA[j + 1][i] rotation and shift*/ - align227(); - - printf("=== END OF ALIGN22 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN221*/ -/* ALIGN arrB[i][j] WITH arrA[i][j] normal*/ -void align221() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 8 - #define BN2 8 - int k1i = 1, k2i = 0, li = 0; - int k1j = 0, k2j = 1, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align221 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN222*/ -/* ALIGN arrB[i][j] WITH arrA[i][2*j] stretching along j*/ -void align222() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 8 - #define BN2 4 - int k1i = 1, k2i = 0, li = 0; - int k1j = 0, k2j = 2, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align222 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN223*/ -/* ALIGN arrB[i][j] WITH arrA[i+4][j] shift along i*/ -void align223() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 4 - #define BN2 8 - int k1i = 1, k2i = 0, li = 4; - int k1j = 0, k2j = 1, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align223 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN224*/ -/* ALIGN arrB[i][j] WITH arrA[-i+9][j] reverse on i*/ -void align224() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 10 - #define AN2 8 - #define BN1 8 - #define BN2 8 - int k1i = -1, k2i = 0, li = 9; - int k1j = 0, k2j = 1, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align224 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN225*/ -/* ALIGN arrB[i][j] WITH arrA[i+4][j+4]shift along i and j*/ -void align225() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 4 - #define BN2 4 - int k1i = 1, k2i = 0, li = 4; - int k1j = 0, k2j = 1, lj = 4; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align225 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN2251*/ -/* ALIGN arrB[i][j] WITH arrA[i+1][2*j] small arrays*/ -void align2251() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj]*/ - #define AN1 3 - #define AN2 5 - #define BN1 2 - #define BN2 3 - int k1i = 1, k2i = 0, li = 1; - int k1j = 0, k2j = 2, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - char tname[] = "align2251"; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN226*/ -/* ALIGN arrB[i][j] WITH arrA[j][i] rotation*/ -void align226() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][k1j * i + lj]*/ - #define AN1 4 - #define AN2 4 - #define BN1 4 - #define BN2 4 - int k1i = 0, k2i = 1, li = 0; - int k1j = 1, k2j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k2i * j + li][k1j * i + lj]) - int B2[BN1][BN2]; - char tname[] = "align226 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k2i) * k2i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((i - li) / k2i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((i - li) / k2i) < BN2) && - (((j - lj) / k1j) < BN1)) - { - jb = (i - li) / k2i; - ib = (j - lj) / k1j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k2i * j + li; - ja = k1j * i + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN227*/ -/* ALIGN arrB[i][j] WITH arrA[j+1][i] rotation and shift*/ -void align227() -{ -/* parameters for ALIGN arrB[i][j] WITH arrA[k2i*j+li][k1j*i+lj]*/ - #define AN1 8 - #define AN2 8 - #define BN1 4 - #define BN2 4 - int k1i = 0, k2i = 1, li = 1; - int k1j = 1, k2j = 0, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k2i * j + li][k1j * i + lj]) - int B2[BN1][BN2]; - char tname[] = "align227 "; - - erri = ER; - - #pragma dvm actual(erri) - #pragma dvm region local(A2, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k2i) * k2i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((i - li) / k2i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((i - li) / k2i) < BN2) && - (((j - lj) / k1j) < BN1)) - { - jb = (i - li) / k2i; - ib = (j - lj) / k1j; - B2[ib][jb] = ib * NL + jb; - } - } - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - ia = k2i * j + li; - ja = k1j * i + lj; - if (A2[ia][ja] != (ia * NL + ja)) - if (erri > i * NL / 10 + j) erri = i * NL / 10 + j; - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align32.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align32.cdv deleted file mode 100644 index 861f4fd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align32.cdv +++ /dev/null @@ -1,600 +0,0 @@ -/* ALIGN32 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align321(); -static void align322(); -static void align323(); -static void align324(); -static void align325(); -static void align326(); -static void align327(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, n, m, k, l, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN32 ======================\n"); -/* ALIGN arrB[i][j] WITH arrA[i][j][1] matrix on section*/ - align321(); -/* ALIGN arrB[i][j] WITH arrA[j][i][5] matrix on section with rotation*/ - align322(); -/* ALIGN arrB[i][j] WITH arrA[j][1][2*i] matrix on section with - rotation and stretching*/ - align323(); -/* ALIGN arrB[i][j] WITH arrA[][i][j] matrix replication*/ - align324(); -/* ALIGN arrB[i][j] WITH arrA[i+4][][j] matrix replication with shift*/ - align325(); -/* ALIGN arrB[i][j] WITH arrA[-i+8][j][] matrix replication with reverse*/ -// align326(); -/* ALIGN arrB[][] WITH arrA[][][]*/ - align327(); - printf("=== END OF ALIGN32 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN321*/ -/* ALIGN arrB[i][j] WITH arrA[i][j][1] matrix on section*/ -void align321() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[k1i*i+li][k2j*j+lj][ln]*/ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define BN1 4 - #define BN2 4 - int k1i = 1, k2i = 0, k3i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, ln = 1; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[k1i*i+li][k2j*j+lj][ln]) - int B2[BN1][BN2]; - char tname[] = "align321"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - if ((n == ln ) && - ((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL / 10 + jb * NL / 100; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - ia = k1i * i + li; - ja = k2j * j + lj; - na = ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN322*/ -/* ALIGN arrB[i][j] WITH arrA[j][i][5] matrix on section with rotation*/ -void align322() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[k2i*j+li][k1j*i+lj][ln]*/ - #define AN1 5 - #define AN2 5 - #define AN3 6 - #define BN1 4 - #define BN2 4 - int k1i = 0, k2i = 1, k3i = 0, li = 0; - int k1j = 1, k2j = 0, k3j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, ln = 5; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[k2i*j+li][k1j*i+lj][ln]) - int B2[BN1][BN2]; - char tname[] = "align322"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - if ((n == ln ) && - ((i - li) == (((i - li) / k2i) * k2i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((i - li) / k2i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((i - li) / k2i) < BN2) && - (((j - lj) / k1j) < BN1)) - { - ib = (j - lj) / k1j; - jb = (i - li) / k2i; - B2[ib][jb] = ib * NL / 10 + jb * NL / 100; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - ia = k2i * j + li; - ja = k1j * i + lj; - na = ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN323*/ -/* ALIGN arrB[i][j] WITH arrA[j][1][2*i] matrix on section with - rotation and stretching*/ -void align323() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[k2i*j+li][lj][k1n*i+ln]*/ - #define AN1 5 - #define AN2 2 - #define AN3 7 - #define BN1 4 - #define BN2 4 - int k1i = 0, k2i = 1, k3i = 0, li = 0; - int k1j = 0, k2j = 0, k3j = 0, lj = 1; - int k1n = 2, k2n = 0, k3n = 0, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[k2i*j+li][lj][k1n*i+ln]) - int B2[BN1][BN2]; - char tname[] = "align323"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - if ((j == lj) && - ((i - li) == (((i - li) / k2i) * k2i)) && - ((n - ln) == (((n - ln) / k1n) * k1n)) && - (((i - li) / k2i) >= 0) && - (((n - ln) / k1n) >= 0) && - (((i - li) / k2i) < BN2) && - (((n - ln) / k1n) < BN1)) - { - ib = (n - ln) / k1n; - jb = (i - li) / k2i; - B2[ib][jb] = ib * NL / 10 + jb * NL / 100; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - ia = k2i * j + li; - ja = lj; - na = k1n * i + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN324*/ -/* ALIGN arrB[i][j] WITH arrA[][i][j] matrix replication*/ -void align324() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[][k1j*i+lj][k2n*j+ln]*/ - #define AN1 4 - #define AN2 6 - #define AN3 6 - #define BN1 4 - #define BN2 4 - int k1i = 0, k2i = 0, k3i = 0, li = 0; - int k1j = 1, k2j = 0, k3j = 0, lj = 0; - int k1n = 0, k2n = 1, k3n = 0, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[][k1j*i+lj][k2n*j+ln]) - int B2[BN1][BN2]; - char tname[] = "align324"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i * NL / 10 + j * NL / 100; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - if (((n - ln) == (((n - ln) / k2n) * k2n)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - (((n - ln) / k2n) >= 0) && - (((j - lj) / k1j) >= 0) && - (((n - ln) / k2n) < BN2) && - (((j - lj) / k1j) < BN1)) - { - int val = i * NL / 10 + j * NL / 100; - ib = (j - lj) / k1j; - jb = (n - ln) / k2n; - if (B2[ib][jb] != ib * NL / 10 + jb * NL / 100) - if (erri > val) erri = val; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN325*/ -/* ALIGN arrB[i][j] WITH arrA[i+4][][j] matrix replication with shift*/ -void align325() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[k1i*i+li][][k2n * j + ln]*/ - #define AN1 12 - #define AN2 6 - #define AN3 6 - #define BN1 4 - #define BN2 4 - int k1i = 1, k2i = 0, k3i = 0, li = 4; - int k1j = 1, k2j = 0, k3j = 0, lj = 0; - int k1n = 0, k2n = 1, k3n = 0, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[k1i*i+li][][k2n*j+ln]) - int B2[BN1][BN2]; - char tname[] = "align325"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i * NL / 10 + j * NL / 100; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i*NL/10 + j*NL/100 + n; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((n - ln) == (((n - ln) / k2n) * k2n)) && - (((i - li) / k1i) >= 0) && - (((n - ln) / k2n) >= 0) && - (((i - li) / k1i) < BN1) && - (((n - ln) / k2n) < BN2)) - { - int val = i * NL / 10 + j * NL / 100; - ib = (i - li) / k1i; - jb = (n - ln) / k2n; - if (B2[ib][jb] != ib * NL / 10 + jb * NL / 100) - if (erri > val) erri = val; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN326*/ -/* ALIGN arrB[i][j] WITH arrA[-i+8][j][] matrix replication with reverse*/ -void align326() -{ -/* parameters for ALIGN arrB[i][j] - WITH arrA[k1i*i+li][k2j*j+lj][]*/ - #define AN1 9 - #define AN2 5 - #define AN3 5 - #define BN1 7 - #define BN2 4 - int k1i = -1, k2i = 0, k3i = 0, li = 8; - int k1j = 0, k2j = 1, k3j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j] with A3[k1i*i+li][k2j*j+lj][]) - int B2[BN1][BN2]; - char tname[] = "align326"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i * NL / 10 + j * NL / 100; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j -lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2n) < BN2)) - { - int val = i * NL / 10 + j * NL / 100; - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - if (B2[ib][jb] != ib * NL / 10 + jb * NL / 100) - if (erri > val) erri = val; - } - } - - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erri), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - int val = i * NL / 10 + j * NL / 100; - s = s + B2[i][j]; - if (B2[i][j] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - cs = cs + i * NL / 10 + j * NL / 100; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------ALIGN327*/ -/* ALIGN arrB[][] WITH arrA[][][]*/ -void align327() -{ -/* parameters for ALIGN arrB[][] - WITH arrA[][][]*/ - #define AN1 7 - #define AN2 5 - #define AN3 5 - #define BN1 7 - #define BN2 4 - int k1i = 0, k2i = 0, k3i = 0, li = 0; - int k1j = 0, k2j = 0, k3j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, ln = 1; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([][] with A3[][][]) - int B2[BN1][BN2]; - char tname[] = "align327"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i * NL / 10 + j * NL / 100; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - for (ib = 0; ib < BN1; ib++) - for (jb = 0; jb < BN2; jb++) - { - int val = i * NL / 10 + j * NL / 100; - if (B2[ib][jb] != ib * NL / 10 + jb * NL / 100) - if (erri > val) erri = val; - } - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align33.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align33.cdv deleted file mode 100644 index 82df028..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align33.cdv +++ /dev/null @@ -1,197 +0,0 @@ -/* ALIGN33 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align331(); -static void align332(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, n, m, k, l, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN33 ======================\n"); - /* ALIGN arrB[i][j][k] WITH arrA[i][j][k] normal*/ - align331(); - /* ALIGN arrB[][i][] WITH arrA[][lj][i]*/ - align332(); - printf("=== END OF ALIGN33 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN331*/ -/* ALIGN arrB[i][j][n] WITH arrA[i][j][n] normal*/ -void align331() -{ -/* parameters for ALIGN arrB[i][j][n] - WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln]*/ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define BN1 2 - #define BN2 2 - #define BN3 2 - int k1i = 1, k2i = 0, k3i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 1, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B3[BN1][BN2][BN3]; - char tname[] = "align331"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib, jb, nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) /k2j) < BN2) && - (((n - ln) / k3n) < BN3)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - B3[ib][jb][nb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000; - } - } - - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000; - s = s + B3[i][j][n]; - if (B3[i][j][n] != val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} -/* ---------------------------------------------ALIGN332*/ -/* ALIGN arrB[][i][] WITH arrA[][lj][i]*/ -void align332() -{ -/* parameters for ALIGN arrB[][i][] - WITH arrA[][lj][k3n*n+ln]*/ - #define AN1 4 - #define AN2 4 - #define AN3 4 - #define BN1 2 - #define BN2 2 - #define BN3 2 - int k1i = 0, k2i = 0, k3i = 0, li = 0; - int k1j = 0, k2j = 0, k3j = 0, lj = 3; - int k1n = 1, k2n = 0, k3n = 0, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([][i][] with A3[][lj][k1n*i+ln]) - int B3[BN1][BN2][BN3]; - char tname[] = "align332"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib, jb, nb, k, l), reduction(min(erri)) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - if (j == lj) - { - for (k = 0; k < BN1; k++) - for (l = 0; l < BN3; l++) - { - if (((n - ln) == (((n - ln) / k1n) * k1n)) && - (((n - ln) / k1n) >= 0) && - (((n - ln) / k1n) < BN2)) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000; - ib = k; - jb = (n - ln) / k1n; - nb = l; - if (B3[ib][jb][nb] != ib * NL / 10 + jb * NL / 100 + nb * NL / 1000) - if (erri > val) erri = val; - } - } - } - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align44.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align44.cdv deleted file mode 100644 index c6a497e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/align44.cdv +++ /dev/null @@ -1,855 +0,0 @@ -/* ALIGN44 -TESTING align CLAUSE*/ - -#include -#include -#include - -static void align441(); -static void align442(); -static void align443(); -static void align444(); -static void align445(); -static void align446(); -static void align447(); -static void align448(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int s, cs, erri, i, j, n, m, k, l, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue; - -int main(int an, char **as) -{ - printf("=== START OF ALIGN44 ======================\n"); - /* ALIGN arrB[i][j][k][l] WITH arrA[i][j][k][l] normal*/ - align441(); - /* ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] rotation*/ - align442(); - /* ALIGN arrB[i][j][k][l] WITH arrA[i][2* j][k][3*l] stretching*/ - align443(); - /* ALIGN arrB[i][j][k][l] WITH arrA[i+2][j][k][l+3] shift*/ - align444(); - /* ALIGN arrB[i][j][k][l] WITH arrA[i][j][-k+8][l+8] reverse*/ -// align445(); - /* ALIGN arrB[i][j][][l] WITH arrA[i][j][2][l] - compression and replication*/ - align446(); - /* ALIGN arrB[][j][k][i] WITH arrA[i][j][][k] - compression and replication*/ - align447(); - /* ALIGN arrB[][i][j][] WITH arrA[i][j][1][3] - compression and replication*/ - align448(); - printf("=== END OF ALIGN44 ========================\n"); - return 0; -} -/* ---------------------------------------------ALIGN441*/ -/* ALIGN arrB[i][j][n][m] WITH arrA[i][ j][n][m] normal*/ -void align441() -{ -/* parameters for ALIGN arrB[i][j][n][m] - WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]*/ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define AN4 5 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 1, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 0, k4m = 1, lm = 0; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align441"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN442*/ -/* ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] rotation*/ -void align442() -{ -/* parameters for ALIGN arrB[i][j][n][m] - WITH arrA4[k4i*n+li][k1j*i+lj][k2n*j+ln][k3m*n+lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 4 - #define AN4 4 - #define BN1 4 - #define BN2 4 - #define BN3 4 - #define BN4 4 - int k1i = 0, k2i = 0, k3i = 0, k4i = 1, li = 0; - int k1j = 1, k2j = 0, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 1, k3n = 0, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 1, k4m = 0, lm = 0; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k4i*m+li][k1j*i+lj][k2n*j+ln][k3m*n+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align442"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k4i) * k4i)) && - ((j - lj) == (((j - lj) / k1j) * k1j)) && - ((n - ln) == (((n - ln) / k2n) * k2n)) && - ((m - lm) == (((m - lm) / k3m) * k3m)) && - (((i - li) / k4i) >= 0) && - (((j - lj) / k1j) >= 0) && - (((n - ln) / k2n) >= 0) && - (((m - lm) / k3m) >= 0) && - (((i - li) / k4i) < BN4) && - (((j - lj) / k1j) < BN1) && - (((n - ln) / k2n) < BN2) && - (((m - lm) / k3m) < BN3)) - { - mb = (i - li) / k4i; - ib = (j - lj) / k1j; - jb = (n - ln) / k2n; - nb = (m - lm) / k3m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN443*/ -/* ALIGN arrB[i][j][k][l] WITH arrA[i][2* j][k][3*l] stretching*/ -void align443() -{ -/* parameters for ALIGN arrB[i][j][n][m] - WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]*/ - #define AN1 5 - #define AN2 4 - #define AN3 3 - #define AN4 7 - #define BN1 3 - #define BN2 2 - #define BN3 2 - #define BN4 3 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 2, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 1, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 0, k4m = 3, lm = 0; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align443"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN444*/ -/* ALIGN arrB[i][j][k][l] WITH arrA[i+2][j][k][l+3] shift*/ -void align444() -{ -/* parameters for ALIGN arrB[i][j][n][m] - WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 3 - #define AN4 6 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 2; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 1, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 0, k4m = 1, lm = 3; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align444"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN445*/ -/* ALIGN arrB[i][j][k][l] WITH arrA[i][j][-k+4][-l+3] reverse*/ -void align445() -{ -/* parameters for ALIGN arrB[i][j][n][m] - WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 8 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 5 - #define BN4 4 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = -1, k4n = 0, ln = 4; - int k1m = 0, k2m = 0, k3m = 0, k4m = -1, lm = 3; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align445"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN446*/ -/* ALIGN arrB[i][j][][l] WITH arrA[i][j][2][l] - compression and replication*/ -void align446() -{ -/* parameters for ALIGN arrB[i][j][][m] WITH arrA4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 4 - #define AN4 4 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, k4n = 0, ln = 2; - int k1m = 0, k2m = 0, k3m = 0, k4m = 1, lm = 0; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][][m] with A4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align446"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb, k) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (n == ln) - { - for (k = 0; k < BN3; k++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = k; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN447*/ -/* ALIGN arrB[][j][k][i] WITH arrA[i][j][][k] - compression and replication*/ -void align447() -{ -/* parameters for ALIGN arrB[][j][n][i] WITH arrA4[k1i*i+li][k2j*j+lj][][k3m*n+lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 4 - #define AN4 4 - #define BN1 4 - #define BN2 4 - #define BN3 4 - #define BN4 4 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 1, k4m = 0, lm = 0; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([][j][n][i] with A4[k1i*i+li][k2j*j+lj][][k3m*n+lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align447"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb, k) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - for (k = 0; k < BN1; k++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((m - lm) == (((m - lm) / k3m) * k3m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((m - lm) / k3m) >= 0) && - (((i - li) / k1i) < BN4) && - (((j - lj) / k2j) < BN2) && - (((m - lm) / k3m) < BN3)) - { - mb = (i - li) / k1i; - jb = (j - lj) / k2j; - ib = k; - nb = (m - lm) / k3m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* ---------------------------------------------ALIGN448*/ -/* ALIGN arrB[][i][j][] WITH arrA[i][j][1][3] - compression and replication*/ -void align448() -{ -/* parameters for ALIGN arrB[][i][j][] - WITH arrA[k1i*i+li][k2j*j+lj][ln][lm]*/ - #define AN1 4 - #define AN2 4 - #define AN3 4 - #define AN4 6 - #define BN1 4 - #define BN2 4 - #define BN3 4 - #define BN4 4 - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 0; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 0, k4n = 0, ln = 1; - int k1m = 0, k2m = 0, k3m = 0, k4m = 0, lm = 3; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([][i][j][] with A4[k1i*i+li][k2j*j+lj][ln][lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "align448"; - - erri = ER; - s = 0; - - #pragma dvm actual(erri, s) - #pragma dvm region local(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb, k, l) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((n == ln) && (m == lm)) - { - for (k = 0; k < BN1; k++) - for (l = 0; l < BN4; l++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN2) && - (((j - lj) / k2j) < BN3)) - { - ib = k; - jb = (i - li) / k1i; - nb = (j - lj) / k2j; - mb = l; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - } - - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erri), sum(s)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s = s + B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - if (erri > val) erri = val; - } - - } - #pragma dvm get_actual(erri, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ((erri == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/aligndyn11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/aligndyn11.cdv deleted file mode 100644 index 97eee25..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/ALIGN/aligndyn11.cdv +++ /dev/null @@ -1,422 +0,0 @@ -/* ALIGNDYN11 -TESTING align CLAUSE for dynamic arrays*/ - -#include -#include -#include - -static void align111(); -static void align1111(); -static void align1112(); -static void align112(); -static void align113(); -static void align114(); -static void align115(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF ALIGNDYN11 ===================\n"); - /* ALIGN arrB[i] WITH arrA[i] normal*/ - align111(); - /* ALIGN arrB[i] WITH arrA[i] small array*/ - align1111(); - /* ALIGN arrB[i] WITH arrA[2*i+3] small array*/ - align1112(); - /* ALIGN arrB[i] WITH arrA[i+4] shift along i*/ - align112(); - /* ALIGN arrB[i] WITH arrA[-i+8] reverse on i*/ -// align113(); - /* ALIGN arrB[i] WITH arrA[2*i+8] stretching along i*/ - align114(); - /* ALIGN arrB[] WITH arrA[]*/ - align115(); - printf("=== END OF ALIGNDYN11 =====================\n"); - return 0; -} -/* ---------------------------------------------ALIGN111*/ -/* ALIGN arrB[i] WITH arrA[i] normal*/ -void align111() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 8; - int BN1 = 8; - int k1i = 1; - int k2i = 0; - int li = 0; - char tname[] = "align111 "; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN1111*/ -/* ALIGN arrB[i] WITH arrA[i] small array*/ -void align1111() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 5; - int BN1 = 2; - int k1i = 1; - int k2i = 0; - int li = 0; - char tname[] = "align1111"; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN1112*/ -/* ALIGN arrB[i] WITH arrA[2*i+1] small array*/ -void align1112() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 5; - int BN1 = 2; - int k1i = 2; - int k2i = 0; - int li = 1; - char tname[] = "align1112"; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN112*/ -/* ALIGN arrB[i] WITH arrA[i+4] shift along i*/ -void align112() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 8; - int BN1 = 4; - int k1i = 1; - int k2i = 0; - int li = 4; - char tname[] = "align112 "; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN113*/ -/* ALIGN arrB[i] WITH arrA[-i+8] reverse on i*/ -void align113() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 8; - int BN1 = 8; - int k1i = -1; - int k2i = 0; - int li = 8; - char tname[] = "align113 "; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN114*/ -/* ALIGN arrB[i] WITH arrA[2*i+8] stretching along i*/ -void align114() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] */ - int AN1 = 24; - int BN1 = 8; - int k1i = 2; - int k2i = 0; - int li = 8; - char tname[] = "align114 "; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - /* create arrays */ - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] = ib; - } - } - #pragma dvm parallel([i] on B1[i]) reduction(min(erri)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i) - if (erri > i) erri = i; - ia = k1i * i + li; - if (A1[ia] != ia) - if (erri > i) erri = i; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} -/* ---------------------------------------------ALIGN115*/ -/* ALIGN arrB[] WITH arrA[]*/ -void align115() -{ -/* parameters for ALIGN arrB[i] WITH arrA[k1i * i + li]*/ - int AN1 = 24; - int BN1 = 8; - int k1i = 0; - int k2i = 0; - int li = 0; - char tname[] = "align115 "; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int (*B1); - - A1 = malloc(AN1 * sizeof(int)); - B1 = malloc(BN1 * sizeof(int)); - #pragma dvm realign(B1[] with A1[]) - - erri = ER; - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), private(j) - for (i = 0; i < AN1; i++) - for (j = 0; j < BN1; j++) - { - if (B1[j] != j) - if (erri > j) erri = j; - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(B1); - free(A1); -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr1.cdv deleted file mode 100644 index b667ebd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr1.cdv +++ /dev/null @@ -1,297 +0,0 @@ -/* DISTR1 -TESTING distribute and redistribute CLAUSE*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distr11(); -static void distr12(); -static void distr13(); -static void distr14(); -static void distr21(); -static void distr22(); -static void distr23(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTR1 ===================\n"); - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*]*/ - distr11(); - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK]*/ - distr12(); - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] small array*/ - distr13(); - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array*/ - distr14(); - /* DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][BLOCK]*/ - distr21(); - /* DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distr22(); - /* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][BLOCK]*/ - distr23(); - printf("=== END OF DISTR1 =====================\n"); - return 0; -} -/* ---------------------------------------------DISTR11*/ - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*]*/ -void distr11() -{ - #define AN1 8 - - #pragma dvm array distribute[block] - int A1[AN1]; - char tname[] = "distr11"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} -/* ---------------------------------------------DISTR12*/ - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK]*/ -void distr12() -{ - #define AN1 8 - - #pragma dvm array distribute[*] - float A1[AN1]; - char tname[] = "distr12"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} -/* ---------------------------------------------DISTR13*/ - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] small array*/ -void distr13() -{ - #define AN1 5 - - #pragma dvm array distribute[block] - double A1[AN1]; - char tname[] = "distr13"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} -/* ---------------------------------------------DISTR14*/ - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array*/ -void distr14() -{ - #define AN1 5 - - #pragma dvm array distribute[*] - long A1[AN1]; - char tname[] = "distr14"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} -/* ---------------------------------------------DISTR21*/ - /* DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][BLOCK]*/ -void distr21() -{ - #define AN1 8 - #define AN2 8 - - #pragma dvm array distribute[block][*] - int A2[AN1][AN2]; - char tname[] = "distr21"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 -} -/* ---------------------------------------------DISTR22*/ - /* DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*]*/ -void distr22() -{ - #define AN1 8 - #define AN2 8 - - #pragma dvm array distribute[*][block] - float A2[AN1][AN2]; - char tname[] = "distr22"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 -} -/* ---------------------------------------------DISTR23*/ - /* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][BLOCK]*/ -void distr23() -{ - #define AN1 8 - #define AN2 8 - - #pragma dvm array distribute[*][*] - double A2[AN1][AN2]; - char tname[] = "distr23"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr2.cdv deleted file mode 100644 index 5c99679..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr2.cdv +++ /dev/null @@ -1,257 +0,0 @@ -/* DISTR2 -TESTING distribute and redistribute CLAUSE*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distr24(); -static void distr32(); -static void distr33(); -static void distr41(); -static void distr42(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, n, m, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTR2 ===================\n"); - /* DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distr24(); - /* DISTRIBUTE arrA3[BLOCK][*][BLOCK] REDISTRIBUTE arrA3[*][BLOCK][BLOCK] */ - distr32(); - /* DISTRIBUTE arrA3[BLOCK][*][BLOCK] REDISTRIBUTE arrA3[*][BLOCK][*] */ - distr33(); - /* DISTRIBUTE arrA4[*][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*]*/ - distr41(); - /* DISTRIBUTE arrA4[BLOCK][*][BLOCK][*] REDISTRIBUTE arrA4[*][BLOCK][BLOCK][*]*/ - distr42(); - printf("=== END OF DISTR2 =====================\n"); - return 0; -} -/* ---------------------------------------------DISTR24*/ -/* DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[*][*]*/ -void distr24() -{ - #define AN1 8 - #define AN2 8 - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - char tname[] = "distr24"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 -} -/* ---------------------------------------------DISTR32*/ -/* DISTRIBUTE arrA3[BLOCK][*][BLOCK] REDISTRIBUTE arrA3[*][BLOCK][BLOCK]*/ -void distr32() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - - #pragma dvm array distribute[block][*][block] - float A3[AN1][AN2][AN3]; - char tname[] = "distr32"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - } - #pragma dvm redistribute(A3[*][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - if (A3[i][j][n] != i * NL / 10 + j * NL / 100 + n) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 -} -/* ---------------------------------------------DISTR33*/ -/* DISTRIBUTE arrA3[BLOCK][*][ BLOCK] REDISTRIBUTE arrA3[*][BLOCK][*] */ -void distr33() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - - #pragma dvm array distribute[block][*][block] - double A3[AN1][AN2][AN3]; - char tname[] = "distr33"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - } - #pragma dvm redistribute(A3[*][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - if (A3[i][j][n] != i * NL / 10 + j * NL / 100 + n) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 -} -/* ---------------------------------------------DISTR41*/ -/* DISTRIBUTE arrA4[*][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*]*/ -void distr41() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define AN4 5 - - #pragma dvm array distribute[*][*][block][block] - int A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr41"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[*][*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} -/* ---------------------------------------------DISTR42*/ -/* DISTRIBUTE arrA4[BLOCK][*][BLOCK][*] REDISTRIBUTE arrA4[*][BLOCK][BLOCK][*]*/ -void distr42() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define AN4 5 - - #pragma dvm array distribute[block][*][block][*] - float A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr42"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[*][block][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr3.cdv deleted file mode 100644 index 60347b3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr3.cdv +++ /dev/null @@ -1,125 +0,0 @@ -/* DISTR3 -TESTING distribute and redistribute CLAUSE*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distr31(); -static void distr43(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, n, m, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTR3 ===================\n"); - /* DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA3[*][*][*]*/ - distr31(); - /* DISTRIBUTE arrA4[BLOCK][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][*]*/ - distr43(); - printf("=== END OF DISTR3 =====================\n"); - return 0; -} -/* ---------------------------------------------DISTR31*/ -/* DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA3[*][*][*]*/ -void distr31() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - char tname[] = "distr31"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n; - } - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - if (A3[i][j][n] != i * NL / 10 + j * NL / 100 + n) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 -} -/* ---------------------------------------------DISTR43*/ -/* DISTRIBUTE arrA4[BLOCK][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][*]*/ -void distr43() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define AN4 5 - - #pragma dvm array distribute[block][*][block][block] - double A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr43"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[block][block][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr4.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr4.cdv deleted file mode 100644 index 709ab73..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR/distr4.cdv +++ /dev/null @@ -1,229 +0,0 @@ -/* DISTR4 -TESTING distribute and redistribute CLAUSE*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distr44(); -static void distr45(); -static void distr46(); -static void distr47(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, n, m, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTR4 ===================\n"); - /* DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK]*/ - distr44(); - /* DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*]*/ - distr45(); - /* DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] - small array*/ - distr46(); - /* DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - small array*/ - distr47(); - printf("=== END OF DISTR4 =====================\n"); - return 0; -} -/* ---------------------------------------------DISTR44*/ -/* DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK]*/ -void distr44() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #define AN4 8 - - #pragma dvm array distribute[*][*][*][*] - int A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr44"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[block][block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} -/* ---------------------------------------------DISTR45*/ -/* DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*]*/ -void distr45() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - #define AN4 5 - - #pragma dvm array distribute[block][block][block][block] - float A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr45"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[*][*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} -/* ---------------------------------------------DISTR46*/ -/* DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] - small array*/ -void distr46() -{ - #define AN1 5 - #define AN2 4 - #define AN3 3 - #define AN4 2 - - #pragma dvm array distribute[*][*][*][*] - double A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr46"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[block][block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} -/* ---------------------------------------------DISTR47*/ -/* DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - small array*/ -void distr47() -{ - #define AN1 1 - #define AN2 2 - #define AN3 3 - #define AN4 4 - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - char tname[] = "distr47"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } - #pragma dvm redistribute(A4[*][*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - if (A4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen1.cdv deleted file mode 100644 index 76d5b92..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen1.cdv +++ /dev/null @@ -1,386 +0,0 @@ -/* DISTRGEN1 -TESTING distribute and redistribute CLAUSE -for arrays distributed with GEN-block*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrg10(); -static void distrg11(); -static void distrg12(); -static void distrg13(); -static void distrg14(); -static void distrg15(); -static void distrg161(); -static void distrg162(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRGEN1 ===================\n"); - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[GENBLOCK]*/ - distrg10(); - - /* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[BLOCK]*/ - distrg11(); - - /* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[*]*/ - distrg12(); - - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*]*/ - distrg13(); - - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK]*/ - distrg14(); - - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[GENBLOCK]*/ - distrg15(); - - /* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[GENBLOCK] - with 0 in BS.1*/ - distrg161(); - - /* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[GENBLOCK] - with 0 in BS.2*/ - distrg162(); - - printf("=== END OF DISTRGEN1 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -/* ---------------------------------------------DISTR10*/ -/* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[GENBLOCK]*/ -void distrg10() -{ - #define AN1 8 - int* BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[block] - int A1[AN1]; - char tname[] = "distrg10"; - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 -} - -/* ---------------------------------------------DISTR11*/ -/* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[BLOCK]*/ -void distrg11() -{ - #define AN1 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[genblock(BS)] - int A1[AN1]; - char tname[] = "distrg11"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 -} - -/* ---------------------------------------------DISTR12*/ -/* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[*]*/ -void distrg12() -{ - #define AN1 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[genblock(BS)] - int A1[AN1]; - char tname[] = "distrg12"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 -} - -/* ---------------------------------------------DISTR13*/ -/* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*]*/ -void distrg13() -{ - #define AN1 8 - - #pragma dvm array distribute[block] - int A1[AN1]; - char tname[] = "distrg13"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} - -/* ---------------------------------------------DISTR14*/ -/* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK]*/ -void distrg14() -{ - #define AN1 8 - - #pragma dvm array distribute[*] - int A1[AN1]; - char tname[] = "distrg14"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - #undef AN1 -} - -/* ---------------------------------------------DISTR15*/ -/* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[GENBLOCK]*/ -void distrg15() -{ - #define AN1 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[*] - int A1[AN1]; - char tname[] = "distrg15"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 -} - -/* ---------------------------------------------DISTR161*/ -/* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[GENBLOCK] - wtih 0 in BS.1*/ -/*{0, 8} - works, {8, 0} - cycle*/ -void distrg161() -{ - #define AN1 8 - int *BS1, *BS2; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 0, &BS1); - #pragma dvm array distribute[genblock(BS1)] - int A1[AN1]; - char tname[] = "distrg161"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - #undef AN1 -} - -/* ---------------------------------------------DISTR162*/ -/* DISTRIBUTE arrA1[GENBLOCK] REDISTRIBUTE arrA1[GENBLOCK] - wtih 0 in BS.2*/ -void distrg162() -{ - #define AN1 8 - int *BS1, *BS2; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 0, &BS2); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array distribute[genblock(BS1)] - int A1[AN1]; - char tname[] = "distrg162"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - #undef AN1 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen2.cdv deleted file mode 100644 index cafcf03..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen2.cdv +++ /dev/null @@ -1,648 +0,0 @@ -/* DISTRGEN2 -TESTING distribute and redistribute CLAUSE -for arrays distributed with GEN-block*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrg21(); -static void distrg22(); -static void distrg23(); -static void distrg24(); -static void distrg25(); -static void distrg26(); -static void distrg261(); -static void distrg27(); -static void distrg28(); -static void distrg29(); -static void distrg210(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRGEN2 ===================\n"); - /* DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][GENBLOCK]*/ - distrg21(); - - /* DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[GENBLOCK][*]*/ - distrg22(); - - /* DISTRIBUTE arrA2[*][GENBLOCK] REDISTRIBUTE arrA2[*][*]*/ - distrg23(); - - /* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[GENBLOCK][*]*/ - distrg24(); - - /* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrg25(); - - /* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ - distrg26(); - - /* DISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - REDISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ - distrg27(); - - /* DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ - distrg28(); - - /* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[*][*] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ - distrg29(); - - /* DISTRIBUTE arrA2[GEN_BLOCK][*] - REDISTRIBUTE arrA2[*][*] - REDISTRIBUTE arrA2[*][GEN_BLOCK]*/ - distrg210(); - - printf("=== END OF DISTRGEN2 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} -/* ---------------------------------------------DISTR21*/ -/* DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][GENBLOCK]*/ -void distrg21() -{ - #define AN1 8 - #define AN2 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS); - #pragma dvm array distribute[block][*] - int A1[AN1][AN2]; - char tname[] = "distrg21"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A1[i][j] = i*NL + j; - } - #pragma dvm redistribute(A1[*][genblock(BS)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A1[i][j] != i*NL + j) - erri = Min(erri, i*NL/10 + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR22*/ -/* DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[GENBLOCK][*]*/ -void distrg22() -{ - #define AN1 8 - #define AN2 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[*][block] - int A1[AN1][AN2]; - char tname[] = "distrg22"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A1[i][j] = i*NL + j; - } - #pragma dvm redistribute(A1[genblock(BS)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A1[i][j] != i*NL + j) - erri = Min(erri, i*NL/10 + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR23*/ -/* DISTRIBUTE arrA2[*][GENBLOCK] REDISTRIBUTE arrA2[*][*]*/ -void distrg23() -{ - #define AN1 8 - #define AN2 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS); - #pragma dvm array distribute[*][genblock(BS)] - int A1[AN1][AN2]; - char tname[] = "distrg23"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A1[i][j] = i*NL + j; - } - #pragma dvm redistribute(A1[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A1[i][j] != i*NL + j) - erri = Min(erri, i*NL/10 + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR24*/ -/* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[GENBLOCK][*]*/ -void distrg24() -{ - #define AN1 8 - #define AN2 8 - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array distribute[*][*] - int A1[AN1][AN2]; - char tname[] = "distrg24"; - - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A1[i][j] = i*NL + j; - } - #pragma dvm redistribute(A1[genblock(BS)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A1[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A1[i][j] != i*NL + j) - erri = Min(erri, i*NL/10 + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR25*/ -/* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] other blocks*/ -void distrg25() -{ - #define AN1 10 - #define AN2 12 - int *BS1i, *BS1j, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - //int BS1i[2] = {5, 5}, BS1j[2] = {7, 5}; - //int BS2i[2] = {6, 4}, BS2j[2] = {5, 7}; - #pragma dvm array distribute[genblock(BS1i)][genblock(BS1j)] - int A2[AN1][AN2]; - char tname[] = "distrg25"; - - erri = ER; - - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - - #pragma dvm redistribute(A2[genblock(BS2i)][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 1) - erri = Min(erri, i*NL/10+j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR26*/ -/* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ -void distrg26() -{ - #define AN1 10 - #define AN2 12 - int *BS1i, *BS1j, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - #pragma dvm array distribute[genblock(BS1i)][genblock(BS1j)] - int A2[AN1][AN2]; - char tname[] = "distrg26"; - erri = ER; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - #pragma dvm redistribute(A2[block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS2i)][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 3) - erri = Min(erri, i*NL/10 + j + 3); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR27*/ - /* DISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - REDISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ - -void distrg27() -{ - #define AN1 10 - #define AN2 12 - int *BS1i, *BS2j, *BS3i; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS3i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - #pragma dvm array distribute[genblock(BS1i)][block] - int A2[AN1][AN2]; - char tname[] = "distrg27"; - - erri = ER; - - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - #pragma dvm redistribute(A2[block][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS3i)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 3) - erri = Min(erri, i*NL/10+j + 3); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS3i); - free(BS2j); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR28*/ -/* DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ -void distrg28() -{ - #define AN1 10 - #define AN2 12 - int *BS1j, *BS2i; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - #pragma dvm array distribute[block][genblock(BS1j)] - int A2[AN1][AN2]; - char tname[] = "distrg28"; - - erri = ER; - - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - #pragma dvm redistribute(A2[block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - - #pragma dvm redistribute(A2[genblock(BS2i)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 3) - erri = Min(erri, i*NL/10+j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS2i); - free(BS1j); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR29*/ -/* DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[*][*] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ -void distrg29() -{ - #define AN1 10 - #define AN2 12 - int *BS1i, *BS1j, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - #pragma dvm array distribute[genblock(BS1i)][genblock(BS1j)] - int A2[AN1][AN2]; - char tname[] = "distrg29"; - - erri = ER; - - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS2i)][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 3) - erri = Min(erri, i*NL/10+j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR210*/ -/* DISTRIBUTE arrA2[GEN_BLOCK][*] - REDISTRIBUTE arrA2[*][*] - REDISTRIBUTE arrA2[*][GEN_BLOCK]*/ -void distrg210() -{ - #define AN1 10 - #define AN2 12 - int *BS1i, *BS2i; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS2i); - #pragma dvm array distribute[genblock(BS1i)][*] - int A2[AN1][AN2]; - char tname[] = "distrg210"; - - erri = ER; - - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = 1; - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += i*NL+j; - } - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[*][genblock(BS2i)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i*NL+j + 3) - erri = Min(erri, i*NL/10+j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS2i); - #undef AN1 - #undef AN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen3.cdv deleted file mode 100644 index 6a4ccf5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_GEN/distrgen3.cdv +++ /dev/null @@ -1,1006 +0,0 @@ -/* DISTRGEN3 -TESTING distribute and redistribute CLAUSE -for arrays distributed with GEN-block*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrg31(); -static void distrg32(); -static void distrg33(); -static void distrg34(); -static void distrg35(); -static void distrg36(); -static void distrg37(); -static void distrg38(); -static void distrg39(); -static void distrg310(); -static void distrg311(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erria, errib, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRGEN3 ===================\n"); - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrg31(); - - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ - distrg32(); - - /* DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] allocatable - DISTRIBUTE arrB3[BLOCK][GEN_BLOCK][GEN_BLOCK] static - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ - distrg33(); - - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] !static - REDISTRIBUTE [GEN_BLOCK][*][BLOCK] - DISTRIBUTE arrB3[GEN_BLOCK][*][BLOCK] !static - REDISTRIBUTE [BLOCK][GEN_BLOCK][*]*/ - distrg34(); - - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[*][*][*] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ - distrg35(); - - /* 36 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ - distrg36(); - - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK]*/ - distrg37(); - - /* DISTRIBUTE arrA3 [GEN_BLOCK][*][GEN_BLOCK] - REDISTRIBUTE [*][GEN_BLOCK][*] - REDISTRIBUTE[GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE[*][GEN_BLOCK][GEN_BLOCK]*/ - distrg38(); - - /* 39 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][*][*] - REDISTRIBUTE[GEN_BLOCK][*][GEN_BLOCK]*/ - distrg39(); - - /* 310 DISTRIBUTE arrA3 [GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE [*][*][GEN_BLOCK] - REDISTRIBUTE[*][GEN_BLOCK][BLOCK]*/ - distrg310(); - - /* 311 DISTRIBUTE arrA3 [GEN_BLOCK][*][*] - REDISTRIBUTE [*][*][*] - REDISTRIBUTE[*][*][GEN_BLOCK]*/ - distrg311(); - - printf("=== END OF DISTRGEN3 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -/* ---------------------------------------------DISTR31*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ -void distrg31() -{ - #define AN1 12 - #define AN2 17 - #define AN3 16 - int *BS1i, *BS1j, *BS1k, *BS2i, *BS2j, *BS2k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2k); - #pragma dvm array distribute[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)] - int A3[AN1][AN2][AN3]; - char tname[] = "distrg31"; - - erria = ER; - - #pragma dvm region out(A3) - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - #pragma dvm redistribute(A3[genblock(BS2i)][genblock(BS2j)][genblock(BS2k)]) - - #pragma dvm region in(A3) - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erria = Min(erria, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(BS2i); - free(BS2j); - free(BS2k); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR32*/ -/* DISTRIBUTE arrA32[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ -void distrg32() -{ - #define AN1 8 - #define AN2 14 - #define AN3 6 - int *BS1i, *BS1j, *BS1k, *BS2i, *BS2j, *BS2k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2k); - #pragma dvm array distribute[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)] - int A3[AN1][AN2][AN3]; - char tname[] = "distrg32"; - - erria = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k + 1; - } - - #pragma dvm redistribute(A3[block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k]++; - } - - #pragma dvm redistribute(A3[genblock(BS2i)][genblock(BS2j)][genblock(BS2k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 2) - erria = Min(erria, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(BS2i); - free(BS2j); - free(BS2k); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------distrg33*/ -/* DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] allocatable - DISTRIBUTE arrB3[BLOCK][GEN_BLOCK][GEN_BLOCK] static - REDISTRIBUTE [GEN_BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ -void distrg33() -{ - #define AN1 12 - #define AN2 17 - #define AN3 16 - #define BN1 10 - #define BN2 10 - #define BN3 10 - int *BS1aj, *BS1ak, *BS1bi, *BS1bj, *BS1bk, *BS2ai, *BS2aj, *BS2ak, *BS2bi, *BS2bj, *BS2bk; - genBlocksAxis(dvmh_get_num_procs(1), BN1, 1, &BS1bi); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1ak); - genBlocksAxis(dvmh_get_num_procs(2), BN2, 1, &BS1bj); - genBlocksAxis(dvmh_get_num_procs(3), BN3, 1, &BS1bk); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2ak); - genBlocksAxis(dvmh_get_num_procs(1), BN1, 1, &BS2bi); - genBlocksAxis(dvmh_get_num_procs(2), BN2, 1, &BS2bj); - genBlocksAxis(dvmh_get_num_procs(3), BN3, 1, &BS2bk); - #pragma dvm array distribute[block][genblock(BS1bj)][genblock(BS1bk)] - int B3[BN1][BN2][BN3]; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg33"; - - erria = ER; - errib = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][genblock(BS1aj)][genblock(BS1ak)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - - #pragma dvm parallel([i][j][k] on B3[i][j][k]) cuda_block(256) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (k = 0; k < BN3; k++) - B3[i][j][k] = (i*NL/10 + j*NL/100 + k) * 2; - } - - #pragma dvm redistribute(A3[genblock(BS2ai)][genblock(BS2aj)][block]) - #pragma dvm redistribute(B3[genblock(BS2bi)][genblock(BS2bj)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erria = Min(erria, i*NL/10 + j*NL/100 + k); - - #pragma dvm parallel([i][j][k] on B3[i][j][k]) reduction(min(errib)), cuda_block(256) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - for(k = 0; k < BN3; k++) - if (B3[i][j][k] != (i*NL/10 + j*NL/100 + k) * 2) - errib = Min(errib, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erria, errib) - if (erria == ER && errib == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1aj); - free(BS1ak); - free(BS1bi); - free(BS1bj); - free(BS1bk); - free(BS2ai); - free(BS2aj); - free(BS2ak); - free(BS2bi); - free(BS2bj); - free(BS2bk); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ---------------------------------------------distrg34*/ -/*DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][*][BLOCK] - DISTRIBUTE arrB3[GEN_BLOCK][*][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][*] */ -void distrg34() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - #define BN1 12 - #define BN2 17 - #define BN3 11 - int *BS1ai, *BS1aj, *BS1ak, *BS1bi, *BS2ai, *BS2bj; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1ak); - genBlocksAxis(dvmh_get_num_procs(1), BN1, 1, &BS1bi); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(2), BN2, 1, &BS2bj); - #pragma dvm array distribute[genblock(BS1bi)][*][block] - int B3[BN1][BN2][BN3]; - #pragma dvm array distribute[genblock(BS1ai)][genblock(BS1aj)][genblock(BS1ak)] - int A3[AN1][AN2][AN3]; - char tname[] = "distrg34"; - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - - #pragma dvm parallel([i][j][k] on B3[i][j][k]) cuda_block(256) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (k = 0; k < BN3; k++) - B3[i][j][k] = (i*NL/10 + j*NL/100 + k) * 2; - } - - #pragma dvm redistribute(A3[genblock(BS2ai)][*][block]) - #pragma dvm redistribute(B3[block][genblock(BS2bj)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erria = Min(erria, i*NL/10 + j*NL/100 + k); - - #pragma dvm parallel([i][j][k] on B3[i][j][k]) reduction(min(errib)), cuda_block(256) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - for(k = 0; k < BN3; k++) - if (B3[i][j][k] != (i*NL/10 + j*NL/100 + k) * 2) - errib = Min(errib, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erria, errib) - if (erria == ER && errib == ER) - ansyes(tname); - else - ansno(tname); - free(BS1ai); - free(BS1aj); - free(BS1ak); - free(BS1bi); - free(BS2ai); - free(BS2bj); - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ----------------------------------------------------distrg35 - DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[*][*][*] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ -void distrg35() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - int *BS1ai, *BS1aj, *BS1ak, *BS2ai, *BS2aj, *BS2ak; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1ak); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2ak); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg35"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][genblock(BS1aj)][genblock(BS1ak)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 3; - } - - #pragma dvm redistribute(A3[genblock(BS2ai)][genblock(BS2aj)][genblock(BS2ak)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 3; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 6) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 6); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS1aj); - free(BS1ak); - free(BS2ai); - free(BS2aj); - free(BS2ak); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg36 - 36 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ -void distrg36() -{ - #define AN1 12 - #define AN2 12 - #define AN3 5 - int *BS1ai, *BS1ak, *BS2aj, *BS3aj, *BS3ak, *BS4ai, *BS4aj; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1ak); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS4ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS4aj); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS3aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS3ak); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg36"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][block][genblock(BS1ak)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][genblock(BS2aj)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[block][genblock(BS3aj)][genblock(BS3ak)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS4ai)][genblock(BS3aj)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 3) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 3); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS1ak); - free(BS2aj); - free(BS3ak); - free(BS4ai); - free(BS4aj); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg37 - 37 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK]*/ -void distrg37() -{ - #define AN1 10 - #define AN2 15 - #define AN3 15 - int *BS1ai, *BS1aj, *BS2aj, *BS3aj, *BS3ak, *BS4ai, *BS4ak; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS4ai); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS4ak); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS3aj); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS3ak); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg37"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][genblock(BS1aj)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][genblock(BS2aj)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[block][genblock(BS3aj)][genblock(BS3ak)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS4ai)][block][genblock(BS4ak)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 3) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 3); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS1aj); - free(BS2aj); - free(BS3aj); - free(BS3ak); - free(BS4ai); - free(BS4ak); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg38 - 38 DISTRIBUTE arrA3 [GEN_BLOCK][*][GEN_BLOCK] - REDISTRIBUTE [*][GEN_BLOCK][*] - REDISTRIBUTE[GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE[*][GEN_BLOCK][GEN_BLOCK]*/ -void distrg38() -{ - #define AN1 5 - #define AN2 6 - #define AN3 12 - int *BS1ai, *BS1aj, *BS2ai, *BS3aj, *BS3ai, *BS4ai, *BS4aj; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS4ai); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS4aj); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS3aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS3ai); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg38"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][*][genblock(BS1aj)]) - - #pragma dvm region out(A3) - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][genblock(BS2ai)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS3ai)][genblock(BS3aj)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[*][genblock(BS4ai)][genblock(BS4aj)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 3) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 3); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS1aj); - free(BS2ai); - free(BS3aj); - free(BS3ai); - free(BS4ai); - free(BS4aj); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg39 - 39 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][*][*] - REDISTRIBUTE[GEN_BLOCK][*][GEN_BLOCK]*/ -void distrg39() -{ - #define AN1 10 - #define AN2 16 - #define AN3 10 - int *BS1ai, *BS1aj, *BS2ai, *BS3aj, *BS3ai; - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS3aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS3ai); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg39"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][genblock(BS1ai)][genblock(BS1aj)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - - #pragma dvm redistribute(A3[genblock(BS2ai)][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS3ai)][*][genblock(BS3aj)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 2) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 2); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS1aj); - free(BS2ai); - free(BS3aj); - free(BS3ai); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg310 - 310 DISTRIBUTE arrA3 [GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE [*][*][GEN_BLOCK] - REDISTRIBUTE[*][GEN_BLOCK][BLOCK]*/ -void distrg310() -{ - #define AN1 20 - #define AN2 15 - #define AN3 10 - int *BS1aj, *BS1ai, *BS2ai, *BS3ai; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1aj); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(1), AN3, 1, &BS2ai); - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS3ai); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg310"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][genblock(BS1aj)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - - #pragma dvm redistribute(A3[*][*][genblock(BS2ai)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[*][genblock(BS3ai)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 2) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 2); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1aj); - free(BS1ai); - free(BS2ai); - free(BS3ai); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ----------------------------------------------------distrg311 - 311 DISTRIBUTE arrA3 [GEN_BLOCK][*][*] - REDISTRIBUTE [*][*][*] - REDISTRIBUTE[*][*][GEN_BLOCK]*/ -void distrg311() -{ - #define AN1 8 - #define AN2 16 - #define AN3 24 - int *BS1ai, *BS3ai; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1ai); - genBlocksAxis(dvmh_get_num_procs(1), AN3, 1, &BS3ai); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrg311"; - - erria = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1ai)][*][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[*][*][genblock(BS3ai)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erria)), cuda_block(256) - for (i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 2) - erria = Min(erria, i*NL/10 + j*NL/100 + k + 2); - } - - #pragma dvm get_actual(erria) - if (erria == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - free(BS1ai); - free(BS3ai); - #undef AN1 - #undef AN2 - #undef AN3 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr1.cdv deleted file mode 100644 index fd02e18..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr1.cdv +++ /dev/null @@ -1,217 +0,0 @@ -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distr11(); -static void distr12(); -static void distr13(); -static void distr14(); -static void distr15(); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static int ER = 10000; -static int erri, i, j, k; - -int main(int an, char **as) { - printf("=== START OF DELDISTR1 ===================\n"); - distr11(); - distr12(); - distr13(); - distr14(); - distr15(); - printf("=== END OF DELDISTR1 ===================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -void distr11() -{ - #define AN1 8 - #pragma dvm array - int (*A1); - char tname[] = "distr11"; - erri = ER; - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} -void distr12() -{ - #define AN1 8 - #pragma dvm array - int (*A1); - char tname[] = "distr12"; - erri = ER; - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) { - if (A1[i] != i) - erri = Min(erri, i); - } - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} -void distr13() -{ - #define AN1 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A1); - char tname[] = "distr13"; - erri = ER; - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A1); - #undef AN1 -} -void distr14() -{ - #define AN1 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A1); - char tname[] = "distr14"; - erri = ER; - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} -void distr15() -{ - #define AN1 8 - int m1 = 4; - #pragma dvm array - int (*A1); - char tname[] = "distr15"; - erri = ER; - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr2.cdv deleted file mode 100644 index b9a4cdb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr2.cdv +++ /dev/null @@ -1,1001 +0,0 @@ -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distr21(); -static void distr22(); -static void distr23(); -static void distr24(); -static void distr25(); -static void distr26(); -static void distr27(); -static void distr28(); -static void distr29(); -static void distr210(); -static void distr211(); -static void distr212(); -static void distr213(); -static void distr214(); -static void distr215(); -static void distr216(); -static void distr217(); -static void distr218(); -static void distr219(); -static void distr220(); -static void distr221(); -static void distr222(); -static void distr223(); -static void distr224(); -static void distr225(); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static int ER = 10000; -static int erri, i, j, k; - -int main(int an, char **as) { - printf("=== START OF DELDISTR2 ===================\n"); - distr21(); - distr22(); - distr23(); - distr24(); - distr25(); - distr26(); - distr27(); - distr28(); - distr29(); - distr210(); - distr211(); - distr212(); - distr213(); - distr214(); - distr215(); - distr216(); - distr217(); - distr218(); - distr219(); - distr220(); - distr221(); - distr222(); - distr223(); - distr224(); - distr225(); - printf("=== END OF DELDISTR2 ===================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -void distr21() -{ - #define AN1 8 - #define AN2 8 - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr21"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr22() -{ - #define AN1 8 - #define AN2 8 - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr22"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr23() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int* BS2; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr23"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1)][genblock(BS2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - free(A2); - #undef AN1 - #undef AN2 -} -void distr24() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - double wb2[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr24"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][wgtblock(wb2, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr25() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - int m2 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr25"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr26() -{ - #define AN1 8 - #define AN2 8 - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr26"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr27() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr27"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr28() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr28"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr29() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr29"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr210() -{ - #define AN1 8 - #define AN2 8 - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr210"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr211() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr211"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr212() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr212"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr213() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr213"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr214() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr214"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr215() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr215"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr216() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr216"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr217() -{ - #define AN1 8 - #define AN2 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr217"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr218() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr218"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr219() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr219"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr220() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr220"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr221() -{ - #define AN1 8 - #define AN2 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr221"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr222() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr222"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr223() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr223"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void distr224() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr224"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A2); - #undef AN1 - #undef AN2 -} -void distr225() -{ - #define AN1 8 - #define AN2 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distr225"; - erri = ER; - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * 10 + j; - } - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * 10 + j) - erri = Min(erri, i * 10 + j); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr3.cdv deleted file mode 100644 index 79b67e5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/deldistr3.cdv +++ /dev/null @@ -1,2846 +0,0 @@ -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distr31(); -static void distr32(); -static void distr33(); -static void distr34(); -static void distr35(); -static void distr36(); -static void distr37(); -static void distr38(); -static void distr39(); -static void distr310(); -static void distr311(); -static void distr312(); -static void distr313(); -static void distr314(); -static void distr315(); -static void distr316(); -static void distr317(); -static void distr318(); -static void distr319(); -static void distr320(); -static void distr321(); -static void distr322(); -static void distr323(); -static void distr324(); -static void distr325(); -static void distr326(); -static void distr327(); -static void distr328(); -static void distr329(); -static void distr330(); -static void distr331(); -static void distr332(); -static void distr333(); -static void distr334(); -static void distr335(); -static void distr336(); -static void distr337(); -static void distr338(); -static void distr339(); -static void distr340(); -static void distr341(); -static void distr342(); -static void distr343(); -static void distr344(); -static void distr345(); -static void distr346(); -static void distr347(); -static void distr348(); -static void distr349(); -static void distr350(); -static void distr351(); -static void distr352(); -static void distr353(); -static void distr354(); -static void distr355(); -static void distr356(); -static void distr357(); -static void distr358(); -static void distr359(); -static void distr360(); -static void distr361(); -static void distr362(); -static void distr363(); -static void distr364(); -static void distr365(); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static int ER = 10000; -static int erri, i, j, k; - -int main(int an, char **as) { - printf("=== START OF DELDISTR3 ===================\n"); - distr31(); - distr32(); - distr33(); - distr34(); - distr35(); - distr36(); - distr37(); - distr38(); - distr39(); - distr310(); - distr311(); - distr312(); - distr313(); - distr314(); - distr315(); - distr316(); - distr317(); - distr318(); - distr319(); - distr320(); - distr321(); - distr322(); - distr323(); - distr324(); - distr325(); - distr326(); - distr327(); - distr328(); - distr329(); - distr330(); - distr331(); - distr332(); - distr333(); - distr334(); - distr335(); - distr336(); - distr337(); - distr338(); - distr339(); - distr340(); - distr341(); - distr342(); - distr343(); - distr344(); - distr345(); - distr346(); - distr347(); - distr348(); - distr349(); - distr350(); - distr351(); - distr352(); - distr353(); - distr354(); - distr355(); - distr356(); - distr357(); - distr358(); - distr359(); - distr360(); - distr361(); - distr362(); - distr363(); - distr364(); - distr365(); - printf("=== END OF DELDISTR3 ===================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount != 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -void distr31() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr31"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr32() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr32"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr33() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int* BS2; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2); - int* BS3; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS3); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr33"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][genblock(BS2)][genblock(BS3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - free(BS3); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr34() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - double wb2[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - double wb3[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr34"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][wgtblock(wb2, 8)][wgtblock(wb3, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr35() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int m2 = 4; - int m3 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr35"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr36() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr36"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][block][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr37() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr37"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][block][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr38() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr38"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][block][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr39() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr39"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][genblock(BS1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr310() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr310"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][genblock(BS1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr311() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr311"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][genblock(BS1)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr312() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr312"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][wgtblock(wb1, 8)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr313() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr313"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][wgtblock(wb1, 8)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr314() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr314"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][wgtblock(wb1, 8)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr315() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr315"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][multblock(m1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr316() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr316"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][multblock(m1)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr317() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr317"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][multblock(m1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr318() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr318"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][*][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr319() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr319"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][*][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr320() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr320"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][*][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr321() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr321"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][genblock(BS1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr322() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr322"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][genblock(BS1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr323() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr323"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][genblock(BS1)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr324() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr324"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][wgtblock(wb1, 8)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr325() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr325"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][wgtblock(wb1, 8)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr326() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr326"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][wgtblock(wb1, 8)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr327() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr327"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][multblock(m1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr328() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr328"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][multblock(m1)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr329() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr329"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][multblock(m1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr330() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr330"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr331() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr331"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][*][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr332() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr332"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][*][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr333() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr333"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr334() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr334"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][block][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr335() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr335"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][block][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr336() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr336"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][wgtblock(wb1, 8)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr337() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr337"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][wgtblock(wb1, 8)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr338() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr338"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][wgtblock(wb1, 8)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr339() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr339"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][multblock(m1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr340() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr340"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][multblock(m1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr341() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int* BS1; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr341"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1)][multblock(m1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr342() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr342"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr343() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr343"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][*][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr344() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr344"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][*][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr345() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr345"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr346() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr346"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][block][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr347() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr347"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][block][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr348() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr348"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][genblock(BS1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr349() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr349"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][genblock(BS1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr350() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr350"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][genblock(BS1)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr351() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr351"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][multblock(m1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr352() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr352"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][multblock(m1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr353() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr353"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][multblock(m1)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr354() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr354"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr355() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr355"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr356() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr356"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr357() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr357"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr358() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr358"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr359() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr359"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr360() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr360"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][genblock(BS1)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr361() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr361"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][genblock(BS1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr362() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1); - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr362"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][genblock(BS1)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr363() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr363"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 8)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr364() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr364"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 8)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void distr365() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 4; - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1., 1.5, 2.}; - int* BS1; - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distr365"; - erri = ER; - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 8)][genblock(BS1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i * 100 + j * 10 + k; - } - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i * 100 + j * 10 + k) - erri = Min(erri, i * 100 + j * 10 + k); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix1.cdv deleted file mode 100644 index a439923..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix1.cdv +++ /dev/null @@ -1,398 +0,0 @@ -/* DISTRMIX1 -Testing DISTRIBUTE and REDISTRIBUTE directive - GEN_BLOCK, WGT_BLOCK, MULT_BLOCK distributions -*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrmix11(); -static void distrmix12(); -static void distrmix13(); -static void distrmix14(); -static void distrmix15(); -static void distrmix16(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, errib, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMIX1 ===================\n"); - /* 11 DISTRIBUTE arrA1[MULT_BLOCK] - REDISTRIBUTE arrA1[WGT_BLOCK] - REDISTRIBUTE arrA1[MULT_BLOCK]*/ - distrmix11(); - - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrmix12(); - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrmix13(); - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrmix14(); - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrmix15(); - /* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks*/ - distrmix16(); - - printf("=== END OF DISTRMIX1 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount > 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -/* ---------------------------------------------DISTR11*/ -/* 11 DISTRIBUTE arrA1[MULT_BLOCK] - REDISTRIBUTE arrA1[WGT_BLOCK] - REDISTRIBUTE arrA1[MULT_BLOCK]*/ -void distrmix11() -{ - #define AN1 64 - int m1 = 4, m2 = 2; - double wb[7] = {2.1, 4.6, 3., 2.0, 1.5, 2., 3.1}; - #pragma dvm array - int (*A1); - char tname[] = "distrmix11"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m1)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[wgtblock(wb, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR12*/ -/* DISTRIBUTE arrA1[WGT_BLOCK] - REDISTRIBUTE arrA1[MULT_BLOCK] - REDISTRIBUTE arrA1[WGT_BLOCK] */ -void distrmix12() -{ - #define AN1 75 - int m1 = 15; - double wb1[6] = {3.1, 1.6, 2., 3.0, 0.5, 2.}; - double wb2[8] = {1.5, 2.1, 2.6, 4.2, 2.5, 3.5, 1., 2.1}; - #pragma dvm array - int (*A1); - char tname[] = "distrmix12"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb1, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[wgtblock(wb2, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR13*/ -/* DISTRIBUTE arrA1[MULT_BLOCK] - REDISTRIBUTE arrA1[GEN_BLOCK] - REDISTRIBUTE arrA1[MULT_BLOCK] */ -void distrmix13() -{ - #define AN1 30 - int m1 = 5, m2 = 3; - int* BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array - int (*A1); - char tname[] = "distrmix13"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m1)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR14*/ -/* DISTRIBUTE arrA1[GEN_BLOCK] - REDISTRIBUTE arrA1[MULT_BLOCK] - REDISTRIBUTE arrA1[GEN_BLOCK] */ -void distrmix14() -{ - #define AN1 35 - int m1 = 7; - int* BS1, * BS2; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2); - #pragma dvm array - int (*A1); - char tname[] = "distrmix14"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[genblock(BS1)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[genblock(BS2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR15*/ -/* DISTRIBUTE arrA1[WGT_BLOCK] - REDISTRIBUTE arrA1[GEN_BLOCK] - REDISTRIBUTE arrA1[WGT_BLOCK] */ -void distrmix15() -{ - #define AN1 10 - double wb1[6] = {1.0, 2., 2., 3.0, 1., 1.}; - double wb2[5] = {2.0, 1., 2., 2.0, 2.}; - int* BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - #pragma dvm array - int (*A1); - char tname[] = "distrmix15"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb1, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[genblock(BS)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[wgtblock(wb2, 5)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR16*/ -/* DISTRIBUTE arrA1[GEN_BLOCK] - REDISTRIBUTE arrA1[WGT_BLOCK] - REDISTRIBUTE arrA1[GEN_BLOCK]*/ -void distrmix16() -{ - #define AN1 12 - double wb[7] = {1.0, 2., 2., 3.0, 1., 1., 0.5}; - int* BS1, * BS2; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2); - #pragma dvm array - int (*A1); - char tname[] = "distrmix16"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[genblock(BS1)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - #pragma dvm redistribute(A1[wgtblock(wb, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] += 1; - } - #pragma dvm redistribute(A1[genblock(BS2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i + 1) - erri = Min(erri, i + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1); - free(BS2); - free(A1); - #undef AN1 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix2.cdv deleted file mode 100644 index afa6e73..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix2.cdv +++ /dev/null @@ -1,901 +0,0 @@ -/* DISTRMIX2 -Testing DISTRIBUTE and REDISTRIBUTE directive - GEN_BLOCK, WGT_BLOCK, MULT_BLOCK distributions -*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrmix21(); -static void distrmix22(); -static void distrmix23(); -static void distrmix24(); -static void distrmix25(); -static void distrmix26(); -static void distrmix27(); -static void distrmix28(); -static void distrmix29(); -static void distrmix210(); -static void distrmix211(); -static void distrmix212(); -static void distrmix213(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, errib, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMIX2 ===================\n"); - - /* 21 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK]*/ - distrmix21(); - /* 22 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK]*/ - distrmix22(); - /* 23 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK]*/ - distrmix23(); - /* 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK]*/ - distrmix24(); - /* 25 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK]*/ - distrmix25(); - /* 26 DISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK]*/ - distrmix26(); - /* 27 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK]*/ - distrmix27(); - /* 28 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK]*/ - distrmix28(); - /* 29 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][MULT_BLOCK]*/ - distrmix29(); - /* 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ - distrmix210(); - /* 211 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK]*/ - distrmix211(); - /* 212 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ - distrmix212(); - /* 213 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ - distrmix213(); - - printf("=== END OF DISTRMIX2 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount > 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -/* ---------------------------------------------DISTR21*/ -/*DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK]*/ -void distrmix21() -{ - #define AN1 10 - #define AN2 56 - int m11 = 2, m12 = 7; - int m21 = 5, m22 = 8; - double wb1[8] = {1.0, 2., 1., 3.2, 1.0, 1.5, 2.3, 2.}; - double wb2[7] = {1.3, 1.5, 2.2, 1.6, 2.6, 0.5, 1.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix21"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m11)][multblock(m12)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][wgtblock(wb2, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[multblock(m21)][multblock(m22)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR22*/ -/*DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK]*/ -void distrmix22() -{ - #define AN1 16 - #define AN2 32 - int m1 = 2, m2 = 4; - double wb1[7] = {2.4, 1.2, 3.0, 0.2, 1.5, 2.8, 2.1}; - double wb2[6] = {2.0, 1.2, 2.6, 1.6, 3.5, 0.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix22"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 7)][wgtblock(wb2, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[wgtblock(wb2, 6)][wgtblock(wb1, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR23*/ -/*DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK]*/ -void distrmix23() -{ - #define AN1 18 - #define AN2 12 - int m11 = 2, m12 = 2; - int m21 = 3, m22 = 3; - double wb1[10] = {2., 1.2, 2., 2.5, 0.2, 1.5, 1., 2.8, 2.1, 3.}; - double wb2[8] = {3.0, 3.5, 2.0, 1.2, 2.6, 1.6, 3.5, 0.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix23"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m11)][multblock(m12)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[wgtblock(wb1, 10)][multblock(m22)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[multblock(m21)][wgtblock(wb2, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR24*/ -/*DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK]*/ -void distrmix24() -{ - #define AN1 30 - #define AN2 30 - int m1 = 3, m2 = 5; - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix24"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[multblock(m2)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR25*/ -/*DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK]*/ -void distrmix25() -{ - #define AN1 16 - #define AN2 12 - int m1 = 2, m2 = 3; - int *BS1i, *BS1j, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix25"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS2i)][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR26*/ -/*DISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK]*/ -void distrmix26() -{ - #define AN1 52 - #define AN2 50 - int m1 = 13, m2 = 5; - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb1[6] = {2.4, 2.2, 0.2, 3.5, 1.2, 1.}; - double wb2[8] = {1.0, 2.5, 3.0, 2.8, 1.6, 1., 0.5, 1.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix26"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 6)][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - #pragma dvm redistribute(A2[multblock(m1)][wgtblock(wb2, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR27*/ -/*DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK]*/ -void distrmix27() -{ - #define AN1 8 - #define AN2 64 - int m1 = 2, m2 = 8; - int *BS; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS); - double wb[7] = {2., 3.2, 2., 3.5, 1.2, 1., 4.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix27"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[multblock(m1)][wgtblock(wb, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR28*/ -/*DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK]*/ -void distrmix28() -{ - #define AN1 42 - #define AN2 16 - int m1 = 3, m2 = 2; - int *BS; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS); - double wb1[6] = {2., 3., 1.2, 1.5, 1., 1.5}; - double wb2[7] = {2.2, 1.5, 3.0, 2.8, 2.6, 1.4, 0.5}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix28"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][genblock(BS)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb1, 6)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[block][wgtblock(wb2, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR29*/ -/*DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][MULT_BLOCK]*/ -void distrmix29() -{ - #define AN1 21 - #define AN2 48 - int m1 = 3, m2 = 2; - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb[9] = {2.2, 1.5, 3.0, 2.8, 2.6, 1.4, 0.5, 1., 2.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix29"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb, 9)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[block][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR210*/ -/*DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ -void distrmix210() -{ - #define AN1 9 - #define AN2 11 - - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb1[6] = {1.0, 1.2, 2.5, 1.4, 2.5, 1.3}; - double wb2[4] = {1.0, 2., 1.5, 1.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix210"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 6)][wgtblock(wb2, 4)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[wgtblock(wb2, 4)][wgtblock(wb1, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR211*/ -/*DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK]*/ -void distrmix211() -{ - #define AN1 16 - #define AN2 16 - - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb[7] = {1.0, 1.2, 2.5, 1.4, 2.5, 1.3, 2}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix211"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb, 7)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[block][wgtblock(wb, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR212*/ -/*DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK]*/ -void distrmix212() -{ - #define AN1 6 - #define AN2 28 - - int *BS1i, *BS1j, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - double wb1[8] = {1.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1., 2.}; - double wb2[5] = {2., 1.3, 2., 1.0, 1.7}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix212"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[genblock(BS1i)][genblock(BS1j)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb1, 6)][wgtblock(wb2, 4)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS2i)][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR213*/ -/*DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK]*/ -void distrmix213() -{ - #define AN1 27 - #define AN2 14 - int m1 = 3, m2 = 2; - int *BS1i, *BS1j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb[4] = {1.2, 1.6, 2.0, 1.8}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrmix213"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][genblock(BS1j)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb, 4)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] += 1; - } - #pragma dvm redistribute(A2[genblock(BS1i)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j + 1) - erri = Min(erri, i * NL + j + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(A2); - #undef AN1 - #undef AN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix3.cdv deleted file mode 100644 index b4c2214..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MIX/distrmix3.cdv +++ /dev/null @@ -1,1795 +0,0 @@ -/* DISTRMIX3 -Testing DISTRIBUTE and REDISTRIBUTE directive - GEN_BLOCK, WGT_BLOCK, MULT_BLOCK distributions -*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -#ifndef _DVMH -#define dvmh_get_num_procs(X) 1 -#endif - -static void distrmix31(); -static void distrmix32(); -static void distrmix33(); -static void distrmix34(); -static void distrmix35(); -static void distrmix36(); -static void distrmix37(); -static void distrmix38(); -static void distrmix39(); -static void distrmix310(); -static void distrmix311(); -static void distrmix312(); -static void distrmix313(); -static void distrmix314(); -static void distrmix315(); -static void distrmix316(); -static void distrmix317(); -static void distrmix318(); -static void distrmix319(); -static void distrmix320(); -static void distrmix321(); -static void distrmix322(); -static void distrmix323(); -static void distrmix324(); -static void distrmix325(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, errib, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMIX3 ===================\n"); - - /* 31 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ - distrmix31(); - /* 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ - distrmix32(); - /* 33 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ - distrmix33(); - /* 34 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ - distrmix34(); - /* 35 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE [WGT_BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][MULT_BLOCK][WGT_BLOCK]*/ - distrmix35(); - /* 36 DISTRIBUTE arrA3[WGT_BLOCK][MULT_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK]*/ - distrmix36(); - /* 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK]*/ - distrmix37(); - /* 38 DISTRIBUTE arrA3[MULT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][*][*] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][*]*/ - distrmix38(); - /* 39 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] - REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][MULT_BLOCK][*]*/ - distrmix39(); - /* 310 DISTRIBUTE arrA3[WGT_BLOCK][*][*] - REDISTRIBUTE [MULT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][WGT_BLOCK][MULT_BLOCK]*/ - distrmix310(); - - /* 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ - distrmix311(); - /* 312 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ - distrmix312(); - /* 313 DISTRIBUTE arrA3[BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][WGT_BLOCK]*/ - distrmix313(); - /* 314 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK]*/ - distrmix314(); - /* 315 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK]*/ - distrmix315(); - /* 316 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK]*/ - distrmix316(); - /* 317 DISTRIBUTE arrA3[GEN_BLOCK][*][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE [*][GEN_BLOCK][BLOCK]*/ - distrmix317(); - /* 318 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ - distrmix318(); - - /* 319 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ - distrmix319(); - /* 320 DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrB3[WGT_BLOCK][BLOCK][WGT_BLOCK]*/ - distrmix320(); - /* 321 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK]*/ - distrmix321(); - /* 322 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK]*/ - distrmix322(); - /* 323 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][*]*/ - distrmix323(); - /* 324 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE [*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][*][GEN_BLOCK]*/ - distrmix324(); - /* 325 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [*][WGT_BLOCK][*] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ - distrmix325(); - - printf("=== END OF DISTRMIX3 =====================\n"); - return 0; -} - -static int myRand() { - const unsigned a = 1103515245U; - const unsigned c = 12345U; - const unsigned m = ((unsigned)RAND_MAX) + 1U; - static unsigned prev = 5; - prev = (a * prev + c) % m; - return prev; -} - -static void genBlocksAxis(const int procCount, const int weight, const int withoutZero, int **blocks) { - *blocks = (int *)malloc(procCount * sizeof(int)); - int restWeight = weight, i, zeroind = -1; - if (!withoutZero && procCount > 1) - zeroind = myRand() % (procCount - 1); - for (i = 0; i < (procCount - 1); i++) { - if (i == zeroind) - (*blocks)[i] = 0; - else - (*blocks)[i] = 1 * withoutZero + myRand() % (restWeight - (procCount - (i + 1))); - restWeight -= (*blocks)[i]; - } - (*blocks)[i] = restWeight; -} - -/* ---------------------------------------------DISTR31*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ -void distrmix31() -{ - #define AN1 32 - #define AN2 32 - #define AN3 32 - int m11 = 4, m21 = 8, m31 = 2; - int m12 = 2, m22 = 4, m32 = 4; - double wb1[7] = {2.0, 1.5, 4., 3.0, 2., 3., 2.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[7] = {2.0, 2., 2.6, 3.0, 1., 1.5, 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix31"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m11)][multblock(m21)][multblock(m31)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][wgtblock(wb2, 8)][wgtblock(wb3, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m12)][multblock(m22)][multblock(m32)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR32*/ -/*DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] */ -void distrmix32() -{ - #define AN1 16 - #define AN2 16 - #define AN3 12 - int m1 = 2, m2 = 4, m3 = 4; - double wb1[6] = {2.0,5.,0.,3.0, 2., 3.}; - double wb2[8] = {1.2,2.,4.,2.5,3.,1.,3.,2.}; - double wb3[7] = {2.3,1.2,4.6,3.0, 1.5, 2.5, 1.2}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix32"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 8)][wgtblock(wb3, 7)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[wgtblock(wb2, 8)][wgtblock(wb3, 7)][wgtblock(wb1, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR33*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ -void distrmix33() -{ - #define AN1 12 - #define AN2 18 - #define AN3 20 - int m11 = 2, m21 = 3, m31 = 2; - int m12 = 6, m22 = 9, m32 = 5; - double wb1[7] = {2.2, 2.4, 4., 2.5, 3.5, 1.,3}; - double wb2[6] = {1.2, 2., 2.5, 3., 1.5, 3.}; - double wb3[5] = {4.3, 2.2, 2.6, 2.0, 2.5}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix33"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m11)][wgtblock(wb2, 6)][multblock(m31)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][multblock(m21)][wgtblock(wb3, 5)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m12)][multblock(m22)][multblock(m32)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR34*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ -void distrmix34() -{ - #define AN1 35 - #define AN2 28 - #define AN3 16 - int m1 = 7, m2 = 7, m3 = 4; - double wb1[8] = {2., 2., 4., 2.7, 3.5, 2., 1., 3.}; - double wb2[6] = {12., 2.5, 3., 1.5, 3., 2.}; - double wb3[7] = {4.,3., 2.2, 2.6, 2.0, 2.5, 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix34"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][wgtblock(wb2, 6)][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb2, 6)][multblock(m2)][wgtblock(wb3, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb3, 7)][wgtblock(wb1, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR35*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE [WGT_BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][MULT_BLOCK][WGT_BLOCK]*/ -void distrmix35() -{ - #define AN1 10 - #define AN2 21 - #define AN3 32 - int m1 = 2, m2 = 3, m3 = 4; - double wb1[7] = {2., 4., 3., 2.5, 5., 1., 2.}; - double wb2[10] = {1., 2., 5., 3., 1., 3., 2., 3., 2., 1.}; - double wb3[8] = {2.3, 2.2, 1.6, 1., 2.0, 2.5, 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix35"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb2, 10)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][block][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[block][multblock(m2)][wgtblock(wb3, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR36*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][MULT_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK]*/ -void distrmix36() -{ - #define AN1 16 - #define AN2 28 - #define AN3 16 - int m1 = 2, m2 = 7, m3 = 4; - double wb1[8] = {1.2, 2., 4., 2.5, 3., 1., 3., 2.}; - double wb2[7] = {2., 2., 4., 2.5, 3., 1., 3.}; - double wb3[7] = {2.5, 2.2, 4.2, 2.0, 1.5, 3.5, 1.2}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix36"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 8)][multblock(m2)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][block][wgtblock(wb3, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[block][wgtblock(wb2, 7)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR37*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK]*/ -void distrmix37() -{ - #define AN1 10 - #define AN2 10 - #define AN3 30 - int m1 = 2, m2 = 5, m3 = 3; - double wb2[6] = {4., 2.5, 3., 1., 3., 2.}; - double wb3[8] = {1., 2., 3., 3.5, 4., 1., 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix37"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][block][wgtblock(wb3, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[block][wgtblock(wb2, 6)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR38*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][*][*] - REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][*]*/ -void distrmix38() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - int m1 = 2, m2 = 1, m3 = 4; - double wb[11] = {2.2, 3.,3., 2.5, 2., 1., 4., 2., 1., 5., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix38"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][wgtblock(wb, 11)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[wgtblock(wb, 8)][multblock(m2)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR39*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] - REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][MULT_BLOCK][*]*/ -void distrmix39() -{ - #define AN1 18 - #define AN2 6 - #define AN3 30 - int m1 = 3, m2 = 2, m3 = 5; - double wb[11] = {3.2, 2., 2., 1.5, 4., 2., 3., 2.5, 1.6, 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix39"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb, 11)][*][wgtblock(wb, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[*][multblock(m2)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR310*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][*][*] - REDISTRIBUTE [MULT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE [*][WGT_BLOCK][MULT_BLOCK]*/ -void distrmix310() -{ - #define AN1 25 - #define AN2 35 - #define AN3 10 - int m1 = 5, m2 = 7, m3 = 2; - double wb[12] = {3., 1., 2., 1.5, 3., 4., 3., 2.5, 1.6, 3., 1.2, 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix310"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb, 12)][*][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][*][wgtblock(wb, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[*][wgtblock(wb, 8)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR311*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ -void distrmix311() -{ - #define AN1 15 - #define AN2 15 - #define AN3 28 - int m11 = 3, m21 = 5, m31 = 4; - int m12 = 5, m22 = 3, m32 = 7; - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix311"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m11)][multblock(m21)][multblock(m31)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m12)][multblock(m22)][multblock(m32)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR312*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK]*/ -void distrmix312() -{ - #define AN1 24 - #define AN2 10 - #define AN3 24 - int m1 = 3, m2 = 2, m3 = 4; - int *BS1i, *BS1j, *BS1k, *BS2i, *BS2j, *BS2k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2k); - double wb[10] = {2., 2.5, 3., 4., 3.5, 2.5, 2.6, 3., 2.2, 3.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix312"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb, 10)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[genblock(BS2i)][genblock(BS2j)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(BS2i); - free(BS2j); - free(BS2k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR313*/ -/* DISTRIBUTE arrA3[BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][WGT_BLOCK]*/ -void distrmix313() -{ - #define AN1 12 - #define AN2 24 - #define AN3 36 - int m1 = 2, m2 = 3, m3 = 4; - int *BS1j; - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - double wb[9] = {1., 2.5, 3., 4., 2.5, 2.6, 3.5, 4.2, 3.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix313"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][block][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][genblock(BS1j)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][wgtblock(wb, 9)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1j); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR314*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK]*/ -void distrmix314() -{ - #define AN1 24 - #define AN2 15 - #define AN3 12 - int m1 = 4, m2 = 3, m3 = 2; - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb[10] = {3., 2., 2., 4., 2., 3., 2.5, 2.6, 1.2, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix314"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb, 10)][block][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][block][genblock(BS1k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m1)][block][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR315*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK]*/ -void distrmix315() -{ - #define AN1 21 - #define AN2 14 - #define AN3 16 - int m1 = 3, m2 = 2, m3 = 4; - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[8] = {2., 4., 3., 1., 2.5, 2.6, 2.2, 2.}; - double wb2[10] = {4., 2., 2.5, 4., 2., 3., 3.5, 1.6, 3.2, 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix315"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 8)][wgtblock(wb2, 10)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][genblock(BS1j)][genblock(BS1k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 6)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR316*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK]*/ -void distrmix316() -{ - #define AN1 33 - #define AN2 44 - #define AN3 55 - int m1 = 3, m2 = 11, m3 = 5; - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[7] = {3., 2.5, 2., 4., 2.5, 2.0, 3.5}; - double wb2[8] = {4., 3., 2.5, 2., 2., 3., 3.5, 2.6}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix316"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][wgtblock(wb2, 8)][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb1, 7)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR317*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][*][GEN_BLOCK] - REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE [*][GEN_BLOCK][BLOCK]*/ -void distrmix317() -{ - #define AN1 12 - #define AN2 16 - #define AN3 12 - int m1 = 2, m2 = 4, m3 = 3; - int *BS1i, *BS1j, *BS2i; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS1j); - double wb[8] = {2., 1., 2.5, 3., 4., 3., 3.5, 4.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix317"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1i)][*][genblock(BS1j)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][wgtblock(wb, 8)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[*][genblock(BS2i)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR318*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ -void distrmix318() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int *BS1i, *BS1j, *BS1k, *BS2i, *BS2j, *BS2k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2k); - double wb1[7] = {2.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1.}; - double wb2[5] = {2., 1.3, 2., 1.0, 1.7}; - double wb3[6] = {2., 3., 1.3, 2., 1.0, 1.7}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix318"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][wgtblock(wb2, 5)][wgtblock(wb3, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[genblock(BS2i)][genblock(BS2j)][genblock(BS2k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(BS2i); - free(BS2j); - free(BS2k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR319*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ -void distrmix319() -{ - #define AN1 12 - #define AN2 6 - #define AN3 10 - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[6] = {2.0, 1.2, 2., 2.4, 2.3, 1.6}; - double wb2[5] = {2.4, 1.8, 2., 1.0, 1.7}; - double wb3[8] = {2., 3., 1.3, 2., 1.0, 1.7, 3., 4}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix319"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 5)][wgtblock(wb3, 8)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][genblock(BS1k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - #pragma dvm redistribute(A3[wgtblock(wb2, 5)][wgtblock(wb3, 6)][wgtblock(wb1, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR320*/ -/* DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK]*/ -void distrmix320() -{ - #define AN1 5 - #define AN2 7 - #define AN3 6 - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[7] = {2.0, 2.2, 3., 2.4, 2.3, 1.6, 0.5}; - double wb2[6] = {2.4, 1.8, 3., 2.0, 1.7, 1.}; - double wb3[8] = {1., 3.5, 2.3, 2., 1.5, 1.7, 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix320"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][genblock(BS1j)][genblock(BS1k)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][block][wgtblock(wb3, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR321*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK]*/ -void distrmix321() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[6] = {2.5, 3.6, 2.4, 2.3, 1.2, 0.5}; - double wb2[5] = {1.4, 2.8, 3., 3.0, 1.1}; - double wb3[7] = {1., 2.3, 2.2, 3.5, 1.7, 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix321"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][block][wgtblock(wb3, 7)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][block][genblock(BS1k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR322*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] - REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK]*/ -void distrmix322() -{ - #define AN1 24 - #define AN2 16 - #define AN3 8 - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[5] = {3.2, 2.4, 2.0, 1.0, 2.5}; - double wb2[4] = {2.1, 2.5, 3., 1.1}; - double wb3[6] = {2.3, 2.0, 3.5, 1.5, 3., 2.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix322"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1i)][block][genblock(BS1k)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][wgtblock(wb2, 4)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR323*/ -/* DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][*]*/ -void distrmix323() -{ - #define AN1 8 - #define AN2 11 - #define AN3 11 - int *BS1i, *BS1j, *BS1k; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - double wb1[7] = {3.2, 2.4, 1., 2., 2.0, 1.0, 2.5}; - double wb2[6] = {3.1, 2.5, 4., 2.1, 2, 2}; - double wb3[6] = {1.2, 3.0, 2.4, 1.0, 3., 2.5}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix323"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][wgtblock(wb2, 6)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR324*/ -/* DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][*] - REDISTRIBUTE [*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [GEN_BLOCK][*][GEN_BLOCK]*/ -void distrmix324() -{ - #define AN1 12 - #define AN2 12 - #define AN3 21 - int *BS1i, *BS1j, *BS1k, *BS2i, *BS2j; - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS1k); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS2j); - double wb1[7] = {2.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1.}; - double wb2[5] = {2., 1.3, 2., 1.0, 1.7}; - double wb3[6] = {2., 3., 1.3, 2., 1.0, 1.7}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix324"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[genblock(BS1i)][genblock(BS1j)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][wgtblock(wb2, 5)][wgtblock(wb3, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS2i)][*][genblock(BS2j)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS1k); - free(BS2i); - free(BS2j); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR325*/ -/* DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] - REDISTRIBUTE [*][WGT_BLOCK][*] - REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK]*/ -void distrmix325() -{ - #define AN1 7 - #define AN2 6 - #define AN3 7 - int *BS1i, *BS1j, *BS2i, *BS2j, *BS2k; - genBlocksAxis(dvmh_get_num_procs(1), AN2, 1, &BS1i); - genBlocksAxis(dvmh_get_num_procs(2), AN3, 1, &BS1j); - genBlocksAxis(dvmh_get_num_procs(1), AN1, 1, &BS2i); - genBlocksAxis(dvmh_get_num_procs(2), AN2, 1, &BS2j); - genBlocksAxis(dvmh_get_num_procs(3), AN3, 1, &BS2k); - double wb1[6] = {2., 1.3, 2., 1.0, 1.7, 1}; - double wb2[10] = {2.0, 1.2, 2.5, 1.0, 2.5, 1.3, 1., 3., 2., 1.}; - double wb3[6] = {2., 2., 4., 1.3, 2., 1.7}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrmix325"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[*][genblock(BS1i)][genblock(BS1j)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][wgtblock(wb2, 10)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] += 1; - } - - #pragma dvm redistribute(A3[genblock(BS2i)][genblock(BS2j)][genblock(BS2k)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k + 1) - erri = Min(erri, i*NL/10 + j*NL/100 + k + 1); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(BS1i); - free(BS1j); - free(BS2i); - free(BS2j); - free(BS2k); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult1.cdv deleted file mode 100644 index 9b1e5f3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult1.cdv +++ /dev/null @@ -1,474 +0,0 @@ -/* DISTRMULT1 - TESTING distribute and redistribute directive - MULT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrm11(); -static void distrm12(); -static void distrm13(); -static void distrm14(); -static void distrm15(); -static void distrm16(); -static void distrm17(); -static void distrm21(); -static void distrm22(); -static void distrm23(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMULT1 ===================\n"); - - /* 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] */ - distrm11(); - /* 12 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] */ - distrm12(); - /* 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] small array*/ - distrm13(); - /* 14 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array*/ - distrm14(); - /* 15 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] other m*/ - distrm15(); - /* 16 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[*]*/ - distrm16(); - /* 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[MULT_BLOCK]*/ - distrm17(); - /* 21 DISTRIBUTE arrA2[MULT_BLOCK][*] REDISTRIBUTE arrA2[*][MULT_BLOCK]*/ - distrm21(); - /* 22 DISTRIBUTE arrA2[*][MULT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distrm22(); - /* 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][MULT_BLOCK]*/ - distrm23(); - - printf("=== END OF DISTRMULT1 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR11*/ -/* DISTR arrA1[BLOCK] REDISTR arrA1[MULT_BLOCK]*/ -void distrm11() -{ - #define AN1 25 - int m = 5; - #pragma dvm array distribute[block] - int (*A1); - char tname[] = "distrm11"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[multblock(m)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR12*/ -/* DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] */ -void distrm12() -{ - #define AN1 48 - int m = 6; - #pragma dvm array - int (*A1); - char tname[] = "distrm12"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR13*/ -/* DISTR arrA1[BLOCK] REDISTR arrA1[MULT_BLOCK] small array */ -void distrm13() -{ - #define AN1 4 - int m = 4; - #pragma dvm array distribute[block] - int (*A1); - char tname[] = "distrm13"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[multblock(m)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR14*/ -/* DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array*/ -void distrm14() -{ - #define AN1 3 - int m = 3; - #pragma dvm array - int (*A1); - char tname[] = "distrm14"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR15*/ -/* DISTR arrA1[MULT_BLOCK] REDISTR arrA1[MULT_BLOCK] other m */ -void distrm15() -{ - #define AN1 24 - int m1 = 4, m2 = 3; - #pragma dvm array - int (*A1); - char tname[] = "distrm15"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m1)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR16*/ -/* DISTR arrA1[MULT_BLOCK] REDISTR arrA1[*]*/ -void distrm16() -{ - #define AN1 50 - int m = 2; - #pragma dvm array - int (*A1); - char tname[] = "distrm16"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[multblock(m)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR17*/ -/* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[MULT_BLOCK]*/ -void distrm17() -{ - #define AN1 120 - int m = 10; - #pragma dvm array distribute[*] - int (*A1); - char tname[] = "distrm17"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[multblock(m)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR21*/ -/* DISTRIBUTE arrA2[MULT_BLOCK][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] */ -void distrm21() -{ - #define AN1 36 - #define AN2 25 - int m1 = 6,m2 = 5; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm21"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR22*/ -/* DISTRIBUTE arrA2[*][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] */ -void distrm22() -{ - #define AN1 8 - #define AN2 121 - int m2 = 11; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm22"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR23*/ -/* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] */ -void distrm23() -{ - #define AN1 8 - #define AN2 63 - int m2 = 9; - #pragma dvm array distribute[*][*] - int (*A2)[AN2]; - char tname[] = "distrm23"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult2.cdv deleted file mode 100644 index ec70f83..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult2.cdv +++ /dev/null @@ -1,857 +0,0 @@ -/* DISTRMULT2 - TESTING distribute and redistribute directive - MULT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrm24(); -static void distrm25(); -static void distrm26(); -static void distrm27(); -static void distrm28(); -static void distrm29(); -static void distrm210(); -static void distrm32(); -static void distrm33(); -static void distrm34(); -static void distrm35(); -static void distrm36(); -static void distrm37(); -static void distrm38(); -static void distrm41(); -static void distrm42(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, ia, ib, n; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMULT2 ===================\n"); - - /* 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distrm24(); - /* 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK]*/ - distrm25(); - /* 26 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK]*/ - distrm26(); - /* 27 DISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK]*/ - distrm27(); - /* 28 DISTRIBUTE arrA2[MULT_BLOCK][BLOCK] - REDISTRIBUTE arrA2[BLOCK][MULT_BLOCK]*/ - distrm28(); - /* 29 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[MULT_BLOCK][BLOCK]*/ - distrm29(); - /* 210 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] other m1,m2*/ - distrm210(); - /* 32 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK] [*] - REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK]*/ - distrm32(); - /* 33 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK]*/ - distrm33(); - /* 34 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] - REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*]*/ - distrm34(); - /* 35 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[*][*]MULT_BLOCK]*/ - distrm35(); - /* 36 DISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] - REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK]*/ - distrm36(); - /* 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] - REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK]*/ - distrm37(); - /* 38 DISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] - REDISTRIBUTE arrA3[*][MULT_BLOCK][BLOCK]*/ - distrm38(); - /* 41 DISTRIBUTE arrA4[*][*][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA4[*][*][*][*]*/ - distrm41(); - /* 42 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] - REDISTRIBUTE arrA4[*][MULT_BLOCK][MULT_BLOCK][*]*/ - distrm42(); - - printf("=== END OF DISTRMULT2 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR24*/ -/* DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] */ -void distrm24() -{ - #define AN1 15 - #define AN2 12 - int m1 = 5,m2 = 3; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm24"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR25*/ -/* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK]*/ -void distrm25() -{ - #define AN1 18 - #define AN2 8 - int m1 = 3,m2 = 2; - #pragma dvm array distribute[*][*] - int (*A2)[AN2]; - char tname[] = "distrm25"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - - -/* ---------------------------------------------DISTR26*/ -/* DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK]*/ -void distrm26() -{ - #define AN1 49 - #define AN2 12 - int m1 = 7,m2 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm26"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR27*/ -/* DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK]*/ -void distrm27() -{ - #define AN1 8 - #define AN2 64 - int m1 = 1,m2 = 8; - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - char tname[] = "distrm27"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR28*/ -/* DISTRIBUTE arrA2[MULT_BLOCK][BLOCK] REDISTRIBUTE arrA2[BLOCK][MULT_BLOCK]*/ -void distrm28() -{ - #define AN1 20 - #define AN2 20 - int m1 = 5, m2 = 4; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm28"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[block][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR29*/ -/* DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[MULT_BLOCK][BLOCK]*/ -void distrm29() -{ - #define AN1 30 - #define AN2 60 - int m1 = 10,m2 = 10; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm29"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[multblock(m1)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR210*/ -/* DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] other m1, m2*/ -void distrm210() -{ - #define AN1 24 - #define AN2 24 - int m1 = 3,m2 = 2; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrm210"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[multblock(m1)][multblock(m2)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[multblock(m2)][multblock(m1)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR32*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK] [*] - REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK]*/ -void distrm32() -{ - #define AN1 16 - #define AN2 12 - #define AN3 8 - int m1 = 2, m2 = 3, m3 = 4; - #pragma dvm array - - int (*A3)[AN2][AN3]; - char tname[] = "distrm32"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR33*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[MULT_BLOCK][*][MULTBLOCK]*/ -void distrm33() -{ - #define AN1 16 - #define AN2 16 - #define AN3 8 - int m1 = 4, m2 = 2, m3 = 2; - #pragma dvm array - - int (*A3)[AN2][AN3]; - char tname[] = "distrm33"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][*][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR34*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] - REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*]*/ -void distrm34() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - int m1 = 2, m2 = 1, m3 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm34"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR35*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[*][*][MULT_BLOCK]*/ -void distrm35() -{ - #define AN1 18 - #define AN2 28 - #define AN3 38 - int m1 = 3, m2 = 7, m3 = 19; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm35"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR36*/ -/* DISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] - REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK]*/ -void distrm36() -{ - #define AN1 121 - #define AN2 12 - #define AN3 35 - int m1 = 11, m2 = 2, m3 = 7; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm36"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][*][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR37*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] - REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK]*/ -void distrm37() -{ - #define AN1 8 - #define AN2 28 - #define AN3 8 - int m1 = 2, m2 = 4, m3 = 2; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm37"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][*][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR38*/ -/*DISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK]*/ -void distrm38() -{ - #define AN1 8 - #define AN2 28 - #define AN3 8 - int m1 = 2, m2 = 4, m3 = 2; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm38"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][*][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR41*/ -/*DISTRIBUTE arrA4[*][*][MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA4[*][*][*][*]*/ -void distrm41() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - #define AN4 16 - int m1 = 2, m2 = 4, m3 = 2, m4 = 4; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrm41"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[*][*][multblock(m3)][multblock(m4)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - - #pragma dvm redistribute(A4[*][*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -/* ---------------------------------------------DISTR42*/ -/*DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] - REDISTRIBUTE arrA4[*][MULT_BLOCK][MULT_BLOCK][*]*/ -void distrm42() -{ - #define AN1 28 - #define AN2 25 - #define AN3 27 - #define AN4 21 - int m1 = 7, m2 = 5, m3 = 9, m4 = 3; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrm42"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[multblock(m1)][*][multblock(m3)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - - #pragma dvm redistribute(A4[*][multblock(m2)][multblock(m3)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult3.cdv deleted file mode 100644 index 6b5d849..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_MULT/distrmult3.cdv +++ /dev/null @@ -1,569 +0,0 @@ -/* DISTRMULT3 - TESTING distribute and redistribute directive - MULT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrm311(); -static void distrm312(); -static void distrm313(); -static void distrm314(); -static void distrm315(); -static void distrm316(); -static void distrm317(); -static void distrm318(); -static void distrm319(); -static void distrm43(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, ia, ib, n; - -int main(int an, char **as) -{ - printf("=== START OF DISTRMULT3 ===================\n"); - - /* 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK]*/ - distrm311(); - /* 312 DISTRIBUTE arrA3DISTRIBUTE [BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ - distrm312(); - /* 313 DISTRIBUTE arrA2[_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK]*/ - distrm313(); - /* 314 DISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] - REDISTRIBUTE arrA3[MULT_BLOCK][BLOCK][MULT_BLOCK]*/ - distrm314(); - /* 315 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] other m1,m2,m3*/ - distrm315(); - /* 316 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[*][*][*]*/ - distrm316(); - /* 317 DISTRIBUTE arrA3[*][*][*] - REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ - distrm317(); - /* 318 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] - REDISTRIBUTE arrA3[*][MULT_BLOCK][*]*/ - distrm318(); - /* 319 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK]*/ - distrm319(); - /* 43 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] - REDISTRIBUTE arrA4[[*][MULT_BLOCK][*][MULT_BLOCK]*/ - distrm43(); - - printf("=== END OF DISTRMULT3 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR311*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK]*/ -void distrm311() -{ - #define AN1 14 - #define AN2 12 - #define AN3 10 - int m1 = 7, m2 = 3, m3 = 5; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm311"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR312*/ -/*DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ -void distrm312() -{ - #define AN1 15 - #define AN2 15 - #define AN3 25 - int m1 = 5, m2 = 5, m3 = 5; - #pragma dvm array distribute[block][block][block] - int (*A3)[AN2][AN3]; - char tname[] = "distrm312"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR313*/ -/*DISTRIBUTE arrA2[MULT_BLOCK][BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK]*/ -void distrm313() -{ - #define AN1 24 - #define AN2 24 - #define AN3 24 - int m1 = 2, m2 = 3, m3 = 4; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm313"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][block][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][multblock(m2)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR314*/ -/*DISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] - REDISTRIBUTE arrA3[MULT_BLOCK][BLOCK][MULT_BLOCK]*/ -void distrm314() -{ - #define AN1 20 - #define AN2 30 - #define AN3 30 - int m1 = 5, m2 = 3, m3 = 3; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm314"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][multblock(m2)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][block][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR315*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] other m1,m2,m3*/ -void distrm315() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - int m1 = 2, m2 = 4, m3 = 8; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm315"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m3)][multblock(m1)][multblock(m2)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR316*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - REDISTRIBUTE arrA2[*][*][*]*/ -void distrm316() -{ - #define AN1 12 - #define AN2 12 - #define AN3 48 - int m1 = 3, m2 = 2, m3 = 6; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm316"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR317*/ -/*DISTRIBUTE arrA3[*][*][*] - REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK]*/ -void distrm317() -{ - #define AN1 10 - #define AN2 35 - #define AN3 10 - int m1 = 2, m2 = 5, m3 = 2; - #pragma dvm array distribute[*][*][*] - int (*A3)[AN2][AN3]; - char tname[] = "distrm317"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[multblock(m1)][multblock(m2)][multblock(m3)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR318*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] - REDISTRIBUTE arrA3[*][MULT_BLOCK][*]*/ -void distrm318() -{ - #define AN1 11 - #define AN2 14 - #define AN3 24 - int m1 = 1, m2 = 2, m3 = 6; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm318"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m1)][*][multblock(m3)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][multblock(m2)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR319*/ -/*DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK]*/ -void distrm319() -{ - #define AN1 30 - #define AN2 12 - #define AN3 30 - int m11 = 2, m12 = 2, m13 = 2; - int m21 = 5, m22 = 4, m23 = 10; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrm319"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[multblock(m11)][multblock(m12)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][multblock(m22)][multblock(m23)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR43*/ -/*DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] - REDISTRIBUTE arrA4[*][MULT_BLOCK][*][MULT_BLOCK]*/ -void distrm43() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - #define AN4 16 - int m1 = 2, m2 = 4, m3 = 2, m4 = 4; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrm43"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[multblock(m1)][*][multblock(m3)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - - #pragma dvm redistribute(A4[*][multblock(m2)][*][multblock(m4)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt1.cdv deleted file mode 100644 index 2d6ecb2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt1.cdv +++ /dev/null @@ -1,483 +0,0 @@ -/* DISTRWGT1 - Testing DISTRIBUTE and REDISTRIBUTE directives - WGT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrwgt11(); -static void distrwgt12(); -static void distrwgt13(); -static void distrwgt14(); -static void distrwgt15(); -static void distrwgt16(); -static void distrwgt17(); -static void distrwgt21(); -static void distrwgt22(); -static void distrwgt23(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRWGT1 ===================\n"); - /* 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK]*/ - distrwgt11(); - - /* DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] */ - distrwgt12(); - - /* DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] small array*/ - distrwgt13(); - - /* DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array*/ - distrwgt14(); - - /* DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] other weights*/ - distrwgt15(); - - /* DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*]*/ - distrwgt16(); - - /* DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[WGT_BLOCK]*/ - distrwgt17(); - - /* DISTRIBUTE arrA2[WGT_BLOCK][*] REDISTRIBUTE arrA2[*][WGT_BLOCK]*/ - distrwgt21(); - - /*DISTRIBUTE arrA2[*][WGT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distrwgt22(); - - /* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][WGT_BLOCK]*/ - distrwgt23(); - - printf("=== END OF DISTRWGT1 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR11*/ -/* 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK]*/ -void distrwgt11() -{ - #define AN1 16 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array distribute[block] - int (*A1); - char tname[] = "distrwgt11"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR12*/ -/* 11 12 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK]*/ -void distrwgt12() -{ - #define AN1 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A1); - char tname[] = "distrwgt12"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR13*/ -/* 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] small array*/ -void distrwgt13() -{ - #define AN1 5 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array distribute[block] - int (*A1); - char tname[] = "distrwgt13"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR14*/ -/* 14 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array*/ -void distrwgt14() -{ - #define AN1 5 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A1); - char tname[] = "distrwgt14"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[block]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR15*/ -/* 15 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] other weights*/ -void distrwgt15() -{ - #define AN1 16 - double wb1[6] = {1.0, 2., 2., 3.0, 1., 1.}; - double wb2[6] = {2.0, 1., 2., 2.0, 2., 1.}; - #pragma dvm array - int (*A1); - char tname[] = "distrwgt15"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb1, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[wgtblock(wb2, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR16*/ -/* 16 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*]*/ -void distrwgt16() -{ - #define AN1 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A1); - char tname[] = "distrwgt16"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[*]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR17*/ -/* 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[WGT_BLOCK]*/ -void distrwgt17() -{ - #define AN1 28 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array distribute[*] - int (*A1); - char tname[] = "distrwgt17"; - - erri = ER; - - A1 = malloc(AN1 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) cuda_block(256) - for (i = 0; i < AN1; i++) - A1[i] = i; - } - - #pragma dvm redistribute(A1[wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - if (A1[i] != i) - erri = Min(erri, i); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A1); - #undef AN1 -} - -/* ---------------------------------------------DISTR17*/ -/* 21 DISTRIBUTE arrA2[WGT_BLOCK][*] REDISTRIBUTE arrA2[*][WGT_BLOCK]*/ -void distrwgt21() -{ - #define AN1 8 - #define AN2 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt21"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb, 6)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR22*/ -/* 22 DISTRIBUTE arrA2[*][WGT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ -void distrwgt22() -{ - #define AN1 8 - #define AN2 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt22"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[*][wgtblock(wb, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR23*/ -/* 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][WGT_BLOCK]*/ -void distrwgt23() -{ - #define AN1 8 - #define AN2 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array distribute[*][*] - int (*A2)[AN2]; - char tname[] = "distrwgt23"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt2.cdv deleted file mode 100644 index fa143fe..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt2.cdv +++ /dev/null @@ -1,859 +0,0 @@ -/* DISTRWGT2 - Testing DISTRIBUTE and REDISTRIBUTE directives - WGT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrwgt24(); -static void distrwgt25(); -static void distrwgt26(); -static void distrwgt27(); -static void distrwgt28(); -static void distrwgt29(); -static void distrwgt210(); -static void distrwgt32(); -static void distrwgt33(); -static void distrwgt34(); -static void distrwgt35(); -static void distrwgt36(); -static void distrwgt37(); -static void distrwgt38(); -static void distrwgt41(); -static void distrwgt42(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, n, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF DISTRWGT2 ===================\n"); - /* 24 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ - distrwgt24(); - /* 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ - distrwgt25(); - /* 26 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[BLOCK][BLOCK]*/ - distrwgt26(); - /* 27 DISTRIBUTE arrA2[BLOCK][BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ - distrwgt27(); - /* 28 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK]*/ - distrwgt28(); - /* 29 DISTRIBUTE arrA2[BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[WGT_BLOCK][BLOCK]*/ - distrwgt29(); - /* 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] other weigths - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK]*/ - distrwgt210(); - /* 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK] [*] - REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK]*/ - distrwgt32(); - /* 33 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK]*/ - distrwgt33(); - /* 34 DISTRIBUTE arrA3[WGT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*]*/ - distrwgt34(); - /* 35 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE arrA3[*][*][WGT_BLOCK]*/ - distrwgt35(); - /* 36 DISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] - REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK]*/ - distrwgt36(); - /* 37 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][*] - REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK]*/ - distrwgt37(); - /* 38 DISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] - REDISTRIBUTE arrA3[*][WGT_BLOCK][BLOCK]*/ - distrwgt38(); - /* 41 DISTRIBUTE arrA4[*][*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA4[*][*][*][*]*/ - distrwgt41(); - /* 42 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][*] - REDISTRIBUTE arrA4[*][WGT_BLOCK][WGT_BLOCK][*]*/ - distrwgt42(); - - printf("=== END OF DISTRWGT2 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR24*/ -/* 24 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[*][*]*/ -void distrwgt24() -{ - #define AN1 8 - #define AN2 8 - double wb1[4] = {2., 2., 3.0, 1.}; - double wb2[6] = {3.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt24"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 4)][wgtblock(wb2, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR25*/ -/* DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt25() -{ - #define AN1 8 - #define AN2 8 - double wb1[5] = {1.0,2.,2.,3.0, 0.}; - double wb2[7] = {1.0,1.,2.,1.0, 1.,1.,1.}; - #pragma dvm array distribute[*][*] - int (*A2)[AN2]; - char tname[] = "distrwgt25"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb1, 5)][wgtblock(wb2, 7)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR26*/ -/* DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[BLOCK][BLOCK]*/ -void distrwgt26() -{ - #define AN1 12 - #define AN2 12 - double wb[6] = {1.0, 4., 1., 1.0, 2., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt26"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb, 6)][wgtblock(wb, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR27*/ -/* DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt27() -{ - #define AN1 8 - #define AN2 8 - double wb[6] = {2.0, 1., 3., 2.0, 1., 1.}; - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - char tname[] = "distrwgt27"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb, 6)][wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR28*/ -/* DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK]*/ -void distrwgt28() -{ - #define AN1 12 - #define AN2 12 - double wb1[8] = {1.0, 2., 2., 3.0, 1., 1, 2, 4.}; - double wb2[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt28"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 8)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[block][wgtblock(wb2, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR29*/ -/* DISTRIBUTE arrA2[BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[WGT_BLOCK][BLOCK]*/ -void distrwgt29() -{ - #define AN1 12 - #define AN2 12 - double wb1[6] = {1.0, 2., 2., 3.0, 3, 1}; - double wb2[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt29"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[block][wgtblock(wb1, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb2, 6)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR210*/ -/* DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] with other weigths*/ -void distrwgt210() -{ - #define AN1 12 - #define AN2 12 - double wb1[4] = {1.0, 2., 1., 1.0}; - double wb2[6] = {1.0, 1., 2., 1.0, 2., 1.}; - #pragma dvm array - int (*A2)[AN2]; - char tname[] = "distrwgt210"; - - erri = ER; - - A2 = malloc(AN1 * AN2 * sizeof(int)); - #pragma dvm redistribute(A2[wgtblock(wb1, 4)][wgtblock(wb2, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } - - #pragma dvm redistribute(A2[wgtblock(wb2, 6)][wgtblock(wb1, 4)]) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - if (A2[i][j] != i * NL + j) - erri = Min(erri, i * NL + j); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------DISTR32*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt32() -{ - #define AN1 16 - #define AN2 12 - #define AN3 8 - double wb1[7] = {1., 1., 2., 1.0, 2., 2., 3.0}; - double wb2[8] = {1.0, 2., 2., 3.0, 2, 1, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt32"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 7)][wgtblock(wb2, 6)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][wgtblock(wb2, 6)][wgtblock(wb1, 4)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR33*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - REDISTRIBUTE arrA3[WGT_BLOCK][*][WGT_BLOCK]*/ -void distrwgt33() -{ - #define AN1 16 - #define AN2 16 - #define AN3 8 - double wb[10] = {1.0, 2., 2., 3.0, 2., 4, 2., 1., 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt33"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb, 6)][wgtblock(wb, 8)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb, 10)][*][wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR34*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][*][WGT_BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*]*/ -void distrwgt34() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb[8] = {1.0, 2., 2., 3.0, 1., 2, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt34"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb, 6)][*][wgtblock(wb, 8)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb, 8)][wgtblock(wb, 6)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR35*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][*] - REDISTRIBUTE arrA3[*][*][WGT_BLOCK]*/ -void distrwgt35() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {1.0, 2., 2., 3.0, 1.5, 2.5}; - double wb2[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt35"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][block][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][wgtblock(wb2, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR36*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] - REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK]*/ -void distrwgt36() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb[6] = {.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt36"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb, 6)][*][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][*][wgtblock(wb, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR37*/ -/*DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][*] - REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK]*/ -void distrwgt37() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {0.5, 1, 1.0, 2., 2., 3.0}; - double wb2[8] = {1.0, 2., 2., 3.0, 0.5, 2, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt37"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][block][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][*][wgtblock(wb2, 8)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR38*/ -/*DISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt38() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {1.0, 2., 2., 3.0, 4, 5}; - double wb2[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt38"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][*][wgtblock(wb1, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][wgtblock(wb1, 6)][wgtblock(wb2, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR41*/ -/*DISTRIBUTE arrA4[*][*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA4[*][*][*][*]*/ -void distrwgt41() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #define AN4 8 - double wb[8] = {1.0, 2., 2., 3.0, 1., 1., 2, 1}; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrwgt41"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[*][*][wgtblock(wb, 6)][wgtblock(wb, 8)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - #pragma dvm redistribute(A4[*][*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -/* ---------------------------------------------DISTR42*/ -/*DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][*] REDISTRIBUTE arrA4[*][WGT_BLOCK][WGT_BLOCK][*]*/ -void distrwgt42() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #define AN4 8 - double wb[6] = {1.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrwgt42"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[wgtblock(wb, 6)][*][wgtblock(wb, 6)][*]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - - #pragma dvm redistribute(A4[*][wgtblock(wb, 6)][wgtblock(wb, 6)][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt3.cdv deleted file mode 100644 index 1c9c9aa..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/DISTR_WGT/distrwgt3.cdv +++ /dev/null @@ -1,478 +0,0 @@ -/* DISTRWGT3 - Testing DISTRIBUTE and REDISTRIBUTE directives - WGT_BLOCK distribution*/ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void distrwgt39(); -static void distrwgt310(); -static void distrwgt311(); -static void distrwgt312(); -static void distrwgt313(); -static void distrwgt314(); -static void distrwgt315(); -static void distrwgt41(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, k, ia, ib, n; - -int main(int an, char **as) -{ - printf("=== START OF DISTRWGT3 ===================\n"); - /* 39 DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ - distrwgt39(); - /* 310 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK]*/ - distrwgt310(); - /* 311 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] other weigths*/ - distrwgt311(); - /* 312 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK]*/ - distrwgt312(); - /* 313 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK]*/ - distrwgt313(); - /* 314 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA2[*][*][*]*/ - distrwgt314(); - /* 315 DISTRIBUTE arrA3[*][*][*] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ - distrwgt315(); - /* 41 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA4[BLOCK][WGT_BLOCK][BLOCK][*]*/ - distrwgt41(); - - printf("=== END OF DISTRWGT3 =====================\n"); - return 0; -} - -/* ---------------------------------------------DISTR39*/ -/* DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt39() -{ - #define AN1 16 - #define AN2 16 - #define AN3 16 - double wb1[6] = {3.0, 1., 2., 2.0, 2.5, 1.2}; - double wb2[7] = {1., 3., 4.0, 1., 2., 2., 4.}; - double wb3[6] = {5.0, 1., 3., 6.0, 2., 4.}; - #pragma dvm array distribute[block][block][block] - - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt39"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 7)][wgtblock(wb3, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR310*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [BLOCK][BLOCK][BLOCK]*/ -void distrwgt310() -{ - #define AN1 12 - #define AN2 12 - #define AN3 24 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt310"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 8)][wgtblock(wb3, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][block][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR311*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] other weigths*/ -void distrwgt311() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt311"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 6)][wgtblock(wb3, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb3, 6)][wgtblock(wb1, 6)][wgtblock(wb2, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR312*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK]*/ -void distrwgt312() -{ - #define AN1 10 - #define AN2 10 - #define AN3 30 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt312"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][block][wgtblock(wb3, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[block][wgtblock(wb2, 8)][block]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR313*/ -/* DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - REDISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK]*/ -void distrwgt313() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt313"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[block][wgtblock(wb2, 8)][block]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][block][wgtblock(wb3, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR314*/ -/* DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA3[*][*][*]*/ -void distrwgt314() -{ - #define AN1 8 - #define AN2 12 - #define AN3 24 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt314"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 8)][wgtblock(wb3, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[*][*][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR315*/ -/* DISTRIBUTE arrA3[*][*][*] - REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK]*/ -void distrwgt315() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array distribute[*][*][*] - int (*A3)[AN2][AN3]; - char tname[] = "distrwgt315"; - - erri = ER; - - A3 = malloc(AN1 * AN2 * AN3 * sizeof(int)); - - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - A3[i][j][k] = i*NL/10 + j*NL/100 + k; - } - - #pragma dvm redistribute(A3[wgtblock(wb1, 6)][wgtblock(wb2, 8)][wgtblock(wb3, 6)]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on A3[i][j][k]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - if (A3[i][j][k] != i*NL/10 + j*NL/100 + k) - erri = Min(erri, i*NL/10 + j*NL/100 + k); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A3); - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------DISTR41*/ -/*DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][WGT_BLOCK] - REDISTRIBUTE arrA4[BLOCK][WGT_BLOCK][BLOCK][*]*/ -void distrwgt41() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #define AN4 8 - double wb1[6] = {2.0, 1., 1., 3.0, 2., 1.}; - double wb2[8] = {1.0, 1., 2., 2.0, 1., 1., 2., 2.}; - double wb3[6] = {2.0, 2., 2., 3.0, 1., 1.}; - #pragma dvm array - int (*A4)[AN2][AN3][AN4]; - char tname[] = "distrwgt41"; - - erri = ER; - - A4 = malloc(AN1 * AN2 * AN3 * AN4 * sizeof(int)); - #pragma dvm redistribute(A4[wgtblock(wb1, 6)][*][wgtblock(wb2, 8)][wgtblock(wb3, 6)]) - - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - A4[i][j][k][n] = i*NL/10+j*NL/100+k*NL/1000+n; - } - - #pragma dvm redistribute(A4[block][wgtblock(wb3, 6)][block][*]) - #pragma dvm region - { - #pragma dvm parallel([i][j][k][n] on A4[i][j][k][n]) reduction(min(erri)), cuda_block(256) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (k = 0; k < AN3; k++) - for (n = 0; n < AN4; n++) - if (A4[i][j][k][n] != i*NL/10+j*NL/100+k*NL/1000+n) - erri = Min(erri, i*NL/10+j*NL/100+k*NL/1000+n); - } - - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - free(A4); - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fopen11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fopen11.cdv deleted file mode 100644 index 7a23b26..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fopen11.cdv +++ /dev/null @@ -1,181 +0,0 @@ - -/* TESTING OF THE function fopen - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 - -static void fop1101(); -static void fop1102(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START TFOPEN11========================\n"); - fop1101(); - fop1102(); - - printf("=== END OF TFOPEN11 ========================= \n"); - return 0; -} -/* -------------------------------------------------fop1101 */ - void fop1101() -{ - - - char tname[]="FOPEN_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFOP01_%04d.txt", "wl"))==NULL) { - printf("ERROR OPENING FILE ARFOP01_%%4d.txt \n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFOP01_%04d.txt", "rl"))==NULL) { - printf("ERROR OPENING FILE ARFOP_%%4d.txt \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - dvmh_remove_local("ARFOP01_%04d.txt"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* -------------------------------------------------fop1102 */ - void fop1102() -{ - - - char tname[]="FOPEN_1102"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFOP02.txt", "wp"))==NULL) { - printf("ERROR OPENING FILE ARFOP02.txt \n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFOP02.txt", "rp"))==NULL) { - printf("ERROR OPENING FILE ARFOP02.txt \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - remove("ARFOP02.txt"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc11.cdv deleted file mode 100644 index 149ce7c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc11.cdv +++ /dev/null @@ -1,105 +0,0 @@ - -/* TESTING OF THE function fprintf and fscanf - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void prsc1101(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fpsc11========================\n"); - prsc1101(); - - printf("=== END OF fpsc11 ========================= \n"); - return 0; -} -/* ---------------------------------------------prsc1101 */ - void prsc1101() -{ - - - char tname[]="FPRINT_FSCANF_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFPSC11", "wb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC11\n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFPSC11", "rb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC11\n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - remove("ARFPSC11"); - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc12.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc12.cdv deleted file mode 100644 index 91c8a63..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc12.cdv +++ /dev/null @@ -1,105 +0,0 @@ - -/* TESTING OF THE function fprintf and fscanf - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void prsc1201(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fpsc12========================\n"); - prsc1201(); - - printf("=== END OF fpsc12 ========================= \n"); - return 0; -} -/* ---------------------------------------------prsc1201 */ - void prsc1201() -{ - - - char tname[]="FPRINT_FSCANF_1201"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[*] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFPSC12", "wb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC12\n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFPSC12", "rb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC12\n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - remove("ARFPSC12"); - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc21.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc21.cdv deleted file mode 100644 index 7ab27a3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc21.cdv +++ /dev/null @@ -1,112 +0,0 @@ - -/* TESTING OF THE function fprintf and fscanf - FOR DISTRIBUTED ARRAY A[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 4 -#define NL 1000 -static void prsc2101(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fpsc21========================\n"); - prsc2101(); - - printf("=== END OF fpsc21 ========================= \n"); - return 0; -} -/* ---------------------------------------------prsc2101 */ - void prsc2101() -{ - - - char tname[]="FPRINT_FSCANF_2101"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFPSC21", "wb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC21 \n"); - exit(1); - } - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { - #pragma dvm remote_access(A[i][j]) - { - na=A[i][j]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFPSC21", "rb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC21 \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { - ni=fscanf(fp, "%d ",&nb); - B[i][j]=nb; - } - fclose(fp); - remove("ARFPSC21"); - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc22.cdv deleted file mode 100644 index bf85877..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fpsc22.cdv +++ /dev/null @@ -1,112 +0,0 @@ - -/* TESTING OF THE function fprintf and fscanf - FOR DISTRIBUTED ARRAY A[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 4 -#define NL 1000 -static void prsc2201(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fpsc22========================\n"); - prsc2201(); - - printf("=== END OF fpsc22 ========================= \n"); - return 0; -} -/* ---------------------------------------------prsc2201 */ - void prsc2201() -{ - - - char tname[]="FPRINT_FSCANF_2201"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[*][block] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARFPSC22", "wb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC22 \n"); - exit(1); - } - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { - #pragma dvm remote_access(A[i][j]) - { - na=A[i][j]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if ((fp=fopen("ARFPSC22", "rb"))==NULL) { - printf("ERROR OPENING FILE ARFPSC22 \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { - ni=fscanf(fp, "%d ",&nb); - B[i][j]=nb; - } - fclose(fp); - remove("ARFPSC22"); - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre11.cdv deleted file mode 100644 index 6cf7d5e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre11.cdv +++ /dev/null @@ -1,236 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void wrre1101(); -static void wrre1102(); -static void wrre1103(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre11========================\n"); - wrre1101(); - wrre1102(); - wrre1103(); - - printf("=== END OF fwrre11 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre1101 */ - void wrre1101() -{ - - - char tname[]="FWRITE_FREAD_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre1102 */ - void wrre1102() -{ - - - char tname[]="FWRITE_FREAD_1102"; - int i,nloopi,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre1103 */ - void wrre1103() -{ - - - char tname[]="FWRITE_FREAD_1103"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE03", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE03"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre12.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre12.cdv deleted file mode 100644 index 2233ba5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre12.cdv +++ /dev/null @@ -1,236 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR LOCAL ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void wrre1201(); -static void wrre1202(); -static void wrre1203(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre12========================\n"); - wrre1201(); - wrre1202(); - wrre1203(); - - printf("=== END OF fwrre12 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre1201 */ - void wrre1201() -{ - - - char tname[]="FWRITE_FREAD_1201"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[*] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre1202 */ - void wrre1202() -{ - - - char tname[]="FWRITE_FREAD_1202"; - int i,nloopi,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[*] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre1203 */ - void wrre1203() -{ - - - char tname[]="FWRITE_FREAD_1203"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[*] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE03", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE03"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre21.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre21.cdv deleted file mode 100644 index 784ac13..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre21.cdv +++ /dev/null @@ -1,242 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR DISTRIBUTED ARRAY A[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 16 -#define NL 1000 -static void wrre2101(); -static void wrre2102(); -static void wrre2103(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre21========================\n"); - wrre2101(); - wrre2102(); - wrre2103(); - - printf("=== END OF fwrre21 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre2101 */ - void wrre2101() -{ - - - char tname[]="FWRITE_FREAD_2101"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N*M, fp)!=N*M) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N*M, fp)!=N*M) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi),min(nloopj)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre2102 */ - void wrre2102() -{ - - - char tname[]="FWRITE_FREAD_2102"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre2103 */ - void wrre2103() -{ - - - char tname[]="FWRITE_FREAD_2103"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03_%04d", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE03_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE03_%04d", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - remove("ARWRRE03_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre22.cdv deleted file mode 100644 index fba4f43..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre22.cdv +++ /dev/null @@ -1,242 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR DISTRIBUTED ARRAY A[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 16 -#define NL 1000 -static void wrre2201(); -static void wrre2202(); -static void wrre2203(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre22========================\n"); - wrre2201(); - wrre2202(); - wrre2203(); - - printf("=== END OF fwrre22 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre2201 */ - void wrre2201() -{ - - - char tname[]="FWRITE_FREAD_2201"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block][*] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N*M, fp)!=N*M) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N*M, fp)!=N*M) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi),min(nloopj)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre2202 */ - void wrre2202() -{ - - - char tname[]="FWRITE_FREAD_2202"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][*] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre2203 */ - void wrre2203() -{ - - - char tname[]="FWRITE_FREAD_2203"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][*] - int A[N][M]; - #pragma dvm array align ([i][j] with A[i][j]) - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03_%04d", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE03_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE03_%04d", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - remove("ARWRRE03_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre23.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre23.cdv deleted file mode 100644 index 429a047..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre23.cdv +++ /dev/null @@ -1,242 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR DISTRIBUTED ARRAY A[N][M] AND LOCAL B[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 16 -#define NL 1000 -static void wrre2301(); -static void wrre2302(); -static void wrre2303(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre23========================\n"); - wrre2301(); - wrre2302(); - wrre2303(); - - printf("=== END OF fwrre23 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre2301 */ - void wrre2301() -{ - - - char tname[]="FWRITE_FREAD_2301"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array distribute[*][*] - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N*M, fp)!=N*M) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N*M, fp)!=N*M) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi),min(nloopj)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre2302 */ - void wrre2302() -{ - - - char tname[]="FWRITE_FREAD_2302"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[*][*] - int A[N][M]; - #pragma dvm array distribute[*][*] - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre2303 */ - void wrre2303() -{ - - - char tname[]="FWRITE_FREAD_2303"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array distribute[*][*] - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03_%04d", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE03_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE03_%04d", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - remove("ARWRRE03_%04d"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre24.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre24.cdv deleted file mode 100644 index 366dc21..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/fwrre24.cdv +++ /dev/null @@ -1,297 +0,0 @@ - -/* TESTING OF THE function fwrite and fread - FOR DISTRIBUTED ARRAY A[N][M] AND B[N][M]. -*/ -#include -#include -#include -#define N 8 -#define M 16 -#define NL 1000 -static void wrre2401(); -static void wrre2402(); -static void wrre2403(); -static void wrre2404(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START fwrre24========================\n"); - wrre2401(); - wrre2402(); - wrre2403(); - wrre2404(); - - printf("=== END OF fwrre24 ========================= \n"); - return 0; -} -/* ---------------------------------------------wrre2401 */ - void wrre2401() -{ - - - char tname[]="FWRITE_FREAD_2401"; - int i,j,nloopi,nloopj,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE01", "wb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01\n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N*M, fp)!=N*M) - printf("ERROR WRITING FILE ARWRRE01\n"); - fclose(fp); - - if ((fp=fopen("ARWRRE01", "rb"))==NULL) { - printf("ERROR OPENING FILE ARWRRE01 \n"); - exit(1); - } -// rewind(fp); - if (fread(B, sizeof(int), N*M, fp)!=N*M) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - remove("ARWRRE01"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi),min(nloopj)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------wrre2402 */ - void wrre2402() -{ - - - char tname[]="FWRITE_FREAD_2402"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - int A[N][M]; - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - } - - if((fp=fopen("ARWRRE02_%04d", "wbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); - fclose(fp); - - if ((fp=fopen("ARWRRE02_%04d", "rbl"))==NULL) { - printf("ERROR OPENING FILE ARWRRE02_%%04d\n"); - exit(1); - } - K=fread(B, sizeof(int), N*M, fp); - fclose(fp); - dvmh_remove_local("ARWRRE02_%04d"); - - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre2403 */ - void wrre2403() -{ - - - char tname[]="FWRITE_FREAD_2403"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - #pragma dvm array distribute[block][block] - int A[N][M]; - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on A[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - { A[i][j] = NL+i+j; - B[i][j]=777; - - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE03", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE03\n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE03", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE03\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - remove("ARWRRE03"); - - #pragma dvm parallel ([i][j] on A[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (A[i][j] !=B[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* ---------------------------------------------wrre2404 */ - void wrre2404() -{ - - - char tname[]="FWRITE_FREAD_2404"; - int i,j,nloopi,nloopj,ni,nb,na,K; - FILE *fp; - - int A[N][M]; - #pragma dvm array distribute[block][block] - int B[N][M]; - - - - nloopi=NL; - nloopj=NL; - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i][j] on B[i][j]) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - B[i][j]=777; - - } /*end region*/ - for (i=0;i<=N-1;i++) - for(j=0;j<=M-1;j++) - A[i][j]=NL+i+j; - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARWRRE04", "wbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE04 \n"); - exit(1); - } - - K=fwrite(A, sizeof(int), N*M, fp); -// printf("NUMBER=%d\n",K); - fclose(fp); - - if ((fp=fopen("ARWRRE04", "rbp"))==NULL) { - printf("ERROR OPENING FILE ARWRRE04\n"); - exit(1); - } -// rewind(fp); - K=fread(B, sizeof(int), N*M, fp); -// printf("NUMBER1=%d\n",K); - fclose(fp); - remove("ARWRRE04"); - - #pragma dvm parallel ([i][j] on B[i][j]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - for (j=0;j<=M-1;j++) - if (B[i][j] !=A[i][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/remove11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/remove11.cdv deleted file mode 100644 index 63a7c58..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/remove11.cdv +++ /dev/null @@ -1,85 +0,0 @@ - -/* TESTING OF THE function remove - FOR FILEs. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void remove1101(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START REMOVE11========================\n"); - remove1101(); - - printf("=== END OF TREMOVE11 ========================= \n"); - return 0; -} -/* -------------------------------------------------remove1101 */ - void remove1101() -{ - - - char tname[]="REMOVE_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARREMOVE_1101", "wl"))==NULL) { - printf("ERROR OPENING FILE ARREMOVE_1101 \n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - if (remove("ARREMOVE_1101")) - ansno(tname); - else - ansyes(tname); - - return ; - - -} - - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/rename11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/rename11.cdv deleted file mode 100644 index a2d8a04..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/rename11.cdv +++ /dev/null @@ -1,182 +0,0 @@ - -/* TESTING OF THE function rename - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 -static void rename1101(); -static void rename1102(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START TRENAME11============================ \n"); - rename1101(); - rename1102(); - printf("=== END OF TRENAME11 ========================= \n"); - return 0; -} -/* ---------------------------------------------rename1101 */ - void rename1101() -{ - - - char tname[]="RENAME_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARRENAMEA", "wb"))==NULL) { - printf("ERROR OPENING FILE ARRENAMEA\n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - if(rename("ARRENAMEA", "ARRENAMEB") != 0) - printf("ERROR WHEN RENAMING =>,ARRENAMEA,ARRENAMEB\n"); - if ((fp=fopen("ARRENAMEB", "rb"))==NULL) { - printf("ERROR OPENING FILE ARRENAMEB \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - remove("ARRENAMEB"); - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} -/* -------------------------------------------------rename1102 */ - void rename1102() -{ - - - char tname[]="RENAME_1102"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=fopen("ARRENAMEA2_%04d.txt", "wl"))==NULL) { - printf("ERROR OPENING FILE ARRENAMEA2.txt \n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - fclose(fp); - - if (dvmh_rename_local("ARRENAMEA2_%04d.txt", "ARRENAMEB2_%04d.txt") !=0) - printf("ERROR WHEN RENAMING =>,ARRENAMEA2,ARRENAMEB2\n"); - - if ((fp=fopen("ARRENAMEB2_%04d.txt", "rl"))==NULL) { - printf("ERROR OPENING FILE ARRENAMEB2.txt \n"); - exit(1); - } -// rewind(fp); - - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - dvmh_remove_local("ARRENAMEB2_%04d.txt"); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/tmpfile11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/tmpfile11.cdv deleted file mode 100644 index d4eb193..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/IO/tmpfile11.cdv +++ /dev/null @@ -1,225 +0,0 @@ - -/* TESTING OF THE function tmpfile - FOR DISTRIBUTED ARRAY A[N]. -*/ -#include -#include -#include -#define N 8 -#define NL 1000 - -static void tmpfile1101(); -static void tmpfile1102(); -static void tmpfile1103(); - -static void ansyes(char tname[]); -static void ansno(char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START TMPFILE11========================\n"); - tmpfile1101(); - tmpfile1102(); - tmpfile1103(); - - printf("=== END OF TMPFILE11 ========================= \n"); - return 0; -} -/* -------------------------------------------------tmpfile1101 */ - void tmpfile1101() -{ - - - char tname[]="TMPFILE_1101"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=tmpfile())==NULL) { - printf("ERROR OPENING TMPFILE01 \n"); - exit(1); - } - for (i=0;i<=N-1;i++) { - #pragma dvm remote_access(A[i]) - { - na=A[i]; - } - ni=fprintf(fp, "%d ", na); - } - rewind(fp); - for (i=0;i<=N-1;i++) - { - ni=fscanf(fp, "%d ",&nb); - B[i]=nb; - } - fclose(fp); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -/* ---------------------------------------------tmpfile1102 */ - void tmpfile1102() -{ - - - char tname[]="TMPFILE_1102"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - if((fp=tmpfile())==NULL) { - printf("ERROR OPENING TMPFILE02 \n"); - exit(1); - } - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE TMPFILE02\n"); - rewind(fp); - - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - -/* ---------------------------------------------tmpfile1103 */ - void tmpfile1103() -{ - - - char tname[]="TMPFILE_1103"; - int i,nloopi,ni,nb,na; - FILE *fp; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align ([i] with A[i]) - int B[N]; - - - - nloopi=NL; - - #pragma dvm region out(A,B) - { - #pragma dvm parallel ([i] on A[i]) - for (i=0;i<=N-1;i++) - { A[i] = NL+i; - B[i]=777; - } - } /*end region*/ - - #pragma dvm get_actual(A,B) - - fp=dvmh_tmpfile_local(); - - if (fwrite(A, sizeof(int), N, fp)!=N) - printf("ERROR WRITING FILE TMPFILE02\n"); - rewind(fp); - - if (fread(B, sizeof(int), N, fp)!=N) - { - if(feof(fp)) printf("PREMATURE END OF FILE ARWRRE01"); - else printf("ERROR READING FILE ARWRRE01\n"); - } - fclose(fp); - - #pragma dvm parallel ([i] on A[i]) reduction(min(nloopi)) - for (i=0;i<=N-1;i++) - { - if (A[i] !=B[i]) - if (nloopi > i) nloopi = i; - } -// printf ("nloopi=%d\n", nloopi); - if (nloopi == NL ) - ansyes(tname); - else - ansno(tname); - - return ; - - -} - - -void ansyes(char name[]) -{ - printf ("%s - complete\n",name); - return ; -} - void ansno(char name[]) -{ - printf("%s - ***error\n",name); - return ; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal11.cdv deleted file mode 100644 index 2423c50..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal11.cdv +++ /dev/null @@ -1,285 +0,0 @@ -/* TESTING OF THE OWN CALCULASHION - FOR DISTRIBUTED ARRAY A[N]. -*/ - -#include -#include -#include - -#define N 32 -#define NL 1000 - -static void owncal1101(); -static void owncal1102(); -static void owncal1103(); -static void owncal1104(); -static void owncal1105(); -static void owncal1106(); - -static void serial(int AR[], int NN, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF OWNCAL11========================\n"); - owncal1101(); - owncal1102(); - owncal1103(); - owncal1104(); - owncal1105(); - owncal1106(); - - printf("=== END OF OWNCAL11 ========================= \n"); - return 0; -} -/* ---------------------------------------------OWNCAL1101 */ -void owncal1101() -{ - int C[N]; - char tname[] = "OWN1101"; - int i, NN, NNL, nloopi; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - - nloopi = NL; - - #pragma dvm region out(A) - { - for (i = 0; i < N; i++) - A[i] = NL + i; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL1102 */ -void owncal1102() -{ - int C[N]; - char tname[] = "OWN1102"; - int i, NN, NNL, nloopi; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - C[0] = N + NL + 2; - - nloopi = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - A[0]=N+NL+2; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL1103 */ -void owncal1103() -{ - int C[N]; - char tname[] = "OWN1103"; - int i, NN, NNL, nloopi, ni; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - ni = N / 2; - C[ni] = N + NL + 3; - - nloopi = NL; - #pragma dvm actual(ni) - - #pragma dvm region out(A), in(ni) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - A[ni] = N + NL + 3; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL1104 */ -void owncal1104() -{ - int C[N]; - char tname[] = "OWN1104"; - int i, NN, NNL, nloopi, ni; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - ni = N / 2; - C[ni+1] = N + NL + 4; - - nloopi = NL; - - #pragma dvm region out(A), in(ni) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - A[ni + 1] = N + NL + 4; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL1105 */ -void owncal1105() -{ - int C[N]; - char tname[] = "OWN1105"; - int i, NN, NNL, nloopi, ni; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - ni = N / 2; - C[ni - 1] = -(N + NL + 5); - - nloopi = NL; - - #pragma dvm region out(A), in(ni) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - A[ni - 1] = -(N + NL + 5); - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL1106 */ -void owncal1106() -{ - int C[N]; - char tname[] = "OWN1106"; - int i, NN, NNL, nloopi, ni; - - #pragma dvm array distribute[block] - int A[N]; - - NN = N; - NNL = NL; - - serial(C, NN, NNL); - C[N - 1] = N + NL + 6; - - nloopi = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - A[N - 1] = N + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i] on A[i]) reduction(min(nloopi)) - for (i = 1; i < N - 1; i++) - if (A[i] != C[i]) - if (nloopi > i) nloopi = i; - if (nloopi == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial(int AR[], int NN, int NNL) -{ - int i; - for (i = 0; i < NN; i++) - AR[i] = NNL+i; -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal21.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal21.cdv deleted file mode 100644 index 81acf87..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal21.cdv +++ /dev/null @@ -1,520 +0,0 @@ -/* TESTING OF THE OWN CALCULASHION - FOR DISTRIBUTED ARRAY A[N][M]. -*/ - -#include -#include -#include - -#define N 32 -#define M 32 -#define NL 1000 - -static void owncal2101(); -static void owncal2102(); -static void owncal2103(); -static void owncal2104(); -static void owncal2105(); -static void owncal2106(); -static void owncal2107(); -static void owncal2108(); -static void owncal2109(); -static void owncal2110(); - -static void serial2(int AR[][M], int NN, int NM, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF OWNCAL21========================\n"); - owncal2101(); - owncal2102(); - owncal2103(); - owncal2104(); - owncal2105(); - owncal2106(); - owncal2107(); - owncal2108(); - owncal2109(); - owncal2110(); - - printf("=== END OF OWNCAL21 ========================= \n"); - return 0; -} -/* ---------------------------------------------OWNCAL2101 */ -void owncal2101() -{ - int C[N][M]; - char tname[] = "OWN2101"; - int i, j, NN, NM, NNL, nloopi, nloopj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2102 */ -void owncal2102() -{ - int C[N][M]; - char tname[] = "OWN2102"; - int i, j, NN, NM, NNL, nloopi, nloopj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - C[0][0] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[0][0] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2103 */ -void owncal2103() -{ - int C[N][M]; - char tname[] = "OWN2103"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - ni = N / 2; - nj = M / 2; - C[ni][nj] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - #pragma dvm actual(ni,nj) - - #pragma dvm region out(A), in(ni, nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni][nj] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2104 */ -void owncal2104() -{ - int C[N][M]; - char tname[] = "OWN2104"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - ni = N / 2; - nj = M / 2; - C[ni + 1][nj + 1] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A), in(ni, nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni + 1][nj + 1] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2105 */ -void owncal2105() -{ - int C[N][M]; - char tname[] = "OWN2105"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - ni = N / 2; - nj = M / 2 ; - C[ni - 1][nj - 1] = -(N + M + NL + 1); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A), in(ni, nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni - 1][nj - 1] = -(N + M + NL + 1); - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2106 */ -void owncal2106() -{ - int C[N][M]; - char tname[] = "OWN2106"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - ni = N / 2; - nj = M / 2 ; - C[ni + 1][nj - 1] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A), in(ni, nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni + 1][nj - 1] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2107 */ -void owncal2107() -{ - int C[N][M]; - char tname[] = "OWN2107"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - ni = N / 2; - nj = M / 2 ; - C[ni - 1][nj + 1] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A), in(ni, nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni - 1][nj + 1] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2108 */ -void owncal2108() -{ - int C[N][M]; - char tname[] = "OWN2108"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - - C[0][M - 1] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[0][M - 1] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2109 */ - void owncal2109() -{ - int C[N][M]; - char tname[] = "OWN2109"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - C[N - 1][0] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[N - 1][0] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL2110 */ -void owncal2110() -{ - int C[N][M]; - char tname[] = "OWN2110"; - int i, j, NN, NM, NNL, nloopi, nloopj, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - serial2(C, NN, NM, NNL); - nj = M / 2; - C[0][nj + 1] = N + M + NL + 1; - - nloopi = NL; - nloopj = NL; - - #pragma dvm region out(A), in(nj) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[0][nj + 1] = N + M + NL + 1; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (A[i][j] != C[i][j]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial2(int AR[][M], int NN, int NM, int NNL) -{ - int i, j; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL + i + j; -} - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal31.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal31.cdv deleted file mode 100644 index 5adef10..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal31.cdv +++ /dev/null @@ -1,611 +0,0 @@ -/* TESTING OF THE OWN CALCULASHION - FOR DISTRIBUTED ARRAY A[N][M]. -*/ - -#include -#include -#include - -#define N 32 -#define M 32 -#define K 32 -#define NL 1000 - -static void owncal3101(); -static void owncal3102(); -static void owncal3103(); -static void owncal3104(); -static void owncal3105(); -static void owncal3106(); -static void owncal3107(); -static void owncal3108(); -static void owncal3109(); -static void owncal3110(); - -static void serial3(int AR[][M][K], int NN, int NM, int NK, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF OWNCAL31========================\n"); - owncal3101(); - owncal3102(); - owncal3103(); - owncal3104(); - owncal3105(); - owncal3106(); - owncal3107(); - owncal3108(); - owncal3109(); - owncal3110(); - - printf("=== END OF OWNCAL31 ========================= \n"); - return 0; -} -/* ---------------------------------------------OWNCAL3101 */ -void owncal3101() -{ - int C[N][M][K]; - char tname[] = "OWN3101"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region out(A) - { - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL3102 */ -void owncal3102() -{ - int C[N][M][K]; - char tname[] = "OWN3102"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - C[0][0][0] = N + M + K + NL + 2; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[0][0][0] = N + M + K + NL + 2; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL3103 */ -void owncal3103() -{ - int C[N][M][K]; - char tname[] = "OWN3103"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int ni, nj, nii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - - C[ni][nj][nii] = N + M + K + NL + 3; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(ni, nj, nii) - - #pragma dvm region out(A), in(ni, nj, nii) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[ni][nj][nii] = N + M + K + NL + 3; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL3104 */ -void owncal3104() -{ - int C[N][M][K]; - char tname[] = "OWN3104"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int ni, nj, nii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - - C[ni + 1][nj + 1][nii + 1] = N + M + K + NL + 4; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(ni, nj, nii) - - #pragma dvm region out(A), in(ni, nj, nii) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[ni + 1][nj + 1][nii + 1] = N + M + K + NL + 4; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - - -/* ---------------------------------------------OWNCAL3105 */ -void owncal3105() -{ - int C[N][M][K]; - char tname[] = "OWN3105"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int ni, nj, nii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - - C[ni - 1][nj - 1][nii - 1] = -(N + M + K + NL + 5); - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(ni, nj, nii) - - #pragma dvm region out(A), in(ni, nj, nii) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[ni - 1][nj - 1][nii - 1] = -(N + M + K + NL + 5); - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL3106 */ -void owncal3106() -{ - int C[N][M][K]; - char tname[] = "OWN3106"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int ni, nj, nii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - - C[ni + 1][nj - 1][nii + 1] = N + M + K + NL + 6; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(ni, nj, nii) - - #pragma dvm region out(A), in(ni, nj, nii) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[ni + 1][nj - 1][nii + 1] = N + M + K + NL + 6; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - - -/* ---------------------------------------------OWNCAL3107 */ -void owncal3107() -{ - int C[N][M][K]; - char tname[] = "OWN3107"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int ni, nj, nii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - - C[ni - 1][nj + 1][nii - 1] = N + M + K + NL + 7; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(ni, nj, nii) - - #pragma dvm region out(A), in(ni, nj, nii) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[ni - 1][nj + 1][nii - 1] = N + M + K + NL + 7; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL3108 */ -void owncal3108() -{ - int C[N][M][K]; - char tname[] = "OWN3108"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - - C[0][M - 1][K - 1] = N + M + K + NL + 8; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[0][M - 1][K - 1] = N + M + K + NL + 8; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - - -/* ---------------------------------------------OWNCAL3109 */ -void owncal3109() -{ - int C[N][M][K]; - char tname[] = "OWN3109"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - - C[N - 1][M - 1][0] = N + M + K + NL + 9; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[N - 1][M - 1][0] = N + M + K + NL + 9; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL3110 */ -void owncal3110() -{ - int C[N][M][K]; - char tname[] = "OWN3110"; - int i, j, ii, NN, NM, NK, NNL, nloopi, nloopj, nloopii; - int nj; - - #pragma dvm array distribute[block][block][block] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - - serial3(C, NN, NM, NK, NNL); - - nj = M / 2; - C[0][nj + 1][K - 1] = N + M + K + NL + 10; - - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm actual(nj) - #pragma dvm region out(A), in(nj) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - A[i][j][ii] = NL + i + j + ii; - - A[0][nj + 1][K - 1] = N + M + K + NL + 10; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - if (A[i][j][ii] != C[i][j][ii]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - - -void serial3(int AR[][M][K], int NN, int NM, int NK, int NNL) -{ - int i,j,ii; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - AR[i][j][ii] = NNL + i + j + ii; -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal41.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal41.cdv deleted file mode 100644 index d5232a6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/owncal41.cdv +++ /dev/null @@ -1,656 +0,0 @@ -/* TESTING OF THE OWN CALCULASHION - FOR DISTRIBUTED ARRAY A[N][M][K][L]. -*/ - -#include -#include -#include - -#define N 32 -#define M 32 -#define K 32 -#define L 32 -#define NL 1000 - -static void owncal4101(); -static void owncal4102(); -static void owncal4103(); -static void owncal4104(); -static void owncal4105(); -static void owncal4106(); -static void owncal4107(); -static void owncal4108(); -static void owncal4109(); -static void owncal4110(); - -static void serial4(int AR[][M][K][L], int NN, int NM, int NK, int NLL, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF OWNCAL41========================\n"); - owncal4101(); - owncal4102(); - owncal4103(); - owncal4104(); - owncal4105(); - owncal4106(); - owncal4107(); - owncal4108(); - owncal4109(); - owncal4110(); - - printf("=== END OF OWNCAL41 ========================= \n"); - return 0; -} -/* ---------------------------------------------OWNCAL4101 */ -void owncal4101() -{ - int C[N][M][K][L]; - char tname[] = "OWN4101"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region out(A) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL4102 */ -void owncal4102() -{ - int C[N][M][K][L]; - char tname[] = "OWN4102"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - C[0][0][0][0] = N + M + K + L + NL + 2; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[0][0][0][0] = N + M + K + L + NL + 2; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL4103 */ -void owncal4103() -{ - int C[N][M][K][L]; - char tname[] = "OWN4103"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - int ni, nj, nii, njj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - njj = L / 2; - - C[ni][nj][nii][njj] = N + M + K + L + NL + 3; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm actual(ni, nj, nii, njj) - #pragma dvm region out(A), in(ni, nj, nii, njj) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[ni][nj][nii][njj] = N + M + K + L + NL + 3; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL4104 */ -void owncal4104() -{ - int C[N][M][K][L]; - char tname[] = "OWN4104"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - int ni, nj, nii, njj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - njj = L / 2; - - C[ni + 1][nj + 1][nii + 1][njj + 1] = N + M + K + L + NL + 4; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm actual(ni, nj, nii, njj) - #pragma dvm region out(A), in(ni, nj, nii, njj) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[ni + 1][nj + 1][nii + 1][njj + 1] = N + M + K + L + NL + 4; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - - -/* ---------------------------------------------OWNCAL4105 */ -void owncal4105() -{ - int C[N][M][K][L]; - char tname[] = "OWN4105"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - int ni, nj, nii, njj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - njj = L / 2; - - C[ni - 1][nj - 1][nii - 1][njj - 1] = -(N + M + K + L + NL + 5); - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm actual(ni, nj, nii, njj) - #pragma dvm region out(A), in(ni, nj, nii, njj) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[ni - 1][nj - 1][nii - 1][njj - 1] = -(N + M + K + L + NL + 5); - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------OWNCAL4106 */ -void owncal4106() -{ - int C[N][M][K][L]; - char tname[] = "OWN4106"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - int ni, nj, nii, njj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - njj = L / 2; - - C[ni - 1][nj + 1][nii - 1][njj + 1] = N + M + K + L + NL + 6; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm actual(ni, nj, nii, njj) - #pragma dvm region out(A), in(ni, nj, nii, njj) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[ni - 1][nj + 1][nii - 1][njj + 1] = N + M + K + L + NL + 6; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL4107 */ -void owncal4107() -{ - int C[N][M][K][L]; - char tname[] = "OWN4107"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - int ni, nj, nii, njj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - ni = N / 2; - nj = M / 2; - nii = K / 2; - njj = L / 2; - - C[ni + 1][nj - 1][nii + 1][njj - 1] = N + M + K + L + NL + 7; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm actual(ni, nj, nii, njj) - #pragma dvm region out(A), in(ni, nj, nii, njj) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[ni + 1][nj - 1][nii + 1][njj - 1] = N + M + K + L + NL + 7; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL4108 */ -void owncal4108() -{ - int C[N][M][K][L]; - char tname[] = "OWN4108"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - - C[0][M - 1][0][L - 1] = N + M + K + L + NL + 8; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[0][M - 1][0][L - 1] = N + M + K + L + NL + 8; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL4109 */ -void owncal4109() -{ - int C[N][M][K][L]; - char tname[] = "OWN4109"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - - C[N - 1][0][K - 1][0] = N + M + K + L + NL + 9; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[N][0][K - 1][0] = N + M + K + L + NL + 9; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------OWNCAL4110 */ -void owncal4110() -{ - int C[N][M][K][L]; - char tname[] = "OWN4110"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - int nloopi, nloopj, nloopii, nloopjj; - - #pragma dvm array distribute[block][block][block][block] - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - - serial4(C, NN, NM, NK, NLL, NNL); - - C[0][0][K - 1][L - 1] = N + M + K + L + NL + 10; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region out(A) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - A[0][0][K - 1][L - 1] = N + M + K + L + NL + 10; - - } /*end region*/ - - #pragma dvm get_actual(A) - - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (A[i][j][ii][jj] != C[i][j][ii][jj]) { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial4(int AR[][M][K][L], int NN, int NM, int NK, int NLL, int NNL) -{ - int i, j, ii, jj; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - for (jj = 0; jj < NLL; jj++) - AR[i][j][ii][jj] = NNL + i + j + ii + jj; -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/settings deleted file mode 100644 index 3ef2d72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/OWNCALC/settings +++ /dev/null @@ -1 +0,0 @@ -DVM_ONLY=1 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel1.cdv deleted file mode 100644 index f23c9b1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel1.cdv +++ /dev/null @@ -1,340 +0,0 @@ -/* PARALLEL1 -Testing PARALLEL directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void parallel11(); -static void parallel12(); -static void parallel13(); -static void parallel131(); -static void parallel14(); -static void parallel15(); - - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 1000; -static int ER = 10000; - -static int erri, i, j, ia; - -int main(int an, char **as) -{ - printf("=== START OF PARALLEL1 ===================\n"); - - /* arrA1[BLOCK] PARALLEL ON arrA[i+4] normal */ - parallel11(); - /* arrA1[BLOCK] PARALLEL ON arrA[-i+8] reverse */ -// parallel12(); - /* arrA1[BLOCK] PARALLEL ON arrA[2*i+8] stretch */ - parallel13(); - /* arrA1[BLOCK] PARALLEL ON arrA[2*i+1] small array */ - parallel131(); - /* arrA1[BLOCK] PARALLEL ON arrA[] */ - parallel14(); - /* arrA1[BLOCK] PARALLEL ON arrA[2] */ - parallel15(); - - printf ("=== END OF PARALLEL1 ===================\n"); - return 0; -} -/* ---------------------------------------------parallel11 */ - /* arrA1[BLOCK] PARALLEL ON arrA[i+4] normal */ -void parallel11() -{ - #define AN1 8 - -/* parameters for PARALLEL arrA1[k1i * i + li] */ - int k1i = 1; - int li = 4; - - #pragma dvm array distribute[block] - int A1[AN1]; - char tname[] = "paral11 "; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A1) - { - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i; - - #pragma dvm parallel([i] on A1[k1i * i + li]) private(ia), reduction(min(erri)) - for (i = 0; i < ((AN1-li)/k1i); i++) - { - ia = k1i * i + li; - if (A1[ia] != ia) - erri = Min(erri, i); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 -} - -/* ---------------------------------------------parallel12 */ - /* arrA1[BLOCK] PARALLEL ON arrA[-i+8] reverse */ -void parallel12() -{ - #define AN1 7 - -/* parameters for PARALLEL arrA1[k1i * i + li] */ - int k1i = -1; - int li = 8; - - #pragma dvm array distribute[block] - int *A1; - char tname[] = "paral12 "; - - A1 = (int*)malloc(AN1*sizeof(int)); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i * 2; - - #pragma dvm parallel([i] on A1[k1i * i + li]) private(ia), reduction(min(erri)) - for (i = 0; i < ((AN1-li)/k1i); i++) - { - ia = k1i * i + li; - if (A1[ia] != (ia*2)) - erri = Min(erri, i); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A1); - - #undef AN1 -} - -/* ---------------------------------------------parallel13 */ - /* arrA1[BLOCK] PARALLEL ON arrA[2*i+8] stretch */ -void parallel13() -{ - #define AN1 20 - -/* parameters for PARALLEL arrA1[k1i * i + li]*/ - int k1i = 2; - int li = 8; - - #pragma dvm array distribute[block] - int *A1; - char tname[] = "paral13 "; - - A1 = (int*)malloc(sizeof(int[AN1])); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i + 5; - - #pragma dvm parallel([i] on A1[k1i * i + li]) private(ia), reduction(min(erri)) - for (i = 0; i < ((AN1-li)/k1i); i++) - { - ia = k1i * i + li; - if (A1[ia] != (ia + 5)) - erri = Min(erri, i); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A1); - #undef AN1 -} - -/* ---------------------------------------------parallel131 */ - /* arrA1[BLOCK] PARALLEL ON arrA[2*i+1] small array */ -void parallel131() -{ - #define AN1 5 - -/* parameters for PARALLEL arrA1[k1i * i + li] */ - int k1i = 2; - int li = 1; - - #pragma dvm array distribute[block] - int *A1; - char tname[] = "paral131"; - - A1 = (int*)malloc(AN1*sizeof(int)); - - erri = ER; - - #pragma dvm region - { - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i; - } /* end region */ - - #pragma dvm actual(erri) - - #pragma dvm region local(A1) - { - #pragma dvm parallel([i] on A1[k1i * i + li]) private(ia), reduction(min(erri)) - for (i = 0; i < ((AN1-li)/k1i); i++) - { - ia=k1i * i + li; - if (A1[ia] != ia) - erri = Min(erri, i); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A1); - - #undef AN1 -} - -/* ---------------------------------------------parallel14 */ - /* arrA1[BLOCK] PARALLEL ON arrA[] */ -void parallel14() -{ - #define AN1 20 - #define BN1 10 - -/* parameters for PARALLEL arrA1[*] */ - #define k1i 0 - #define li 0 - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array distribute[*] - int *B1; - - char tname[] = "paral14 "; - - A1 = (int*)malloc(AN1*sizeof(int)); - B1 = (int*)malloc(BN1*sizeof(int)); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A1, B1) - { - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i; - - for (i = 0; i < BN1; i++) - B1[i] = i; - - #pragma dvm parallel([i] on A1[]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - if (B1[i] != i) - erri = Min(erri, i); - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A1); - free (B1); - - #undef AN1 - #undef BN1 - #undef k1i - #undef li -} - -/* ---------------------------------------------parallel15 */ -/* arrA1[BLOCK] PARALLEL ON arrA[2] */ -void parallel15() -{ - #define AN1 15 - -/* parameters for PARALLEL arrA1[li] */ - #define k1i 0 - #define li 2 - - #pragma dvm array distribute[block] - int *A1; - - char tname[] = "paral15 "; - - A1 = (int(*))malloc(AN1*sizeof(int)); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A1) - { - #pragma dvm parallel([i] on A1[i]) - for(i = 0; i < AN1; i++) - A1[i] = i; - - #pragma dvm parallel ([i] on A1[li]) reduction(min(erri)), private(ia) - for(i = 0; i < AN1; i++) { - ia = li; - if (A1[ia] != ia) - erri = Min(erri, i); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A1); - #undef AN1 - #undef k1i - #undef li -} - -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel2.cdv deleted file mode 100644 index bf400ef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel2.cdv +++ /dev/null @@ -1,253 +0,0 @@ -/* PARALLEL2 -Testing PARALLEL directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void parallel21(); -static void parallel22(); -static void parallel23(); -static void parallel24(); - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 10000; -static int ER = 100000; - -static int erri,i,j,ia,ja; - -int main(int an, char **as) -{ - printf("=== START OF PARALLEL2 ===================\n"); - - /* PARALLEL ON arrA[i][2*j] stretching along j */ - parallel21(); - /* PARALLEL ON arrA[i+4][j] shift along i */ - parallel22(); - /* PARALLEL ON arrA[-i+8][j] reverse on i */ -// parallel23(); - /* PARALLEL ON arrA[i+4][j+4] shift along i and j */ - parallel24(); - - printf ("=== END OF PARALLEL2 ===================\n"); - - return 0; -} - -/* ---------------------------------------------parallel21 */ - /* PARALLEL ON arrA[i][2*j] stretching along j */ -void parallel21() -{ - #define AN1 8 - #define AN2 8 - -/* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - int k1i = 1, li = 0; - int k2j = 2, lj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - - char tname[] = "paral21"; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A2) - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i*NL+j; - - #pragma dvm parallel([i][j] on A2[k1i*i+li][k2j*j+lj]) private(ia, ja), reduction(min(erri)) - for (i = 0; i < (AN1-li)/k1i; i++) - for (j = 0; j < (AN2-lj)/k2j ; j++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - erri = Min(erri, ia * NL + ja); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------parallel22 */ - /* PARALLEL ON arrA[i+4][j] shift along i */ -void parallel22() -{ - #define AN1 16 - #define AN2 10 - -/* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - int k1i = 1, li = 4; - int k2j = 1, lj = 0; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - - char tname[] = "paral22"; - - A2 = (int(*)[AN2])malloc(AN1*sizeof(int[AN2])); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j + 2; - - #pragma dvm parallel([i][j] on A2[k1i*i+li][k2j*j+lj]) private(ia, ja), reduction(min(erri)) - for (i = 0; i < (AN1-li) / k1i; i++) - for (j = 0; j < (AN2-lj) / k2j; j++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja) + 2) - erri = Min(erri, ia * NL + ja); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A2); - - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------parallel23 */ - /* PARALLEL ON arrA[-i+8][j] reverse on i*/ -void parallel23() -{ - #define AN1 8 - #define AN2 14 - -/* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - int k1i = -1, li = 8; - int k2j = 1, lj = 0; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - - char tname[] = "paral23"; - - A2 = (int(*)[AN2])malloc(AN1*AN2*sizeof(int)); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A2) - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j - 3; - - #pragma dvm parallel([i][j] on A2[k1i*i+li][k2j*j+lj]) private(ia, ja), reduction(min(erri)) - for (i = 0; i < (AN1 - li) / k1i; i++) - for (j = 0; j < (AN2 - lj) / k2j; j++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja) - 3) - erri = Min(erri, ia * NL + ja); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - #undef AN1 - #undef AN2 -} - -/* ---------------------------------------------parallel24 */ - /* PARALLEL ON arrA[i+4][j+4] shift along i and j */ -void parallel24() -{ - #define AN1 16 - #define AN2 15 - -/* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - int k1i = 1, li = 4; - int k2j = 1, lj = 4; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - - char tname[] = "paral24"; - - A2 = malloc(sizeof(int[AN1][AN2])); - - erri= ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A2) - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - - #pragma dvm parallel([i][j] on A2[k1i*i+li][k2j*j+lj]) private(ia, ja), reduction(min(erri)) - for (i = 0; i < (AN1 - li) / k1i; i++) - for (j = 0; j < (AN2 - lj) / k2j ; j++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != (ia * NL + ja)) - erri = Min(erri, ia * NL + ja); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A2); - - #undef AN1 - #undef AN2 -} - -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel3.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel3.cdv deleted file mode 100644 index 830cbe4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/parallel3.cdv +++ /dev/null @@ -1,518 +0,0 @@ -/* PARALLEL3 -Testing PARALLEL directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void parallel31(); -static void parallel32(); -static void parallel33(); -static void parallel34(); -static void parallel341(); -static void parallel35(); -static void parallel36(); - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 10000; -static int ER = 100000; - -static int erri,i,j,n,l,ia,ja,na,ib,jb,nb; - -int main(int an, char **as) -{ - printf("=== START OF PARALLEL3 ===================\n"); - /* PARALLEL ON arrA[i][2* j][n] stretching */ - parallel31(); - /* PARALLEL ON arrA[i+2][ j][n] shift */ - parallel32(); - /* PARALLEL ON arrA[i][ j][-n+8] reverse */ -// parallel33(); - /* PARALLEL ON arrA[i][ j][2] compression */ - parallel34(); - /* PARALLEL ON arrA[2*i][3*j][1] stretching and compression */ - parallel341 (); - /* PARALLEL ON arrA[][j][n] replication */ - parallel35(); - /* PARALLEL ON arrA[1][2*j+1][3] */ - parallel36(); - - printf ("=== END OF PARALLEL3 ===================\n"); - - return 0; -} - -/* ---------------------------------------------parallel31 */ - /* PARALLEL ON arrA[i][2*j][k] stretching */ -void parallel31() -{ - #define AN1 6 - #define AN2 6 - #define AN3 4 - -/* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i = 1, li = 0; - int k2j = 2, lj = 0; - int k3n = 1, ln = 0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - - char tname[] = "paral31 "; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A3) - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - - #pragma dvm parallel([i][j][n] on A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) private(ia,ja,na), reduction(min(erri)) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != (ia * NL / 10 + ja * NL / 100 + na * NL / 1000)) - erri = Min(erri, ia * NL / 10 + ja * NL / 100 + na * NL / 1000); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 -} - -/* ---------------------------------------------parallel32 */ - /* PARALLEL ON arrA[i+2][j][k] shift */ -void parallel32() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - -/* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i = 1, li = 2; - int k2j = 1, lj = 0; - int k3n = 1, ln = 0; - - #pragma dvm array distribute[block][block][block] - int (*A3)[AN2][AN3]; - - char tname[] = "paral32 "; - - A3 = (int(*)[AN2][AN3])malloc(AN1*sizeof(int[AN2][AN3])); - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + 2; - } - - #pragma dvm parallel([i][j][n] on A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) private(ia,ja,na), reduction(min(erri)) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != (ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + 2)) - erri = Min(erri, ia * NL / 10 + ja * NL / 100 + na * NL / 1000); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (A3); - - #undef AN1 - #undef AN2 - #undef AN3 -} -/* ---------------------------------------------parallel33 */ - /* PARALLEL ON arrA[i][j][-k+8] reverse */ -void parallel33() -{ - #define AN1 5 - #define AN2 5 - #define AN3 9 - -/* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; - int k3n = -1, ln = 8; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - - char tname[] = "paral33 "; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region inout(A3) - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL /1000; - - #pragma dvm parallel([i][j][n] on A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) private(ia,ja,na), reduction(min(erri)) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj - 1) / k2j); j++) - for (n = 0; n < ((AN3 - ln - 1) / k3n); n++) - { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != (ia * NL / 10 + ja * NL / 100 + na * NL/1000)) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 -} -/* ---------------------------------------------parallel34 */ - /* PARALLEL ON arrA[i][ j][2] compression */ -void parallel34() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - -/* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] */ - #define k1i 1 - #define li 0 - #define k2j 1 - #define lj 0 - #define k3n 0 - #define ln 2 - - #pragma dvm array distribute[block][block][block] - int (*A3)[AN2][AN3]; - #pragma dvm array /* deferred aligning */ - int (*B3)[BN2][BN3]; - - char tname[] = "paral34 "; - - A3 = (int(*)[AN2][AN3])malloc(AN1*sizeof(int[AN2][AN3])); - B3 = (int(*)[BN2][BN3])malloc(BN1*sizeof(int[BN2][BN3])); - - #pragma dvm realign(B3[i][j][] with A3[k1i*i+li][k2j*j+lj][ln]) - - erri = ER; - - #pragma dvm region inout(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for(i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - for(n = 0; n < BN3; n++) { - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for(i = 0; i < AN1; i++) - for(j = 0; j < AN2; j++) - for(n = 0; n < AN3; n++) { - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } - } /*end region*/ - - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel ([i][j][n] on A3[k1i * i + li][k2j * j + lj][ln]) reduction(min(erri)) - for(i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - for(n = 0; n < BN3; n++) { - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - } /* end region */ - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free (B3); - free (A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef li - #undef k2j - #undef lj - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel341 */ - /* PARALLEL ON arrA[2*i][3*j][1] stretching and compression */ -void parallel341() -{ - #define AN1 8 - #define AN2 10 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - -/* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] */ - int k1i = 2, li = 0; - int k2j = 3, lj = 0; - int k3n = 0, ln = 1; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - - #pragma dvm array align([i][j][] with A3[k1i*i+li][k2j*j+lj][ln]) - int B3[BN1][BN2][BN3]; - - char tname[] = "paral341"; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region local(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + 4; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - - #pragma dvm parallel([i][j][n] on A3[k1i*i+li][k2j*j+lj][ln]) reduction(min(erri)) - for (i = 0; i -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void parallel41(); -static void parallel42(); -static void parallel43(); -static void parallel44(); -static void parallel45(); -static void parallel46(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int PN = 2; -static int erri, NNL, i, j, n, m, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue, s, cs; - -int main(int an, char **as) -{ - printf("===START OF parallel4========================\n"); -/* PARALLEL ON arrA[i][2* j][k][3*l] stretching */ - parallel41(); -/* PARALLEL ON arrA[i+2][ j][k][ l+3] */ - parallel42(); -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -// parallel43(); -/* PARALLEL ON arrA[i][ j][2][ l] - compression !! */ - parallel44(); -/* PARALLEL ON arrA[i][ j][ ][ k] - replication */ - parallel45(); -/* PARALLEL ON arrA[i][ j][ ][3] - compression and replication */ - parallel46(); - - printf("=== END OF parallel4 =========================\n"); - return 0; -} -/* ---------------------------------------------parallel41 */ -/* arrA4[BLOCK][BLOCK] [BLOCK] [BLOCK] - PARALLEL ON arrA[i][2* j][k][3*l] stretching */ -void parallel41() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 3 - #define lm 0 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral41 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel42 */ -/* PARALLEL ON arrA[i+2][ j][k][ l+3] shift */ -void parallel42() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 3 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral42 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel43 */ -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -void parallel43() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define k4n 0 - #define ln 8 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m -1 - #define lm 8 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral43 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - //#pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel44 */ -/* PARALLEL ON arrA[i][ j][2][ l] */ -void parallel44() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 2 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]) - - - char tname[] = "paral44 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][ln][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel45 */ -/* PARALLEL ON arrA[i][ j][ ][ k] */ -void parallel45() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][k4m*m+lm]) - - char tname[] = "paral45 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel46 */ -/* PARALLEL ON arrA[i][ j][ ][3] */ -void parallel46() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 0 - #define lm 3 - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][lm]) - - char tname[] = "paral46 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus124.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus124.cdv deleted file mode 100644 index 50bdabb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus124.cdv +++ /dev/null @@ -1,1141 +0,0 @@ -/* PARALPLUS124 - -TESTING parallel CLAUSE . -arrA2[*][BLOCK] -or arrA2[BLOCK][*] -or arrA4[BLOCK][*][*][*] -or arrA4[*][*][*][BLOCK] etc. */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void parallel21(); -static void parallel22(); -static void parallel23(); -static void parallel24(); -static void parallel25(); -static void parallel26(); -static void parallel27(); -static void parallel28(); - -static void parallel41(); -static void parallel42(); -static void parallel43(); -static void parallel44(); -static void parallel45(); -static void parallel46(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int PN = 2; -static int erri, NNL, i, j, n, m, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue, s, cs; - -int main(int an, char **as) -{ - printf("===START OF paralplus124========================\n"); -/* PARALLEL ON arrA[i][2*j] stretching along j */ - parallel21(); -/* PARALLEL ON arrA[i+4][j] shift along i */ - parallel22(); -/* PARALLEL ON arrA[-i+8][j] reverse on i */ -// parallel23(); -/* ARALLEL ON arrA[i+4][j+4] shift along i and j */ - parallel24(); -/* PARALLEL ON arrA[i][2*j] stretching along j */ - parallel25(); -/* PARALLEL ON arrA[i+4][j] shift along i */ - parallel26(); -/* PARALLEL ON arrA[-i+8][j] reverse on i */ -// parallel27(); -/* ARALLEL ON arrA[i+4][j+4] shift along i and j */ - parallel28(); - -/* PARALLEL ON arrA[i][2* j][k][3*l] stretching */ - parallel41(); -/* PARALLEL ON arrA[i+2][ j][k][ l+3] */ - parallel42(); -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -// parallel43(); -/* PARALLEL ON arrA[i][ j][2][ l] - compression !! */ - parallel44(); -/* PARALLEL ON arrA[i][ j][ ][ k] - replication */ - parallel45(); -/* PARALLEL ON arrA[i][ j][ ][3] - compression and replication */ - parallel46(); - - printf("=== END OF paralplus124 =========================\n"); - return 0; -} -/* ---------------------------------------------parallel21 */ -/* PARALLEL ON arrA[i][2*j] stretching along j */ -void parallel21() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define lj 0 - - #pragma dvm array distribute[*][block] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+21 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel22 */ -/* PARALLEL ON arrA[i+4][j] shift along i */ -void parallel22() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 4 - #define k1j 0 - #define k2j 1 - #define lj 0 - - #pragma dvm array distribute[*][block] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+22 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel23 */ -/* PARALLEL ON arrA[-i+8][j] reverse on i */ -void parallel23() -{ - #define AN1 7 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i -1 - #define k2i 0 - #define li 8 - #define k1j 0 - #define k2j 1 - #define lj 0 - - #pragma dvm array distribute[*][block] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+23 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) -// #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel24 */ -/* PARALLEL ON arrA[i+4][j+4] shift along i and j */ -void parallel24() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 4 - #define k1j 0 - #define k2j 1 - #define lj 4 - - #pragma dvm array distribute[*][block] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+24 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel25 */ -/* PARALLEL ON arrA[i][2*j] stretching along j */ -void parallel25() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define lj 0 - - #pragma dvm array distribute[block][*] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+25 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel26 */ -/* PARALLEL ON arrA[i+4][j] shift along i */ -void parallel26() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 4 - #define k1j 0 - #define k2j 1 - #define lj 0 - - #pragma dvm array distribute[block][*] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+26 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel27 */ -/* PARALLEL ON arrA[-i+8][j] reverse on i */ -void parallel27() -{ - #define AN1 7 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i -1 - #define k2i 0 - #define li 8 - #define k1j 0 - #define k2j 1 - #define lj 0 - - #pragma dvm array distribute[block][*] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+27 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) -// #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k2j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel28 */ -/* PARALLEL ON arrA[i+4][j+4] shift along i and j */ -void parallel28() -{ - #define AN1 8 - #define AN2 8 - /* parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] */ - #define k1i 1 - #define k2i 0 - #define li 4 - #define k1j 0 - #define k2j 1 - #define lj 4 - - #pragma dvm array distribute[block][*] - int (*A2)[AN2]; - A2 = (int (*)[AN2])malloc(AN1 * sizeof(int[AN2])); - - char tname[] = "paral+28 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - A2[i][j] = i * NL + j; - } /*end region*/ - #pragma dvm get_actual(A2) - #pragma dvm parallel([i][j] on A2[k1i * i + li][k2j * j + lj]) reduction(min(erri)), private(ia, ja) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) { - ia = k1i * i + li; - ja = k1j * j + lj; - if (A2[ia][ja] != ia * NL + ja) - erri = Min(erri, ia * NL + ja); - } - #pragma dvm get_actual(erri) - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(A2); - - #undef AN1 - #undef AN2 - #undef k1i - #undef k2i - #undef li - #undef k1j - #undef k2j - #undef lj -} -/* ---------------------------------------------parallel41 */ -/* arrA4[*][*] [BLOCK] [*] - PARALLEL ON arrA[i][2* j][k][3*l] stretching */ -void parallel41() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 3 - #define lm 0 - - #pragma dvm array distribute[*][block][*][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+41 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++){ - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel42 */ -/* PARALLEL ON arrA[i+2][ j][k][ l+3] shift */ -void parallel42() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 3 - - #pragma dvm array distribute[*][block][*][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+42 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++){ - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel43 */ -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -void parallel43() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define k4n 0 - #define ln 8 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m -1 - #define lm 8 - - #pragma dvm array distribute[*][block][*][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+43 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - //#pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++){ - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel44 */ -/* PARALLEL ON arrA[i][ j][2][ l] */ -void parallel44() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 2 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[*][*][*][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]) - - - char tname[] = "paral+44 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][ln][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel45 */ -/* PARALLEL ON arrA[i][ j][ ][ k] */ -void parallel45() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[*][*][block][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][k4m*m+lm]) - - char tname[] = "paral+45 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel46 */ -/* PARALLEL ON arrA[i][ j][ ][3] */ -void parallel46() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 0 - #define lm 3 - - #pragma dvm array distribute[*][*][block][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1*sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][lm]) - - char tname[] = "paral+46 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus234.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus234.cdv deleted file mode 100644 index b8e0fc7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus234.cdv +++ /dev/null @@ -1,1689 +0,0 @@ -/* PARALPLUS234 - -TESTING parallel CLAUSE -arrA3[*][BLOCK][BLOCK] -or arrA3[BLOCK][*][BLOCK] -or arrA4[BLOCK][*][*][BLOCK] -or arrA4[*][BLOCK][*][BLOCK] etc. */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void parallel31(); -static void parallel32(); -static void parallel33(); -static void parallel34(); -static void parallel35(); -static void parallel36(); -static void parallel37(); -static void parallel38(); -static void parallel39(); -static void parallel310(); -static void parallel311(); -static void parallel312(); - -static void parallel41(); -static void parallel42(); -static void parallel43(); -static void parallel44(); -static void parallel45(); -static void parallel46(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int PN = 2; -static int erri, NNL, i, j, n, m, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue, s, cs; - -int main(int an, char **as) -{ - printf("===START OF paralplus234========================\n"); -/* PARALLEL ON arrA[i][2* j][k] stretching */ - parallel31(); -/* PARALLEL ON arrA[i+2][ j][k] shift */ - parallel32(); -/* PARALLEL ON arrA[i][ j][-k+8] reverse */ -// parallel33(); -/* PARALLEL ON arrA[i][ j][2] - compression !! */ - parallel34(); -/* PARALLEL ON arrA[][ j][ k] - replication */ - parallel35(); -/* PARALLEL ON arrA[1][i][3] - compression and replication */ - parallel36(); -/* PARALLEL ON arrA[i][2* j][k] stretching */ - parallel37(); -/* PARALLEL ON arrA[i+2][ j][k] shift */ - parallel38(); -/* PARALLEL ON arrA[i][ j][-k+8] reverse */ -// parallel39(); -/* PARALLEL ON arrA[i][ j][2] - compression !! */ - parallel310(); -/* PARALLEL ON arrA[][ j][ k] - replication */ - parallel311(); -/* PARALLEL ON arrA[1][i][3] - compression and replication */ - parallel312(); - -/* PARALLEL ON arrA[i][2* j][k][3*l] stretching */ - parallel41(); -/* PARALLEL ON arrA[i+2][ j][k][ l+3] */ - parallel42(); -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -// parallel43(); -/* PARALLEL ON arrA[i][ j][2][ l] - compression !! */ - parallel44(); -/* PARALLEL ON arrA[i][ j][ ][ k] - replication */ - parallel45(); -/* PARALLEL ON arrA[i][ j][ ][3] - compression and replication */ - parallel46(); - - printf("=== END OF paralplus234 =========================\n"); - return 0; -} -/* ---------------------------------------------parallel31 */ -/* arrA[*][BLOCK] [BLOCK] - PARALLEL ON arrA[i][2* j][k] stretching */ -void parallel31() -{ - #define AN1 6 - #define AN2 6 - #define AN3 4 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+31 "; - erri = ER; - NNL = NL; - - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel32 */ -/* PARALLEL ON arrA[i+2][ j][k] shift */ -void parallel32() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+32 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel33 */ -/* PARALLEL ON arrA[i][ j][-k+8] reverse */ -void parallel33() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define ln 6 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+33 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - //#pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel34 */ -/* PARALLEL ON arrA[i][ j][2] */ -void parallel34() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define ln 2 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[i][j][n] with A3[k1i*i+li][k2j*j+lj][ln]) - - char tname[] = "paral+34 "; - erri = ER; - NNL = NL; - - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(B3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][ln]) reduction(min(erri)), private(n) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel35 */ -/* PARALLEL ON arrA[][ j][ k] */ -void parallel35() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 6 - #define BN2 6 - #define BN3 6 - /* parameters for PARALLEL ON arrA[*][k2j*j+lj][k3n*n+ln] */ - #define k1i 0 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[][j][n] with A3[][k2j*j+lj][k3n*n+ln]) - - char tname[] = "paral+35 "; - erri = ER; - NNL = NL; - #pragma dvm region out(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3, B3) - for (i = 0; i < BN1; i++) { - #pragma dvm parallel([j][n] on A3[][k2j * j + lj][k3n * n + ln]) reduction(min(erri)) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel36 */ -/* PARALLEL ON arrA[1][i][3] */ -void parallel36() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - /* parameters for PARALLEL ON arrA[li][k2j*j+lj][ln] */ - #define k1i 0 - #define k2i 0 - #define k3i 0 - #define li 1 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define ln 3 - - #pragma dvm array distribute[*][block][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[i][j][n] with A3[li][k2j*j+lj][ln]) - - char tname[] = "paral+36 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(B3) - #pragma dvm parallel([i][j][n] on A3[li][k2j * j + lj][ln]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - #pragma dvm get_actual(erri) - - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel37 */ -/* arrA[BLOCK][*] [BLOCK] - PARALLEL ON arrA[i][2* j][k] stretching */ -void parallel37() -{ - #define AN1 6 - #define AN2 6 - #define AN3 4 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+37 "; - erri = ER; - NNL = NL; - - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel38 */ -/* PARALLEL ON arrA[i+2][ j][k] shift */ -void parallel38() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+38 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel39 */ -/* PARALLEL ON arrA[i][ j][-k+8] reverse */ -void parallel39() -{ - #define AN1 5 - #define AN2 5 - #define AN3 5 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define ln 6 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - - char tname[] = "paral+39 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3) - //#pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][k3n * n + ln]) reduction(min(erri)), private(ia, ja, na) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - if (A3[ia][ja][na] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel310 */ -/* PARALLEL ON arrA[i][ j][2] */ -void parallel310() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define ln 2 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[i][j][n] with A3[k1i*i+li][k2j*j+lj][ln]) - - char tname[] = "paral+310 "; - erri = ER; - NNL = NL; - - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(B3) - #pragma dvm parallel([i][j][n] on A3[k1i * i + li][k2j * j + lj][ln]) reduction(min(erri)), private(n) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel311 */ -/* PARALLEL ON arrA[][ j][ k] */ -void parallel311() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 6 - #define BN2 6 - #define BN3 6 - /* parameters for PARALLEL ON arrA[*][k2j*j+lj][k3n*n+ln] */ - #define k1i 0 - #define k2i 0 - #define k3i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define ln 0 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[][j][n] with A3[][k2j*j+lj][k3n*n+ln]) - - char tname[] = "paral+311 "; - erri = ER; - NNL = NL; - #pragma dvm region out(A3, B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(A3, B3) - for (i = 0; i < BN1; i++) { - #pragma dvm parallel([j][n] on A3[][k2j * j + lj][k3n * n + ln]) reduction(min(erri)) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - } - - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel312 */ -/* PARALLEL ON arrA[1][i][3] */ -void parallel312() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - /* parameters for PARALLEL ON arrA[li][k2j*j+lj][ln] */ - #define k1i 0 - #define k2i 0 - #define k3i 0 - #define li 1 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define ln 3 - - #pragma dvm array distribute[block][*][block] - int (*A3)[AN2][AN3]; - A3 = (int (*)[AN2][AN3])malloc(AN1 * sizeof(int[AN2][AN3])); - #pragma dvm array - int (*B3)[BN2][BN3]; - B3 = (int (*)[BN2][BN3])malloc(BN1 * sizeof(int[BN2][BN3])); - #pragma dvm realign(B3[i][j][n] with A3[li][k2j*j+lj][ln]) - - char tname[] = "paral+312 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = i * NL / 10 + j * NL / 100 + n * NL / 1000; - } /*end region*/ - #pragma dvm get_actual(B3) - #pragma dvm parallel([i][j][n] on A3[li][k2j * j + lj][ln]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - if (B3[i][j][n] != i * NL / 10 + j * NL / 100 + n * NL / 1000) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000); - #pragma dvm get_actual(erri) - - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B3); - free(A3); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 - #undef k1i - #undef k2i - #undef k3i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef ln -} -/* ---------------------------------------------parallel41 */ -/* arrA4[*][*] [BLOCK] [BLOCK] - PARALLEL ON arrA[i][2* j][k][3*l] stretching */ -void parallel41() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 3 - #define lm 0 - - #pragma dvm array distribute[*][*][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+41 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel42 */ -/* PARALLEL ON arrA[i+2][ j][k][ l+3] shift */ -void parallel42() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 3 - - #pragma dvm array distribute[*][block][*][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+42 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel43 */ -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -void parallel43() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define k4n 0 - #define ln 8 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m -1 - #define lm 8 - - #pragma dvm array distribute[block][block][*][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+43 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - //#pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel44 */ -/* PARALLEL ON arrA[i][ j][2][ l] */ -void parallel44() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 2 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[block][*][*][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]) - - - char tname[] = "paral+44 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][ln][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel45 */ -/* PARALLEL ON arrA[i][ j][ ][ k] */ -void parallel45() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[*][block][block][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][k4m*m+lm]) - - char tname[] = "paral+45 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel46 */ -/* PARALLEL ON arrA[i][ j][ ][3] */ -void parallel46() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 0 - #define lm 3 - - #pragma dvm array distribute[*][*][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][lm]) - - char tname[] = "paral+46 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus34.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus34.cdv deleted file mode 100644 index 967449b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/PARALLEL/paralplus34.cdv +++ /dev/null @@ -1,672 +0,0 @@ -/* PARALLELPLUS34 - -TESTING parallel CLAUSE -arrA4[BLOCK][*][ BLOCK][BLOCK] or arrA4[*][BLOCK][ BLOCK][BLOCK] etc. */ - -#include -#include -#include - -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -static void parallel41(); -static void parallel42(); -static void parallel43(); -static void parallel44(); -static void parallel45(); -static void parallel46(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int PN = 2; -static int erri, NNL, i, j, n, m, ia, ja, na, ma, ib, jb, nb, mb, Avalue, Bvalue, s, cs; - -int main(int an, char **as) -{ - printf("===START OF paralplus34========================\n"); -/* PARALLEL ON arrA[i][2* j][k][3*l] stretching */ - parallel41(); -/* PARALLEL ON arrA[i+2][ j][k][ l+3] */ - parallel42(); -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -// parallel43(); -/* PARALLEL ON arrA[i][ j][2][ l] - compression !! */ - parallel44(); -/* PARALLEL ON arrA[i][ j][ ][ k] - replication */ - parallel45(); -/* PARALLEL ON arrA[i][ j][ ][3] - compression and replication */ - parallel46(); - - printf("=== END OF paralplus34 =========================\n"); - return 0; -} -/* ---------------------------------------------parallel41 */ -/* arrA4[BLOCK][*] [BLOCK] [BLOCK] - PARALLEL ON arrA[i][2* j][k][3*l] stretching */ -void parallel41() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 2 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 3 - #define lm 0 - - #pragma dvm array distribute[block][*][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+41 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel42 */ -/* PARALLEL ON arrA[i+2][ j][k][ l+3] shift */ -void parallel42() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 2 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 1 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 3 - - #pragma dvm array distribute[*][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+42 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel43 */ -/* PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse */ -void parallel43() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n -1 - #define k4n 0 - #define ln 8 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m -1 - #define lm 8 - - #pragma dvm array distribute[block][block][*][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - - char tname[] = "paral+43 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(A4) - //#pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][k3n * n + ln][k4m * m + lm]) reduction(min(erri)), private(ia, ja, na, ma) - for (i = 0; i < ((AN1 - li) / k1i); i++) - for (j = 0; j < ((AN2 - lj) / k2j); j++) - for (n = 0; n < ((AN3 - ln) / k3n); n++) - for (m = 0; m < ((AN4 - lm) / k4m); m++) { - ia = k1i * i + li; - ja = k2j * j + lj; - na = k3n * n + ln; - ma = k4m * m + lm; - if (A4[ia][ja][na][ma] != ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - } - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel44 */ -/* PARALLEL ON arrA[i][ j][2][ l] */ -void parallel44() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 2 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[block][block][*][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][ln][k4m*m+lm]) - - - char tname[] = "paral+44 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][ln][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel45 */ -/* PARALLEL ON arrA[i][ j][ ][ k] */ -void parallel45() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 1 - #define lm 0 - - #pragma dvm array distribute[block][block][block][*] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][k4m*m+lm]) - - char tname[] = "paral+45 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][k4m * m + lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/* ---------------------------------------------parallel46 */ -/* PARALLEL ON arrA[i][ j][ ][3] */ -void parallel46() -{ - #define AN1 6 - #define AN2 6 - #define AN3 6 - #define AN4 6 - #define BN1 3 - #define BN2 3 - #define BN3 3 - #define BN4 3 - /* parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - #define k1i 1 - #define k2i 0 - #define k3i 0 - #define k4i 0 - #define li 0 - #define k1j 0 - #define k2j 1 - #define k3j 0 - #define k4j 0 - #define lj 0 - #define k1n 0 - #define k2n 0 - #define k3n 0 - #define k4n 0 - #define ln 0 - #define k1m 0 - #define k2m 0 - #define k3m 0 - #define k4m 0 - #define lm 3 - - #pragma dvm array distribute[*][block][block][block] - int (*A4)[AN2][AN3][AN4]; - A4 = (int (*)[AN2][AN3][AN4])malloc(AN1 * sizeof(int[AN2][AN3][AN4])); - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - B4 = (int (*)[BN2][BN3][BN4])malloc(BN1 * sizeof(int[BN2][BN3][BN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k1i*i+li][k2j*j+lj][][lm]) - - char tname[] = "paral+46 "; - erri = ER; - NNL = NL; - #pragma dvm actual(erri) - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - } /*end region*/ - #pragma dvm get_actual(B4) - #pragma dvm parallel([i][j][n][m] on A4[k1i * i + li][k2j * j + lj][][lm]) reduction(min(erri)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - if (B4[i][j][n][m] != i * NL / 10 + j * NL / 100 + n * NL / 1000 + m) - erri = Min(erri, i * NL / 10 + j * NL / 100 + n * NL / 1000 + m); - #pragma dvm get_actual(erri) - s = 0; - cs = 0; - if (erri == ER && s == cs) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef k1i - #undef k2i - #undef k3i - #undef k4i - #undef li - #undef k1j - #undef k2j - #undef k3j - #undef k4j - #undef lj - #undef k1n - #undef k2n - #undef k3n - #undef k4n - #undef ln - #undef k1m - #undef k2m - #undef k3m - #undef k4m - #undef lm -} -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign11.cdv deleted file mode 100644 index 01bc6ca..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign11.cdv +++ /dev/null @@ -1,774 +0,0 @@ -/* REALIGN11 -Testing REALIGN directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void realign111(); -static void realign112(); -static void realign1121(); -static void realign112r(); -static void realign113(); -static void realign113r(); -static void realign114(); -static void realign1141(); -static void realign115(); -static void realign116(); - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 1000; -static int ER = 10000; - -static int erria, errib, i, j, ia, ib; - -int main(int an, char **as) -{ - printf("=== START OF REALIGN11 ======================\n"); - - /* ALIGN arrB[i] WITH arrA[i] REALIGN arrB[i] WITH arrA[2*i+8] */ - realign111(); - /* ALIGN arrB[i] WITH arrA[i+4] REALIGN arrB[i] WITH arrA[i+8] */ - realign112(); - /* ALIGN arrB[i] WITH arrA[i+2] REALIGN arrB[i] WITH arrA[2*i+5] */ - realign1121(); - /* ALIGN arrB[i] WITH arrA[i+4] REALIGN arrB[i] WITH arrA[-i+8] */ -// realign112r(); - /* ALIGN arrB[i] WITH arrA[3*i+2] REALIGN arrB[i] WITH arrA[2*i+1] */ - realign113(); - /* ALIGN arrB[i] WITH arrA[-i+8] REALIGN arrB[i] WITH arrA[3*i+2] */ -// realign113r(); - /* ALIGN arrB[i] WITH arrA[2*i+8] REALIGN arrB[i] WITH arrA[i] */ - realign114(); - /* ALIGN arrB[i] WITH arrA[2*i] REALIGN arrB[i] WITH arrA[i+2] */ - realign1141(); - /* ALIGN arrB[ ] WITH arrA[ ] REALIGN arrB[i] WITH arrA[i+4] */ - realign115(); - /* ALIGN arrB[i] WITH arrA[4*i+3] REALIGN arrB[] WITH arrA[] */ - realign116(); - - printf ("=== END OF REALIGN11 ======================\n"); - return 0; -} - -/* ---------------------------------------------REALIGN111 */ - /* ALIGN arrB[i] WITH arrA[i] REALIGN arrB[i] WITH arrA[2*i+8] */ -void realign111() -{ - #define AN1 30 - #define BN1 8 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 1,li = 0; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 2, lri = 8; /* lri = -1 RTS err */ - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - - char tname[] = "realign111 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)) { - ib = (i-li)/k1i; - B1[ib] = ib; - } - } - - } /* end region */ - - #pragma dvm realign (B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inlocal(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) private(ia), reduction(min(erria), min(errib)) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != (ia)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------REALIGN112 */ - /* ALIGN arrB[i] WITH arrA[i+4] REALIGN arrB[i] WITH arrA[i+8] */ -void realign112() -{ - #define AN1 16 - #define BN1 4 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 1,li = 4; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 1,lri = 8; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - - char tname[] = "realign112 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 1; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i * 2; - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)){ - ib = (i-li)/k1i; - B1[ib] += ib; - } - } - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) private(ia), reduction(min(erria), min(errib)) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i+1)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != ia*2) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------REALIGN1121*/ - /* ALIGN arrB[i] WITH arrA[i+2] REALIGN arrB[i] WITH arrA[2*i+5] */ -void realign1121() -{ - int AN1 = 25; - int BN1 = 7; - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 1; - int li = 4; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 2; - int lri = 5; - - char tname[] = "realign1121"; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - A1 = malloc(sizeof(int[AN1])); - B1 = malloc(sizeof(int[BN1])); - - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 2; - } - - #pragma dvm region inout(B1), out(A1) - { - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] += ib; - } - } - } - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual(erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) reduction(min(erria), min(errib)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i+2) - errib = Min(errib, i); - ia = kr1i * i + lri; - if (A1[ia] != ia) - erria = Min(erria, i); - } - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - free(B1); - free(A1); -} - -/* ---------------------------------------------REALIGN112r */ - /* ALIGN arrB[i] WITH arrA[i+4] REALIGN arrB[i] WITH arrA[-i+8] */ -void realign112r() -{ - #define AN1 12 - #define BN1 5 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 1,li = 4; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = -1,lri = 8; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - - char tname[] = "realign112r "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)){ - ib = (i-li)/k1i; - B1[ib] = ib; - } - } - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) private(ia), reduction(min(erria), min(errib)) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != (ia)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} - -/* ---------------------------------------------REALIGN113 */ - /* ALIGN arrB[i] WITH arrA[3*i+2] REALIGN arrB[i] WITH arrA[2*i+1] */ -void realign113() -{ - #define AN1 30 - #define BN1 6 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 3,li = -2; /* 3*i + (-2) - RTS err */ -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 2,lri = -1; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i - li]) - int B1[BN1]; - - char tname[] = "realign113 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 5; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i+3; -// if (((i-li) == (((i-li)/k1i) * k1i)) && -// (((i-li)/k1i) >= 0) && -// (((i-li)/k1i) < BN1)) { -// ib = (i-li)/k1i; -// B1[ib] = B1[ib] + ib; -// } -// } - if (((i+li) == (((i+li)/k1i) * k1i)) && - (((i+li)/k1i) >= 0) && - (((i+li)/k1i) < BN1)) { - ib = (i+li)/k1i; - B1[ib] = B1[ib] + ib; - } - } - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i - lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) reduction(min(erria), min(errib)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i+5) - errib = Min(errib, i); - ia=kr1i * i - lri; - if (A1[ia] != (ia+3)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------REALIGN113r */ - /* ALIGN arrB[i] WITH arrA[-i+8] REALIGN arrB[i] WITH arrA[3*i+2] */ -void realign113r() -{ - #define AN1 18 - #define BN1 5 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = -1,li = 8; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 3,lri = 2; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - - char tname[] = "realign113r "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)) { - ib = (i-li)/k1i; - B1[ib] = ib; - } - } - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) reduction(min(erria),min(errib)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != (ia)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} - -/* ---------------------------------------------REALIGN114 */ - /* ALIGN arrB[i] WITH arrA[2*i+8] REALIGN arrB[i] WITH arrA[i] */ -void realign114() -{ - #define AN1 24 - #define BN1 8 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 2, li = 8; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 1, lri = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - - char tname[] = "realign114 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 0; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i; - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)) { - ib = (i-li)/k1i; - B1[ib] = ib; - } - } - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) reduction(min(erria), min(errib)), private (ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != (ia)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/* ------ ---------------------------------------REALIGN1141*/ - /* ALIGN arrB[i] WITH arrA[4*i] REALIGN arrB[i] WITH arrA[i+2] */ -void realign1141() -{ - int AN1 = 24; - int BN1 = 6; - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 4; - int li = 0; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 1; - int lri = 2; - - char tname[] = "realign1141"; - - #pragma dvm array distribute[block] - int *A1; - #pragma dvm array - int *B1; - - A1 = malloc(sizeof(int[AN1])); - B1 = malloc(sizeof(int[BN1])); - - #pragma dvm realign(B1[i] with A1[k1i * i + li]) - - erria = ER; - errib = ER; - - #pragma dvm region out(B1, A1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = 4; - - #pragma dvm parallel([i] on A1[i]) private(ib) - for (i = 0; i < AN1; i++) - { - A1[i] = i+2; - if (((i - li) == (((i - li) / k1i) * k1i)) && - (((i - li) / k1i) >= 0) && - (((i - li) / k1i) < BN1)) - { - ib = (i - li) / k1i; - B1[ib] += ib; - } - } - } - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual(erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) reduction(min(erria), min(errib)), private(ia) - for (i = 0; i < BN1; i++) - { - if (B1[i] != i+4) - errib = Min(errib, i); - ia = kr1i * i + lri; - if (A1[ia] != ia+2) - erria = Min(erria, i); - } - } - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - free(B1); - free(A1); -} -/* ---------------------------------------------REALIGN115 */ - /* ALIGN arrB[ ] WITH arrA[ ] REALIGN arrB[i] WITH arrA[i+4] */ -void realign115() -{ - #define AN1 16 - #define BN1 8 - -/* parameters for ALIGN arrB[] WITH arrA[] */ - int k1i = 0,li = 0; -/* parameters for REALIGN arrB[i] WITH arrA[kr1i*i+lri] */ - int kr1i = 1,lri = 4; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([] with A1[]) - int B1[BN1]; - - char tname[] = "realign115 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = i; - - } /* end region */ - - #pragma dvm realign(B1[i] with A1[kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) private (ia), reduction(min(erria), min(errib)) - for (i = 0; i < BN1; i++) - { - if (B1[i] != (i)) - errib = Min(errib, i); - ia=kr1i * i + lri; - if (A1[ia] != (ia)) - erria = Min(erria, i); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/* ---------------------------------------------REALIGN116 */ - /* ALIGN arrB[i] WITH arrA[4*i+3] REALIGN arrB[] WITH arrA[] */ -void realign116() -{ - #define AN1 35 - #define BN1 8 - -/* parameters for ALIGN arrB[i] WITH arrA[k1i*i+li] */ - int k1i = 4,li = 3; /* 4*i-3 RTS err */ -/* parameters for REALIGN arrB[] WITH arrA[] */ - int kr1i = 0,lri = 0; - - #pragma dvm array distribute[block] - int A1[AN1]; - #pragma dvm array align([i] with A1[k1i*i+li]) - int B1[BN1]; - - char tname[] = "realign116 "; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A1, B1) - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i+6; - - #pragma dvm parallel([i] on A1[i]) - for (i = 0; i < AN1; i++) - A1[i] = (i+1)*3; - - } /* end region */ - - #pragma dvm realign(B1[] with A1[]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region inout(A1,B1) - { - #pragma dvm parallel([i] on B1[i]) reduction(min(errib)) - for (i = 0; i < BN1; i++) - if (B1[i] != i+6) - errib = Min(errib, i); - #pragma dvm parallel([i] on A1[i]) reduction(min(erria)) - for (i = 0; i < AN1; i++) - if (A1[i] != (i+1)*3) - erria = Min(erria, i); - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 -} -/*-------------------------------------------------------*/ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign22.cdv deleted file mode 100644 index afd396f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign22.cdv +++ /dev/null @@ -1,855 +0,0 @@ -/* REALIGN22 -Testing REALIGN directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void realign221(); -static void realign222(); -static void realign223(); -static void realign224(); -static void realign225(); -static void realign226(); -static void realign227(); -static void realign228(); -static void realign229(); - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 10000; -static int ER = 100000; - -static int s, cs, erri, erria, errib, i, j, k, n, ia, ja, ib, jb; - -int main(int an, char **as) -{ - printf("=== START OF REALIGN22 ======================\n"); - - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[i][j] WITH arrA[3*i+2][2*j+1] */ - realign221(); - /* ALIGN arrB[i][j] WITH arrA[j+1][i] - REALIGN arrB[i][j] WITH arrA[i+4][j] */ - realign222(); - /* ALIGN arrB[i][*] WITH arrA[*][i] - REALIGN arrB[i][j] WITH arrA[i+4][j+4] */ - realign223(); - /* ALIGN arrB[*][*] WITH arrA[*][1] - REALIGN arrB[i][j] WITH arrA[i+4][j+4] */ - realign224(); - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[*][*] WITH arrA[*][2] */ - realign225(); - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[i][j] WITH arrA[2*j+1][3*i+2] */ - realign226(); - /* ALIGN arrB[*][*] WITH arrA[4][*] - REALIGN arrB[i][j] WITH arrA[i+2][2*j] */ - realign227(); - /* ALIGN arrB[i][j] WITH arrA[j][i] - REALIGN arrB[*][*] WITH arrA[3][*] */ - realign228(); - /* ALIGN arrB[i][j] WITH arrA[2*i][3*j+1] - REALIGN arrB[i][j] WITH arrA[j+6][i+2] */ - realign229(); - - printf ("=== END OF REALIGN22 ======================\n"); - return 0; -} - -/* ---------------------------------------------REALIGN221 */ - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[i][j] WITH arrA[3*i+2][2*j+1] */ -void realign221() -{ - #define AN1 16 - #define AN2 16 - #define BN1 4 - #define BN2 4 - -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i*i+li][k2j*j+lj] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr1i*i+lri][kr2j*j+lrj] */ - int kr1i = 3, lri = 2; - int kr2j = 2, lrj = 1; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - - char tname[] = "realign221"; - - erria = ER; - errib = ER; - - #pragma dvm region in(A2,B2), out(A2,B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - - #pragma dvm parallel([i][j] on A2[i][j]) private(ib,jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = (i*NL+j)*2; - if ( - ((i-li) ==(((i-li)/k1i) * k1i)) && - ((j-lj) ==(((j-lj)/k2j) * k2j)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - B2[ib][jb]= B2[ib][jb] + ib*NL+jb; - } - } - - } /* end region */ - - #pragma dvm realign(B2[i][j] with A2[kr1i * i + lri][kr2j * j + lrj]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region in(A2,B2), local(A2,B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria),min(errib)), private(ia,ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i*NL+j)) - errib = Min(errib, i*NL/10+j); - - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - if (A2[ia][ja] != (ia*NL+ja)*2) - erria = Min(erria, i*NL/10+j); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN222 */ - /* ALIGN arrB[i][j] WITH arrA[j+1][i] - REALIGN arrB[i][j] WITH arrA[i+4][j] */ -void realign222() -{ - #define AN1 8 - #define AN2 8 - #define BN1 4 - #define BN2 4 - -/* parameters for ALIGN arrB[i][j] WITH arrA[k2j*j+lj][k1i*i+li] */ - int k1i = 1,li = 0; - int k2j = 1,lj = 1; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr1i*i+lri][kr2j*j+lrj] */ - int kr1i = 1,lri = 4; - int kr2j = 1,lrj = 0; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k2j * j + lj][k1i * i + li]) - int B2[BN1][BN2]; - - char tname[] = "realign222"; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A2,B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 1; - - #pragma dvm parallel([i][j] on A2[i][j]) private(ib), private(jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i*NL+j; - if ( - ((i-lj) ==(((i-lj)/k2j) * k2j)) && - ((j-li) ==(((j-li)/k1i) *k1i)) && - (((i-lj)/k2j) >= 0) && - (((j-li)/k1i) >= 0) && - (((i-lj)/k2j) < BN2) && - (((j-li)/k1i) < BN1) - ) - { - ib = (j-li)/k1i; - jb = (i-lj)/k2j; - B2[ib][jb]=B2[ib][jb]+ib*NL+jb; - } - } - - } /* end region */ - - #pragma dvm realign(B2[i][j] with A2[kr1i * i + lri][kr2j * j + lrj]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) private(ia,ja), reduction(min(erria),min(errib)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i*NL+j)+1) - errib = Min(errib, i*NL/10+j); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - if (A2[ia][ja] != (ia*NL+ja)) - erria = Min(erria, i*NL/10+j); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN223 */ - /* ALIGN arrB[i][*] WITH arrA[*][i] - REALIGN arrB[i][j] WITH arrA[i+4][j+4] */ -void realign223() -{ - #define AN1 10 - #define AN2 10 - #define BN1 4 - #define BN2 4 - -/* parameters for ALIGN arrB[i][] WITH arrA[][k1i*i+li] */ - int k1i = 1, li = 0; - int k2j = 0, lj = 0; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr1i*i+lri][kr2j*j+lrj] */ - int kr1i = 1, lri = 4; - int kr2j = 1, lrj = 4; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][] with A2[][k1i * i + li]) - int B2[BN1][BN2]; - - char tname[] = "realign223"; - - erria = ER; - errib = ER; - - #pragma dvm actual (errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = i*NL+j+5; - - #pragma dvm parallel([i][j] on A2[i][j]) private(ib,jb,k), reduction (min(errib)) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i*NL+j; - for (k = 0; k < BN2; k++) - { - if ( - ((j-li) ==(((j-li)/k1i) *k1i)) && - (((j-li)/k1i) >= 0) && - (((j-li)/k1i) < BN1) - ) - { - ib = ((j-li)/k1i); - jb = k; - if (B2[ib][jb] !=(ib*NL+jb+5)) - errib = Min(errib, i*NL/10+j); - } - } - } - - } /* end region */ - - #pragma dvm realign(B2[i][j] with A2[kr1i * i + lri][kr2j * j + lrj]) - - #pragma dvm get_actual (errib) - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria), min(errib)), private(ia,ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i*NL+j+5)) - errib = Min(errib, i*NL/10+j); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - if (A2[ia][ja] != (ia*NL+ja)) - erria = Min(erria, i*NL/10+j); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN224 */ - /* ALIGN arrB[*][*] WITH arrA[*][1] - ALIGN arrB[i][j] WITH arrA[i+4][j+4] shift along i and j */ -void realign224() -{ - #define AN1 12 - #define AN2 14 - #define BN1 5 - #define BN2 6 - -/* parameters for ALIGN arrB[][] WITH arrA[][lj] */ - int k1i = 0, li = 0; - int k2j = 0, lj = 1; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr1i*i+lri][kr2j*j+lrj] */ - int kr1i = 1, lri = 4; - int kr2j = 1, lrj = 4; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([][] with A2[][k2j * j + lj]) - int B2[BN1][BN2]; - - char tname[] = "realign224"; - - erria = ER; - errib = ER; - - #pragma dvm actual (errib) - - #pragma dvm region inout(A2,B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = (i*NL+j)*2; - - #pragma dvm parallel([i][j] on A2[i][j]) private(ib,jb,k,n), reduction(min(errib)) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i*NL+j+5; - if (j == (lj)) - for (k = 0; k < BN1; k++) - for (n = 0; n < BN2; n++) - { - ib = k; - jb = n; - if (B2[ib][jb] !=(ib*NL+jb)*2) - errib = Min(errib, i*NL/10+j); - } - } - - } /* end region */ - - #pragma dvm realign(B2[i][j] with A2[kr1i * i + lri][kr2j * j + lrj]) - - #pragma dvm get_actual (errib) - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria), min(errib)), private(ia,ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i*NL+j)*2) - errib = Min(errib, i*NL/10+j); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - if (A2[ia][ja] != (ia*NL+ja+5)) - erria = Min(erria, i*NL/10+j); - } - - } /* end region */ - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN225 */ - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[*][*] WITH arrA[*][2] */ -void realign225() -{ - #define AN1 10 - #define AN2 10 - #define BN1 4 - #define BN2 4 - -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i*i+li][k2j*j+lj] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; -/* parameters for REALIGN arrB[][] WITH arrA[][lrj] */ - int kr1i = 0, lri = 0; - int kr2j = 0, lrj = 2; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - - char tname[] = "realign225"; - - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - - #pragma dvm parallel([i][j] on A2[i][j]) private(ib,jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i*NL+j; - if ( - ((i-li) ==(((i-li)/k1i) * k1i)) && - ((j-lj) ==(((j-lj)/k2j) *k2j)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - B2[ib][jb]=ib*NL+jb; - } - } - - } /* end region */ - - #pragma dvm realign(B2[][] with A2[][kr2j * j + lrj]) - - #pragma dvm actual (errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction (min(errib)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - if (B2[i][j] != (i*NL+j)) - errib = Min(errib, i*NL/10+j); - - } /* end region */ - - #pragma dvm get_actual(errib) - - if (errib == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN226 */ - /* ALIGN arrB[i][j] WITH arrA[i][j] - REALIGN arrB[i][j] WITH arrA[2*j+1][3*i+2] */ -void realign226() -{ - #define AN1 16 - #define AN2 18 - #define BN1 6 - #define BN2 4 - -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i*i+li][k2j*j+lj] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr2j*j+lrj][kr1i*i+lri] */ - int kr1i = 3, lri = 2; - int kr2j = 2, lrj = 1; - - #pragma dvm array distribute[block][block] - int A2[AN1][AN2]; - #pragma dvm array align([i][j] with A2[k1i * i + li][k2j * j + lj]) - int B2[BN1][BN2]; - - char tname[] = "realign226"; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A2), in(B2), out(B2) - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - - } /* end region */ - - #pragma dvm region - { - #pragma dvm parallel([i][j] on A2[i][j]) private(ib,jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = (i*NL+j)*3; - if ( - ((i-li) ==(((i-li)/k1i) * k1i)) && - ((j-lj) ==(((j-lj)/k2j) * k2j)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - B2[ib][jb]=ib*NL+jb; - } - } - - } /* end region */ - - #pragma dvm realign(B2[i][j] with A2[kr2j*j+lrj][kr1i*i+lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria),min(errib)),private(ia,ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i*NL+j)) - errib = Min(errib, i*NL/10+j); - ia=kr2j * j + lrj; - ja=kr1i * i + lri; - if (A2[ia][ja] != (ia*NL+ja)*3) - erria = Min(erria,i*NL/10+j); - } - - } /* end region */ - - #pragma dvm get_actual(errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef BN2 -} -/* ---------------------------------------------REALIGN227 */ - /* ALIGN B2[*][*] WITH arrA[4][*] - REALIGN B2[i][j] WITH arrA[i+2][2*j] */ -void realign227() -{ - int AN1 = 10; - int AN2 = 12; - int BN1 = 4; - int BN2 = 6; - -/* parameters for ALIGN arrB[][] WITH arrA[li][] */ - int k1i = 0, li = 4; - int k2j = 0, lj = 0; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr1i*i+li][kr2j*j+lj] */ - int kr1i = 1, lri = 2; - int kr2j = 2, lrj = 0; - - char tname[] = "realign227"; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - #pragma dvm array - int (*B2)[BN2]; - - A2 = malloc(sizeof(int[AN1][AN2])); - B2 = malloc(sizeof(int[BN1][BN2])); - - #pragma dvm realign(B2[][] with A2[li][]) - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([j][i] on A2[i][j]) private(ib, jb, k, n) - for (j = 0; j < AN2; j++) - for (i = 0; i < AN1; i++) - { - A2[i][j] = i * NL + j + 4; - if (i == li) - for (k = 0; k < BN1; k++) - for (n = 0; n < BN2; n++) - { - ib = k; - jb = n; - B2[ib][jb] = ib * NL + jb + 7; - } - } - } - - #pragma dvm realign(B2[i][j] with A2[kr1i * i + lri][kr2j * j + lrj]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria), min(errib)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j + 7)) - errib = Min(errib, i*NL/10+j); - ia = kr1i * i + lri; - ja = kr2j * j + lrj; - if (A2[ia][ja] != (ia * NL + ja + 4)) - erria = Min(erria, i*NL/10+j); - } - } - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - free(B2); - free(A2); -} -/* ---------------------------------------------REALIGN228 */ - /* ALIGN arrB[i][j] WITH arrA[j][i] - REALIGN arrB[*][*] WITH arrA[3][*] */ -void realign228() -{ - int AN1 = 14; - int AN2 = 8; - int BN1 = 4; - int BN2 = 3; - -/* parameters for ALIGN arrB[i][j] WITH arrA[k2j*j+lj][k1i*i+li] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; -/* parameters for REALIGN arrB[][] WITH arrA[lri][] */ - int kr1i = 0, lri = 3; - int kr2j = 0, lrj = 0; - - char tname[] = "realign228"; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - #pragma dvm array - int (*B2)[BN2]; - - A2 = malloc(sizeof(int[AN1][AN2])); - B2 = malloc(sizeof(int[BN1][BN2])); - - #pragma dvm realign(B2[i][j] with A2[k2j * j + lj][k1i * i + li]) - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 1; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if ( - ((i-lj) ==(((i-lj)/k2j) * k2j)) && - ((j-li) ==(((j-li)/k1i) * k1i)) && - (((i-lj)/k2j) >= 0) && - (((j-li)/k1i) >= 0) && - (((i-lj)/k2j) < BN2) && - (((j-li)/k1i) < BN1) - ) - { - ib = (j-li)/k1i; - jb = (i-lj)/k2j; - B2[ib][jb] += ib*NL+jb; - } - } - } - - #pragma dvm realign(B2[][] with A2[lri][]) - - #pragma dvm actual(errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(errib)) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - if (B2[i][j] != i * NL + j + 1) - errib = Min(errib, i*NL/10+j); - } - - #pragma dvm get_actual(errib) - - if (errib == ER) - ansyes(tname); - else - ansno(tname); - - free(B2); - free(A2); -} -/* ---------------------------------------------REALIGN229 */ - /* ALIGN B2[i][j] WITH arrA[2*i][3*j+1] - REALIGN B2[i][j] WITH arrA[j+6][i+2] */ -void realign229() -{ - int AN1 = 12; - int AN2 = 18; - int BN1 = 4; - int BN2 = 6; - -/* parameters for ALIGN arrB[i][j] WITH arrA[k1i*i+li][k2j*j+lj] */ - int k1i = 2, li = 0; - int k2j = 3, lj = 1; -/* parameters for REALIGN arrB[i][j] WITH arrA[kr2j*j+lrj][kr1i*i+lri] */ - int kr1i = 1, lri = 2; - int kr2j = 1, lrj = 6; - - char tname[] = "realign229"; - - #pragma dvm array distribute[block][block] - int (*A2)[AN2]; - #pragma dvm array - int (*B2)[BN2]; - - A2 = malloc(sizeof(int[AN1][AN2])); - B2 = malloc(sizeof(int[BN1][BN2])); - - #pragma dvm realign(B2[i][j] with A2[k1i * i + li][k2j * j + lj]) - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - B2[i][j] = 0; - #pragma dvm parallel([i][j] on A2[i][j]) private(ib, jb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - { - A2[i][j] = i * NL + j; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - B2[ib][jb] = ib * NL + jb; - } - } - } - - #pragma dvm realign(B2[i][j] with A2[kr2j * j + lrj][kr1i * i + lri]) - - #pragma dvm actual (erria, errib) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) reduction(min(erria), min(errib)), private(ia, ja) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - { - if (B2[i][j] != (i * NL + j)) - errib = Min(errib, i*NL/10+j); - ia=kr2j * j + lrj; - ja=kr1i * i + lri; - if (A2[ia][ja] != (ia * NL + ja)) - erria = Min(erria, i*NL/10+j); - } - } - - #pragma dvm get_actual(erria, errib) - - if ((erria == ER) && (errib == ER)) - ansyes(tname); - else - ansno(tname); - - free(B2); - free(A2); -} - -/*-------------------------------------------------------*/ - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign33.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign33.cdv deleted file mode 100644 index 2be207c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign33.cdv +++ /dev/null @@ -1,775 +0,0 @@ -/* REALIGN33 -Testing ALIGN and REALIGN directives */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void realign331(); -static void realign332(); -static void realign333(); -static void realign334(); -static void realign335(); -static void realign336(); - -static void ansyes(const char tname[]); -static void ansno (const char tname[]); - -static int NL = 10000; -static int ER = 100000; - -static int s,cs,erria,errib,i,j,n,l,ia,ja,na,ib,jb,nb; - -int main(int an, char **as) -{ - printf("=== START OF REALIGN33 ===================\n"); - - /* ALIGN arrB3[i][j][n] WITH arrA3[i][j][n] - REALIGN arrB3[i][j][n] WITH arrA3[i+1][j+2][n+3] */ - realign331(); - /* ALIGN arrB3[i][j][n] WITH arrA3[i][j][n] - REALIGN arrB3[i][j][n] WITH arrA3[2*i][3*j][5*n] */ - realign332(); - /* ALIGN arrB3[i][j][n] WITH arrA3[i+2][j+4][n+3] - REALIGN arrB3[i][j][n] WITH arrA3[2*i+1][2*n][j+1] */ - realign333(); - /* ALIGN arrB3[i][j][n] WITH arrA3[n+1][3*i+1][j+2] - REALIGN arrB3[i][j][n] WITH arrA3[2*j][i+1][2*n+1] */ - realign334(); - /* ALIGN arrB[*][*][*] WITH arrA[*][*][*] - REALIGN arrB[i][j][n] WITH arrA[i][j][n] */ - realign335(); - /* ALIGN arrB[i][j][n] WITH arrA[i][j+1][2*n+1] - REALIGN arrB[*][j][n] WITH arrA[j+1][n][1] */ - realign336(); - - printf("=== END OF REALIGN33 ===================\n"); - return 0; -} - -/* ----------------------------------------------------realign331 */ - /* ALIGN arrB3[i][j][n] WITH arrA3[i][j][n] - REALIGN arrB3[i][j][n] WITH arrA3[i+1][j+2][n+3] */ - -void realign331() -{ - #define AN1 10 - #define AN2 10 - #define AN3 10 - #define BN1 9 - #define BN2 8 - #define BN3 6 - -/* parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i=1, li=0; - int k2j=1, lj=0; - int k3n=1, ln=0; -/* parameters for REALIGN arrB[i][j][n] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn] */ - int kr1i=1, lri=1; - int kr2j=1, lrj=2; - int kr3n=1, lrn=3; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign331"; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A3,B3) - { - -// A3 = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = 0; - -// B3 = 0; - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 0; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib,jb,nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i*NL/10+j*NL/100+n*NL/1000; - if (((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) * k2j)) && - ((n-ln) == (((n-ln)/k3n) * k3n)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((n-ln)/k3n) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) && - (((n-ln)/k3n) < BN3)) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - nb = (n-ln)/k3n; - B3[ib][jb][nb]=ib*NL/10+jb*NL/100+nb*NL/1000; - } - } /* end of loop */ - - } /* end region */ - - #pragma dvm realign(B3[i][j][n] with A3[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region inlocal(A3,B3) - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - s = s + B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000)) - errib = Min(errib,i*NL/10 + j*NL/100 + n*NL/1000); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - na=kr3n * n + lrn; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)) - erria = Min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ----------------------------------------------------realign332 */ - /* ALIGN arrB3[i][j][n] WITH arrA3[i][j][n] - REALIGN arrB3[i][j][n] WITH arrA3[2*i][3*j][5*n] */ - -void realign332() -{ - #define AN1 12 - #define AN2 16 - #define AN3 25 - #define BN1 4 - #define BN2 3 - #define BN3 5 - -/* parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i=1, li=0; - int k2j=1, lj=0; - int k3n=1, ln=0; -/* parameters for REALIGN arrB[i][j][n] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn] */ - int kr1i=2, lri=0; - int kr2j=3, lrj=0; - int kr3n=5, lrn=0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign332"; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A3,B3) - { - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = 0; - - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 0; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib,jb,nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n]=i*NL/10+j*NL/100+n*NL/1000 + 10; - if ( - ((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) *k2j)) && - ((n-ln) == (((n-ln)/k3n) * k3n)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((n-ln)/k3n) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) && - (((n-ln)/k3n) < BN3) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - nb = (n-ln)/k3n; - B3[i][j][n]=ib*NL/10+jb*NL/100+nb*NL/1000 + 5; - } - } /* end of loop */ - - } /* end region */ - - #pragma dvm realign(B3[i][j][n] with A3[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region inlocal(A3),inlocal(B3) - { - - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) { - s = s + B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000) + 5) - errib = Min(errib,i*NL/10 + j*NL/100 + n*NL/1000); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - na=kr3n * n + lrn; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)+10) - erria = Min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 5; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} -/* --------------------------------------------------realign333 */ - /* ALIGN arrB3[i][j][n] WITH arrA3[i+2][j+4][n+3] - REALIGN arrB3[i][j][n] WITH arrA3[2*i+1][2*n][j+1] */ - -void realign333() -{ - #define AN1 12 - #define AN2 16 - #define AN3 25 - #define BN1 4 - #define BN2 3 - #define BN3 5 - -/* parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i=1, li=2; - int k2j=1, lj=4; - int k3n=1, ln=3; -/* parameters for REALIGN arrB[i][j][n] WITH arrA[kr1i*i+lri][kr3n*n+lrn][kr2j*j+lrj] */ - int kr1i=2, lri=1; - int kr2j=1, lrj=1; - int kr3n=2, lrn=0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign333"; - - erria = ER; - errib = ER; - - #pragma dvm region inout(A3),inout(B3) - { - -// A3 = 1; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = 1; - -// B3 = 2; - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 2; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib,jb,nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = A3[i][j][n] + i*NL/10+j*NL/100+n*NL/1000; - if ( - ((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) *k2j)) && - ((n-ln) == (((n-ln)/k3n) * k3n)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((n-ln)/k3n) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) && - (((n-ln)/k3n) < BN3) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - nb = (n-ln)/k3n; - B3[ib][jb][nb] += ib*NL/10+jb*NL/100+nb*NL/1000; - } - } /* end of loop */ - - } /* end region */ - - #pragma dvm realign(B3[i][j][n] with A3[kr1i*i+lri][kr3n*n+lrn][kr2j*j+lrj]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - s = s + B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000) + 2) - errib = Min(errib,i*NL/10 + j*NL/100 + n*NL/1000); - ia=kr1i * i + lri; - ja=kr3n * n + lrn; - na=kr2j * j + lrj; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)+1) - erria = Min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 2; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ----------------------------------------------------realign334 */ - /* ALIGN arrB3[i][j][n] WITH arrA3[n+1][3*i+1][j+2] - REALIGN arrB3[i][j][n] WITH arrA3[2*j][i+1][2*n+1] */ - -void realign334() -{ - #define AN1 15 - #define AN2 28 - #define AN3 20 - #define BN1 4 - #define BN2 6 - #define BN3 6 - -/* parameters for ALIGN arrB[i][j][n] WITH arrA[k3n*n+ln][k1i*i+li][k2j*j+lj] */ - int k1i=3, li=1; - int k2j=1, lj=2; - int k3n=1, ln=1; -/* parameters for REALIGN arrB[i][j][n] WITH arrA[kr2j*j+lrj][kr1i*i+lri][kr3n*n+lrn] */ - int kr1i=1, lri=1; - int kr2j=2, lrj=0; - int kr3n=2, lrn=1; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k3n*n+ln][k1i*i+li][k2j*j+lj]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign334"; - - erria = ER; - errib = ER; - - #pragma dvm region in(A3),in(B3),out(A3),out(B3) - { - -// A3 = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = 0; - -// B3 = 0; - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 0; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib,jb,nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] += i*NL/10+j*NL/100+n*NL/1000; - if ( - ((i-ln) == (((i-ln)/k3n) * k3n)) && - ((j-li) == (((j-li)/k1i) * k1i)) && - ((n-lj) == (((n-lj)/k2j) * k2j)) && - (((i-ln)/k3n) >= 0) && - (((j-li)/k1i) >= 0) && - (((n-lj)/k2j) >= 0) && - (((i-ln)/k3n) < BN3) && - (((j-li)/k1i) < BN1) && - (((n-lj)/k2j) < BN2) - ) - { - ib = (j-li)/k1i; - jb = (n-lj)/k2j; - nb = (i-ln)/k3n; - B3[ib][jb][nb] += ib*NL/10+jb*NL/100+nb*NL/1000; - } - } /* end of loop */ - - } /* end region */ - - #pragma dvm realign(B3[i][j][n] with A3[kr2j*j+lrj][kr1i*i+lri][kr3n*n+lrn]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - s += B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000)) - errib = Min(errib,i*NL/10 + j*NL/100 + n*NL/1000); - ia=kr2j * j + lrj; - ja=kr1i * i + lri; - na=kr3n * n + lrn; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)) - erria = Min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ----------------------------------------------------realign335 */ - /* ALIGN arrB[*][*][*] WITH arrA[*][*][*] - REALIGN arrB[i][j][n] WITH arrA[i][j][n] */ - -void realign335() -{ - #define AN1 10 - #define AN2 10 - #define AN3 10 - #define BN1 4 - #define BN2 8 - #define BN3 4 - -/* parameters for ALIGN arrB[*][*][*] WITH arrA[*][*][*] */ - int k1i=0, li=0; - int k2j=0, lj=0; - int k3n=0, ln=0; -/* parameters for REALIGN arrB[i][j][n] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn] */ - int kr1i=1, lri=0; - int kr2j=1, lrj=0; - int kr3n=1, lrn=0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([][][] with A3[][][]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign335"; - - erria = ER; - errib = ER; - - #pragma dvm actual (A3, B3) - - #pragma dvm region inout(B3) - { - -// A3 = 0; - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - A3[i][j][n] = 0; - -// B3 = 6; - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 6; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] += i*NL/10+j*NL/100+n*NL/1000; - } - - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - B3[i][j][n] = B3[i][j][n] + i*NL/10+j*NL/100+n*NL/1000; - } - - } /* end region */ - - #pragma dvm realign(B3[i][j][n] with A3[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region inlocal(A3,B3) - { - - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - s += B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000)+ 6) - errib = Min(errib,i*NL/10 + j*NL/100 + n*NL/1000); - ia=kr1i * i + lri; - ja=kr2j * j + lrj; - na=kr3n * n + lrn; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)) - erria = Min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 6; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ----------------------------------------------------realign336 */ - /* ALIGN arrB3[i][j][n] WITH arrA3[i][j+1][2*n+1] - REALIGN arrB3[*][j][n] WITH arrA[j+1][n][1] */ - -void realign336() -{ - #define AN1 8 - #define AN2 8 - #define AN3 8 - #define BN1 3 - #define BN2 4 - #define BN3 3 - -/* parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i=1,li=0; - int k2j=1,lj=1; - int k3n=2,ln=1; -/* parameters for REALIGN arrB[*][i][j] WITH arrA[kr2j*j+lrj][kr3n*n+lrn][lri] */ - int kr1i=0,lri=1; - int kr2j=1,lrj=1; - int kr3n=1,lrn=0; - - #pragma dvm array distribute[block][block][block] - int A3[AN1][AN2][AN3]; - #pragma dvm array align([i][j][n] with A3[k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B3[BN1][BN2][BN3]; - - char tname[] = "realign336"; - - erria = ER; - errib = ER; - - #pragma dvm actual (B3) - - #pragma dvm region inout(B3), inout(A3) - { - -// B3 = 0; - #pragma dvm parallel([i][j][n] on B3[i][j][n]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - B3[i][j][n] = 0; - - #pragma dvm parallel([i][j][n] on A3[i][j][n]) private(ib,jb,nb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - { - A3[i][j][n] = i*NL/10+j*NL/100+n*NL/1000; - if ( - ((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) *k2j)) && - ((n-ln) == (((n-ln)/k3n) * k3n)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((n-ln)/k3n) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) && - (((n-ln)/k3n) < BN3) - ) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - nb = (n-ln)/k3n; - B3[ib][jb][nb]=ib*NL/10+jb*NL/100+nb*NL/1000; - } - } /* end of loop */ - - } /* end region */ - - #pragma dvm realign(B3[][j][n] with A3[kr2j*j+lrj][kr3n*n+lrn][lri]) - - s=0; - - #pragma dvm actual (erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n] on B3[i][j][n]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - { - s = s + B3[i][j][n]; - if (B3[i][j][n] != (i*NL/10+j*NL/100+n*NL/1000)) - errib = Min(errib,i*NL/10 + j*NL/100+ n*NL/1000); - ia=kr2j*j+lrj; - ja=kr3n*n+lrn; - na=lri; - if (A3[ia][ja][na] != (ia*NL/10+ja*NL/100+na*NL/1000)) - erria = Min(erria,i*NL/10 + j*NL/100+ n*NL/1000); - } /* end of loop */ - - } /* end region */ - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000; - - #pragma dvm get_actual(erria, errib, s) - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef BN1 - #undef BN2 - #undef BN3 -} - -/* ---------------------------------------------------- */ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} -void ansno(const char name[]) -{ - printf ("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign44.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign44.cdv deleted file mode 100644 index 99f8b76..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REALIGN/realign44.cdv +++ /dev/null @@ -1,553 +0,0 @@ -/* REALIGN44 -Testing REALIGN directive */ - -#include -#include -#include - -#define Min(a, b) ((a) < (b) ? (a) : (b)) - -static void realign441(); -static void realign442(); -static void realign443(); -static void realign444(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 10000; -static int ER = 100000; -static int erria, errib, i, j, k, n, m, na, ma, ia, ib, nb, mb, ja, jb, s, cs; - -int main(int an, char **as) -{ - printf("=== START OF REALIGN44 ======================\n"); - - /* ALIGN arrB[i][j][n][m] WITH arrA[i][j][n][m] - REALIGN arrB[][j][n][] WITH arrA[j][n][1][3] */ - realign441(); - /* ALIGN arrB[][j][n][i] WITH arrA[i][j][][n] - REALIGN arrB[i][j][][m] WITH arrA[i][j][2][m] */ - realign442(); - /* ALIGN arrB[i][j][n][m] WITH arrA[i][2*j][3*n][4*m] - REALIGN arrB[i][j][n][m] WITH arrA[i+1][j+2]+[n+3][m+4] */ - realign443(); - /* ALIGN arrB[i][j][n][m] WITH arrA[m][i][j][n] - REALIGN arrB[i][j][n][m] WITH arrA[i+2][3*j+4][2*n+2][m+1] */ - realign444(); - - printf("=== END OF REALIGN44 ========================\n"); - return 0; -} - -/* ---------------------------------------------REALIGN441*/ - /* ALIGN arrB[i][j][n][m] WITH arrA[i][j][n][m] - REALIGN arrB[][j][n][] WITH arrA[j][n][1][3] */ -void realign441() -{ - #define AN1 6 - #define AN2 8 - #define AN3 5 - #define AN4 7 - #define BN1 2 - #define BN2 5 - #define BN3 4 - #define BN4 3 -/* parameters for ALIGN arrB[i][j][n][m] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; - int k3n = 1, ln = 0; - int k4m = 1, lm = 0; -/* parameters for REALIGN arrB[*][j][n][*] WITH arrA[kr2j*j+lrj][kr3n*n+lrn][lri][lrm] */ - int kr1i = 0, lri = 1; - int kr2j = 1, lrj = 0; - int kr3n = 1, lrn = 0; - int kr4m = 0, lrm = 3; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i + li][k2j*j + lj][k3n*n + ln][k4m*m + lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "realign441"; - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm realign(B4[][j][n][] with A4[kr2j*j+lrj][kr3n*n+lrn][lri][lrm]) - - s = 0; - - #pragma dvm actual(erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na, ma) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s += B4[i][j][n][m]; - if (B4[i][j][n][m] !=val) - errib = Min(errib, val); - - ia=kr2j*j+lrj; - ja=kr3n*n+lrn; - na=lri; - ma=lrm; - val = ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma; - if (A4[ia][ja][na][ma] != val) - erria = Min(erria, val); - } - - } - - #pragma dvm get_actual(erria, errib, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else { - ansno(tname); - printf ("%d, %d, %d\n", erria, errib, s); - } - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} - -/* ---------------------------------------------REALIGN442*/ - /* ALIGN arrB[][j][n][i] WITH arrA[i][j][][n] - REALIGN arrB[i][j][][m] WITH arrA[i][j][2][m] */ -void realign442() -{ - int AN1 = 5, AN2 = 5, AN3 = 5, AN4 = 5; - int BN1 = 2, BN2 = 2, BN3 = 2, BN4 = 2; - -/* parameters for ALIGN arrB[*][j][n][i] WITH arrA4(k1i*i+li,k2j*j+lj,*,k3m*n+lm) */ - int k1i = 1, li = 0; - int k2j = 1, lj = 0; - int k3n = 0, ln = 0; - int k3m = 1, lm = 0; -/* parameters for REALIGN arrB[i][j][*][m] WITH arrA(kr1i*i+lri,kr2j*j+lrj,lrn,kr4m*m+lrm) */ - int kr1i = 1, lri = 0; - int kr2j = 1, lrj = 0; - int kr3n = 0, lrn = 2; - int kr4m = 1, lrm = 0; - - char tname[] = "realign442"; - - #pragma dvm array distribute[block][block][block][block] - int (*A4)[AN2][AN3][AN4]; - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - - A4 = malloc(sizeof(int[AN1][AN2][AN3][AN4])); - B4 = malloc(sizeof(int[BN1][BN2][BN3][BN4])); - - #pragma dvm realign(B4[][j][n][i] with A4[k1i*i + li][k2j*j + lj][][k3m*n + lm]) - - erria = ER; - errib = ER; - - #pragma dvm region inout(A4, B4) - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 0; - - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb, k) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - for (k = 0; k < BN1; k++) - { - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((m - lm) == (((m - lm) / k3m) * k3m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((m - lm) / k3m) >= 0) && - (((i - li) / k1i) < BN4) && - (((j - lj) / k2j) < BN2) && - (((m - lm) / k3m) < BN3)) - { - mb = (i - li) / k1i; - jb = (j - lj) / k2j; - ib = k; - nb = (m - lm) / k3m; - B4[ib][jb][nb][mb] = ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - } - - #pragma dvm realign(B4[i][j][][m] with A4[kr1i*i+lri][kr2j*j+lrj][lrn][kr4m*m+lrm]) - s = 0; - #pragma dvm actual(erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na, ma) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s += B4[i][j][n][m]; - if (B4[i][j][n][m] != val) - errib = Min(errib,val); - - ia = kr1i*i + lri; - ja = kr2j*j + lrj; - na = lrn; - ma = kr4m*m + lrm; - val = ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma; - if (A4[ia][ja][na][ma] != val) - erria = Min(erria, val); - } - - } - #pragma dvm get_actual(erria, errib, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - - // printf("erri = %u, ER = %u, s = %u, cs = %u\n", erri, ER, s, cs); - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(A4); -} - -/* ---------------------------------------------REALIGN443*/ - /* ALIGN arrB[i][j][n][m] WITH arrA[i][2*j][3*n][4*m] - REALIGN arrB[i][j][n][m] WITH arrA[i+1][j+2]+[n+3][m+4] */ - -void realign443() -{ - #define AN1 10 - #define AN2 8 - #define AN3 14 - #define AN4 12 - #define BN1 4 - #define BN2 3 - #define BN3 5 - #define BN4 3 -/* parameters for ALIGN arrB[i][j][n][m] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] */ - int k1i = 1, li = 0; - int k2j = 2, lj = 0; - int k3n = 3, ln = 0; - int k4m = 4, lm = 0; -/* parameters for REALIGN arrB[i][j][n][m] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn][kr4m*m+lrm] */ - int kr1i = 1, lri = 1; - int kr2j = 1, lrj = 2; - int kr3n = 1, lrn = 3; - int kr4m = 1, lrm = 4; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k1i*i + li][k2j*j + lj][k3n*n + ln][k4m*m + lm]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "realign443"; - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 5; - - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m + 1; - if (((i - li) == (((i - li) / k1i) * k1i)) && - ((j - lj) == (((j - lj) / k2j) * k2j)) && - ((n - ln) == (((n - ln) / k3n) * k3n)) && - ((m - lm) == (((m - lm) / k4m) * k4m)) && - (((i - li) / k1i) >= 0) && - (((j - lj) / k2j) >= 0) && - (((n - ln) / k3n) >= 0) && - (((m - lm) / k4m) >= 0) && - (((i - li) / k1i) < BN1) && - (((j - lj) / k2j) < BN2) && - (((n - ln) / k3n) < BN3) && - (((m - lm) / k4m) < BN4)) - { - ib = (i - li) / k1i; - jb = (j - lj) / k2j; - nb = (n - ln) / k3n; - mb = (m - lm) / k4m; - B4[ib][jb][nb][mb] += ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - } - - #pragma dvm realign(B4[i][j][n][m] with A4[kr1i*i + lri][kr2j*j + lrj][kr3n*n + lrn][kr4m*m + lrm]) - - s = 0; - - #pragma dvm actual(erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na, ma) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s += B4[i][j][n][m]; - if (B4[i][j][n][m] != val + 5) - errib = Min(errib, val); - - ia=kr1i*i+lri; - ja=kr2j*j+lrj; - na=kr3n*n+lrn; - ma=kr4m*m+lrm; - val = ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma; - if (A4[ia][ja][na][ma] != val + 1) - erria = Min(erria, val); - } - - } - - #pragma dvm get_actual(erria, errib, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m + 5; - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - { - ansno(tname); -// printf ("%d, %d, %d\n", erria, errib, s); - } - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} - -/* ---------------------------------------------REAGLIGN444*/ - /* ALIGN arrB[i][j][n][m] WITH arrA[m][i+1][j][2*n] - REALIGN arrB[i][j][n][m] WITH arrA[i+2][3*j+4][2*n+2][m+1] */ - -void realign444() -{ - #define AN1 12 - #define AN2 15 - #define AN3 16 - #define AN4 10 - #define BN1 4 - #define BN2 4 - #define BN3 5 - #define BN4 3 -/* parameters for ALIGN arrB[i][j][n][m] WITH arrA4[k4m*m+lm][k1i*i+li][k2j*j+lj][k3n*n+ln] */ - int k1i = 1, li = 1; - int k2j = 1, lj = 0; - int k3n = 2, ln = 0; - int k4m = 1, lm = 0; -/* parameters for REALIGN arrB[i][j][n][m] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn][kr4m*m+lrm] */ - int kr1i = 1, lri = 2; - int kr2j = 3, lrj = 4; - int kr3n = 2, lrn = 2; - int kr4m = 1, lrm = 1; - - #pragma dvm array distribute[block][block][block][block] - int A4[AN1][AN2][AN3][AN4]; - #pragma dvm array align([i][j][n][m] with A4[k4m*m+lm][k1i*i+li][k2j*j+lj][k3n*n+ln]) - int B4[BN1][BN2][BN3][BN4]; - char tname[] = "realign444"; - - erria = ER; - errib = ER; - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - B4[i][j][n][m] = 4; - - #pragma dvm parallel([i][j][n][m] on A4[i][j][n][m]) private(ib, jb, nb, mb) - for (i = 0; i < AN1; i++) - for (j = 0; j < AN2; j++) - for (n = 0; n < AN3; n++) - for (m = 0; m < AN4; m++) - { - A4[i][j][n][m] = 10 + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - if ( - ((i-lm) == (((i-lm)/k4m) * k4m)) && - ((j-li) == (((j-li)/k1i) * k1i)) && - ((n-lj) == (((n-lj)/k2j) * k2j)) && - ((m-ln) == (((m-ln)/k3n) * k3n)) && - (((i-lm)/k4m) >= 0) && - (((j-li)/k1i) >= 0) && - (((n-lj)/k2j) >= 0) && - (((m-ln)/k3n) >= 0) && - (((i-lm)/k4m) < BN4)&& - (((j-li)/k1i) < BN1) && - (((n-lj)/k2j) < BN2) && - (((m-ln)/k3n) < BN3) - ) - { - ib = (j-li)/k1i; - jb = (n-lj)/k2j; - nb = (m-ln)/k3n; - mb = (i-lm)/k4m; - B4[ib][jb][nb][mb] += ib * NL / 10 + jb * NL / 100 + nb * NL / 1000 + mb; - } - } - - } /* end region */ - - #pragma dvm realign(B4[i][j][n][m] with A4[kr1i*i + lri][kr2j*j + lrj][kr3n*n + lrn][kr4m*m + lrm]) - - s = 0; - - #pragma dvm actual(erria, errib, s) - - #pragma dvm region - { - #pragma dvm parallel([i][j][n][m] on B4[i][j][n][m]) reduction(min(erria), min(errib), sum(s)), private(ia, ja, na, ma) - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - { - int val = i * NL / 10 + j * NL / 100 + n * NL / 1000 + m; - s += B4[i][j][n][m]; - if (B4[i][j][n][m] != val+4) - errib = Min(errib, val); - - ia=kr1i*i+lri; - ja=kr2j*j+lrj; - na=kr3n*n+lrn; - ma=kr4m*m+lrm; - val = ia * NL / 10 + ja * NL / 100 + na * NL / 1000 + ma; - if (A4[ia][ja][na][ma] != val+10) - erria = Min(erria, val); - } - } - - #pragma dvm get_actual(erria, errib, s) - - cs = 0; - for (i = 0; i < BN1; i++) - for (j = 0; j < BN2; j++) - for (n = 0; n < BN3; n++) - for (m = 0; m < BN4; m++) - cs = cs + i * NL / 10 + j * NL / 100 + n * NL / 1000 + m + 4; - - if ((erria == ER) && (errib == ER) && (s == cs)) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 -} -/* --------------------------------------------- */ - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red11n.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red11n.cdv deleted file mode 100644 index 0cc5548..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red11n.cdv +++ /dev/null @@ -1,995 +0,0 @@ -/* Testing REDUCTION clause - REDUCTION operations: SUM,PRODUCT,MAX,MIN,AND,OR,MAXLOC,MINLOC and - their combinations are executed - for distributed array A(N) -*/ - -#include -#include -#include - -static void red1101(); -static void red1102(); -static void red1103(); -static void red1104(); -static void red1105(); -static void red1106(); -static void red1107(); -static void red1108(); -static void red1111(); /* tests 109-110 are absent */ -static void red1112(); -static void red1113(); -static void red1114(); -static void red1115(); -static void red1116(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int sersum1(int *AR, int N, int NL); -static int sersum1m(int *AR, int N, int NL); -static float sers1mr(float *RAR, int N, float RNL); -static int serprod1(int *AR, int N, int NL); -static float serprodr1(float *AR, int N, float RNL); -static int serand1(int *AR, int N); -static int seror1(int *AR, int N); - -int main(int an, char **as) -{ - printf("===START OF red11n ========================\n"); - - red1101(); - red1102(); - red1103(); - red1104(); - red1105(); - red1106(); - red1107(); - red1108(); - red1111(); - red1112(); - red1113(); - red1114(); - red1115(); - red1116(); - - printf("=== END OF red11n ========================= \n"); - return 0; -} - -/* ---------------------------------------------RED1101 */ -void red1101() -{ - #define N 32 - #define NL 1000 - - int C[N]; - int i, isum1, isumt1; - - char tname[] = "RED1101"; - - #pragma dvm array distribute[block] - int A[N]; - - isum1 = sersum1(C, N, NL); - isumt1=0; - - #pragma dvm actual(isumt1) - - #pragma dvm region inout(A) - { - - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL+i; - - #pragma dvm parallel([i] on A[i]) reduction(sum(isumt1)) - for (i = 0; i < N; i++) - isumt1 = isumt1 + A[i]; - - } /* end region */ - - #pragma dvm get_actual(isumt1) - - if (isum1 == isumt1) - ansyes(tname); - else - { - ansno(tname); -// printf("isum1=%d isumt1=%d\n",isum1,isumt1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1102 */ -void red1102() - { - #define N 15 - #define NL 2 - - int C[N]; - int i; - int iprod1, iprodt1; - char tname[] = "RED1102"; - - #pragma dvm array distribute[block] - int A[N]; - - iprod1 = serprod1(C, N, NL); - - iprodt1 = 1; - - #pragma dvm actual(iprodt1) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - #pragma dvm parallel([i] on A[i]) reduction(product(iprodt1)) - for (i = 0; i < N; i++) - iprodt1 = iprodt1 * A[i]; - - } /* end region */ - - #pragma dvm get_actual(iprodt1) - - if (iprod1 == iprodt1) - ansyes(tname); - else - { - ansno(tname); -// printf ("iprod1 = %d, iprodt1 = %d\n", iprod1, iprodt1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1103 */ -void red1103() -{ - #define N 30 - #define NL 1003 - - int C[N]; - int i, imax1, imaxt1, ni; - char tname[] = "RED1103"; - - #pragma dvm array distribute[block] - int A[N]; - - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - ni = N / 2 - 1; - A[ni] = N + 1 + NL; - - #pragma dvm host_section - { - #pragma dvm remote_access(A[1]) - { - imaxt1 = A[1]; - } - #pragma dvm actual(imaxt1) - } /* end host_section */ - - #pragma dvm parallel([i] on A[i]) reduction(max(imaxt1)) - for (i = 0; i < N; i++) - if (A[i] > imaxt1) imaxt1 = A[i]; - - } /* end region */ - - #pragma dvm get_actual(imaxt1) - - imax1 = N + 1 + NL; - - if (imax1 == imaxt1) - ansyes(tname); - else - { - ansno(tname); -// printf("imax1=%d imaxt1=%d\n",imax1,imaxt1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1104 */ -void red1104() -{ - #define N 16 - #define NL 1004 - int C[N]; - int i, imin1, imint1, ni; - char tname[] = "RED1104"; - - #pragma dvm array distribute[block] - int A[N]; - - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - } /* end region */ - - #pragma dvm remote_access(A[1]) - { - imint1 = A[1]; - } - - ni = N / 2 + 1; - A[ni] = -(N + 1 + NL); - imin1 = -(N + 1 + NL); - - #pragma dvm actual(imint1, A[ni]) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) reduction(min(imint1)) - for (i = 0; i < N; i++) - if (A[i] < imint1) imint1 = A[i]; - } /* end region */ - - #pragma dvm get_actual(imint1) - - if (imin1 == imint1) - ansyes(tname); - else - { - ansno(tname); -// printf("imin1=%d imint1=%d\n",imin1,imint1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1105 */ -void red1105() -{ - #define N 32 - #define RNL 1005. - - float C[N]; - int i, ni; - float imax1, imaxt1; - char tname[] = "RED1105"; - - #pragma dvm array distribute[block] - float A[N]; - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = RNL + i; - - ni = N / 2 - 1; - A[ni] = N + 1. + RNL; - imax1 = N + 1. + RNL; - - } /* end region */ - - #pragma dvm get_actual(imax1) - - #pragma dvm remote_access(A[1]) - { - imaxt1 = A[1]; - } - - #pragma dvm actual(imaxt1) - - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) reduction(max(imaxt1)) - for (i = 0; i < N; i++) - if (A[i] > imaxt1) imaxt1=A[i]; - - } /* end region */ - - #pragma dvm get_actual(imaxt1) - - if (imax1 == imaxt1) - ansyes(tname); - else - { - ansno(tname); -// printf("imax1=%f imaxt1=%f\n",imax1,imaxt1); - } - - #undef N - #undef RNL -} - -/* ---------------------------------------------RED1106 */ -void red1106() -{ - #define N 11 - float RNL = 1.; - - float C[N]; - int i; - float iprod1, iprodt1; - char tname[] = "RED1106"; - - #pragma dvm array distribute[block] - float A[N]; - - iprod1 = serprodr1(C, N, RNL); - iprodt1 = 1.; - - #pragma dvm actual(iprodt1) - - #pragma dvm region out(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = RNL + i; - - #pragma dvm parallel([i] on A[i]) reduction(product(iprodt1)) - for (i = 0; i < N; i++) - iprodt1 = iprodt1 * A[i]; - - } /* end region */ - - #pragma dvm get_actual(iprodt1) - - if (iprod1 == iprodt1) - ansyes(tname); - else - { - ansno(tname); -// printf ("iprod1 = %f, iprodt1 = %f\n", iprod1, iprodt1); - } - - #undef N -} - -/* ---------------------------------------------RED1107 */ -void red1107() -{ - #define N 31 - - int CL[N]; - int i; - int land1, landt1; - char tname[] = "RED1107"; - - #pragma dvm array distribute[block] - int A[N]; - - land1 = serand1(CL, N); - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i+=2) - A[i] = 1; - - #pragma dvm parallel([i] on A[i]) - for (i = 1; i < N; i+=2) - A[i] = 0; - - } /* end region */ - -// # pragma dvm get_actual(A) - - #pragma dvm remote_access(A[1]) - { - landt1 = A[1]; - } - - #pragma dvm actual(landt1) - - #pragma dvm region inlocal(A) - { - #pragma dvm parallel([i] on A[i]) reduction(and(landt1)) - for (i = 0; i < N; i++) - landt1 = landt1 && A[i]; - - } /* end region */ - - #pragma dvm get_actual(landt1) - - if (land1 == landt1) - ansyes(tname); - else - ansno(tname); - - #undef N -} - -/* ---------------------------------------------RED1108 */ -void red1108() -{ - #define N 17 - - int CL[N]; - int i; - int lor1,lort1; - char tname[] = "RED1108"; - - #pragma dvm array distribute[block] - int A[N]; - - lor1 = seror1(CL, N); - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = i % 2; - #pragma dvm host_section - { - #pragma dvm remote_access(A[1]) - { - lort1 = A[1]; - } - #pragma dvm actual(lort1) - } - - #pragma dvm parallel([i] on A[i]) reduction(or(lort1)) - for (i = 0; i < N; i++) - lort1 = lort1 || A[i]; - - } /* end region */ - - #pragma dvm get_actual(lort1) - - if (lor1 == lort1) - ansyes(tname); - else - ansno(tname); - - #undef N -} - -/* ---------------------------------------------RED1111 */ -void red1111() -{ - #define N 32 - #define NL 1000 - - int C[N]; - int i, imaxloc1, imaxloct1, it1, ni; - char tname[] = "RED1111"; - - #pragma dvm array distribute[block] - int A[N]; - - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - - ni = N / 2 + 1; - A[ni] = N + 1 + NL; - imaxloc1 = N + 1 + NL; - - #pragma dvm remote_access(A[0]) - { - imaxloct1 = A[0]; - } - - #pragma dvm actual(imaxloct1) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) reduction(maxloc(imaxloct1, it1)) - for (i = 0; i < N; i++) - if (A[i] > imaxloct1) { - imaxloct1 = A[i]; - it1 = i; - } - } /* end region */ - - #pragma dvm get_actual(imaxloct1,it1) - - if ((imaxloct1 == imaxloc1) && (it1 == ni)) - ansyes(tname); - else - { - ansno(tname); -// printf("imax1=%d imaxt1=%d imaxloct1=%d it1=%d ni=%d\n", -// imax1,imaxt1,imaxloct1,it1,ni); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1112 */ -void red1112() -{ - #define N 27 - int NL = 1012; - int C[N]; - int i, ni, iminloc1, iminloct1,it2; - char tname[] = "RED1112"; - - #pragma dvm array distribute[block] - int A[N]; - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - } /* end region */ - - #pragma dvm get_actual(A) - - ni = N / 2 + 2; - A[ni] = - (N + 1 + NL); - #pragma dvm actual(A[ni]) - iminloc1 = -(N + 1 + NL); - - #pragma dvm remote_access(A[3]) - { - iminloct1=A[3]; - } - - #pragma dvm actual(iminloct1) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) reduction(minloc(iminloct1, it2)) - for (i = 0; i < N; i++) - if (A[i] < iminloct1) { - iminloct1 = A[i]; - it2 = i; - } - } /* end region */ - - #pragma dvm get_actual(iminloct1, it2) - - if ((iminloct1 == iminloc1) && (it2 == ni)) - ansyes(tname); - else - { - ansno(tname); -// printf("imin1=%d imint1=%d iminloct1=%d it2=%d ni=%d\n", -// imin1,imint1,iminloct1,it2,ni); - } - - #undef N -} - -/* ---------------------------------------------RED1113 */ -void red1113() -{ - #define N 24 - #define NL 1003 - - int C[N]; - int i, isum1, isumt1, imax1, imaxt1, imin1, imint1, ni; - char tname[] = "RED1113"; - - #pragma dvm array distribute[block] - int A[N]; - - isum1 = sersum1m(C, N, NL); - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL+i; - } /* end region */ - - ni = N / 2 - 2; - A[ni] = N + 1 + NL; - #pragma dvm actual(A[ni]) - - imax1 = N + 1 + NL; - - #pragma dvm remote_access(A[1]) - { - imaxt1 = A[1]; - } - - ni = N / 2; - A[ni] = -(N + 1 + NL); - #pragma dvm actual(A[ni]) - - imin1 = -(N + 1 + NL); - imint1 = imaxt1; - - isumt1 = 0; - - #pragma dvm actual(isumt1, imaxt1, imint1) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) reduction(sum(isumt1), max(imaxt1), min(imint1)) - for (i = 0; i < N; i++) - { - isumt1 = isumt1 + A[i]; - if (A[i] > imaxt1) imaxt1 = A[i]; - if (A[i] < imint1) imint1 = A[i]; - } - } /* end region */ - - #pragma dvm get_actual(isumt1, imaxt1, imint1) - - if ((isum1 == isumt1) && (imax1 == imaxt1) && (imin1 == imint1)) - ansyes(tname); - else - { - ansno(tname); -// printf("isum1=%d isumt1=%d\n",isum1,isumt1); -// printf("imax1=%d imaxt1=%d\n",imax1,imaxt1); -// printf("imin1=%d imint1=%d\n",imin1,imint1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1114 */ -void red1114() -{ - #define N 13 - #define NL 2 - - int C[N],CL[N]; - char tname[] = "RED1114"; - int i; - int iprod1, iprodt1; - int land1, landt1; - - #pragma dvm array distribute[block] - int A[N]; - #pragma dvm array align([i] with A[i]) - int B[N]; - - iprod1 = serprod1(C, N, NL); - land1 = serand1(CL, N); - - #pragma dvm region inout(A) - { - - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL + i; - #pragma dvm parallel([i] on B[i]) - for (i = 0; i < N; i++) - B[i] = i%2; - } /* end region */ - -// #pragma dvm get_actual (B[1]) - - #pragma dvm remote_access(B[1]) - { - landt1 = B[1]; - } - - iprodt1 = 1; - - #pragma dvm actual (landt1, iprodt1) - - #pragma dvm region - { - #pragma dvm parallel([i] on A[i]) reduction(product(iprodt1), and(landt1)) - for (i = 0; i < N; i++) - { - iprodt1 = iprodt1 * A[i]; - landt1 = landt1 && B[i]; - } - - } /* end region */ - - #pragma dvm get_actual(iprodt1, landt1) - - if ((iprod1 == iprodt1) && (land1 == landt1)) - ansyes(tname); - else - { - ansno(tname); -// printf ("iprod1 = %f, iprodt1 = %f\n", iprod1, iprodt1); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1115 */ -void red1115() -{ - #define N 22 - #define NL 1015 - - int C[N]; - int i, imax1, imaxt1, imin1, ni1, ni2; - int imaxloct1, iminloct1, it1, it2; - char tname[] = "RED1115"; - - #pragma dvm array distribute[block] - int A[N]; - - #pragma dvm region inout(A) - { - - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = NL+i; - - } /* end region */ - - ni1 = N / 2 - 3; - A[ni1] = N + 1 + NL; - imax1 = N + 1 + NL; - - ni2 = N / 2 + 2; - A[ni2] = -(N + 1 + NL); - imin1 = -(N + 1 + NL); - - #pragma dvm remote_access(A[1]) - { - imaxt1=A[1]; - } - - imaxloct1 = imaxt1; - iminloct1 = imaxloct1; - - #pragma dvm actual(A[ni1], A[ni2], imaxt1, imaxloct1, iminloct1) - - #pragma dvm region inout(A) - { - #pragma dvm parallel([i] on A[i]) reduction(max(imaxt1),maxloc(imaxloct1,it1), minloc(iminloct1,it2)) - for (i = 0; i < N; i++) - { - if (A[i] > imaxt1) imaxt1 = A[i]; - if (A[i] > imaxloct1) - { - imaxloct1 = A[i]; - it1 = i; - } - if (A[i] < iminloct1) - { - iminloct1 = A[i]; - it2 = i; - } - } - - } /* end region */ - - #pragma dvm get_actual(imaxt1, imaxloct1, it1, iminloct1, it2) - - if ((imaxloct1 == imax1) && (iminloct1 == imin1) && - (imaxt1 == imaxloct1) && (it1 == ni1) && (it2 == ni2)) - ansyes(tname); - else - { - ansno(tname); -// printf("imax1=%d imaxt1=%d imaxloct1=%d it1=%d ni1=%d\n", -// imax1,imaxt1,imaxloct1,it1,ni1); -// printf("imin1=%d iminloct1=%d it2=%d ni2=%d\n", -// imin1,iminloct1,it2,ni2); - } - - #undef N - #undef NL -} - -/* ---------------------------------------------RED1116 */ -void red1116() -{ - #define N 28 - #define RNL 1016. - - float C[N]; - int i, ni1, ni2, it1, it2; - float isum1, isumt1, imax1, imin1; - float imaxloct1, iminloct1; - char tname[] = "RED1116"; - - #pragma dvm array distribute[block] - float A[N]; - - isum1 = sers1mr(C, N, RNL); - -/* printf("c=%d isum1=%d\n",C[1],isum1); */ - - imax1 = N + 1. + RNL; - imin1 = -(N + 1 + RNL); - - #pragma dvm region inout(A, ni1, ni2) - { - #pragma dvm parallel([i] on A[i]) - for (i = 0; i < N; i++) - A[i] = RNL + i; - - ni1 = N / 2 - 1; - A[ni1] = N + 1. + RNL; - - ni2 = N / 2 + 1; - A[ni2] = -(N + 1 + RNL); - - #pragma dvm host_section - { - #pragma dvm remote_access(A[1]) - { - imaxloct1 = A[1]; - } - #pragma dvm actual(imaxloct1) - } - - iminloct1 = imaxloct1; - - isumt1 = 0.; - - #pragma dvm parallel([i] on A[i]) reduction(sum(isumt1), maxloc(imaxloct1, it1), minloc(iminloct1, it2)) - for (i = 0; i < N; i++) - { - isumt1 = isumt1 + A[i]; - if (A[i] > imaxloct1) - { - imaxloct1 = A[i]; - it1 = i; - } - if (A[i] < iminloct1) - { - iminloct1 = A[i]; - it2 = i; - } - } - - } /* end region */ - - #pragma dvm get_actual(isumt1, imaxloct1, iminloct1) - - if ((isum1 == isumt1) && (imaxloct1 == imax1) && (iminloct1 == imin1) && - (it1 == ni1) && (it2 == ni2)) - ansyes(tname); - else - { - ansno(tname); -// printf("isum1=%f isumt1=%f\n",isum1,isumt1); -// printf("imax1=%f imaxloct1=%f it1=%d ni1=%d\n", -// imax1,imaxloct1,it1,ni1); -// printf("imin1=%f iminloct1=%f it2=%d ni2=%d\n", -// imin1,iminloct1,it2,ni2); - } - - #undef N - #undef RNL -} - -/* --------------------------------------------- */ - -int sersum1(int *AR, int NN, int NL) -{ - int i, s; - - for (i = 0; i < NN; i++) - AR[i] = NL+i; - - s=0; - - for (i = 0; i < NN; i++) - s = s + AR[i]; - -// printf("s=%d\n",s); - - return s; -} - -int sersum1m(int *AR, int NN, int NL) -{ - int i, ni, s; - - for (i = 0; i < NN; i++) - AR[i] = NL + i; - ni = NN / 2 - 2; - AR[ni] = NN + 1 + NL; - ni= NN / 2; - AR[ni] = -(NN + 1 + NL); - - s = 0; - for (i = 0; i < NN; i++) - s = s + AR[i]; - -// printf("s=%d\n",s); - - return s; -} - -float sers1mr(float *RAR, int NN, float RNL) -{ - int i, ni; - float s; - - for (i = 0; i < NN; i++) - RAR[i] = RNL + i; - ni = NN / 2 - 1; - RAR[ni]=NN + 1.+ RNL; - ni = NN / 2 + 1; - RAR[ni] = -(NN + 1.+ RNL); - - s = 0; - for (i = 0; i < NN; i++) - s = s + RAR[i]; -// printf("s=%d\n",s); - - return s; -} - -int serprod1(int *AR, int NN, int NL) -{ - int i, p; - - for (i = 0; i < NN; i++) - AR[i] = NL + i; - - p = 1; - for (i = 0; i < NN; i++) - p = p * AR[i]; - - return p; -} - -float serprodr1(float *AR, int NN, float RNL) -{ - int i; - float p; - - for (i = 0; i < NN; i++) - AR[i] = RNL + i; - - p = 1.; - for (i = 0; i < NN; i++) - p = p * AR[i]; - - return p; -} - -int serand1(int *AR, int NN) -{ - int i, ni, LAND; - - for (i = 0; i < NN; i++) - AR[i] = i % 2; - - LAND = AR[1]; - - for (i = 0; i < NN; i++) - LAND = LAND && AR[i]; - - return LAND; -} - -int seror1(int *AR, int NN) -{ - int i, LOR; - - for (i = 0; i < NN; i++) - AR[i] = i % 2; - - LOR = AR[1]; - - for (i = 0; i < NN; i++) - LOR = LOR || AR[i]; - - return LOR; -} - -/* --------------------------------------------- */ -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red21m.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red21m.cdv deleted file mode 100644 index aac1b4e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REDUCTION/red21m.cdv +++ /dev/null @@ -1,915 +0,0 @@ -/* TESTING OF THE REDUCTION CLAUSE . - REDUCTION OPERATION : SUM.PRODUCT,MAX,MIN,AND,OR,MAXLOC,MINLOC AND - THEIR COMBINATION ARE EXECUTED - FOR DISTRIBUTED ARRAY A[N][M]. -*/ -#include -#include -#include - -#define N 8 -#define M 8 -#define NL 1000 -#define RNL 1000. -#define PNL 1 -#define RPNL 1. - -static void red2101(); -static void red2102(); -static void red2103(); -static void red2104(); -static void red2105(); -static void red2106(); -static void red2107(); -static void red2108(); -static void red2109(); -static void red2111(); -static void red2112(); -static void red2113(); -static void red2114(); - -static int sersum2(int AR[N][M], int NN, int NM, int NNL); -static int sersum2m(int AR[N][M], int NN, int NM, int NNL); -static float sers2mr(float RAR[N][M], int NN, int NM, float RNNL); -static long serprod2(int AR[N][M], int NN, int NM, int NNL); -static float serprodr2(float AR[N][M], int NN, int NM, float NNL); -static int serand2(int AR[N][M], int NN, int NM, int NNL); -static int seror2(int AR[N][M], int NN, int NM, int NNL); -static int serxor2(int AR[N][M], int NN, int NM, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF red21m ========================\n"); - red2101(); - red2102(); - red2103(); - red2104(); - red2105(); - red2106(); - red2107(); - red2108(); - red2109(); - red2111(); - red2112(); - red2113(); - red2114(); - - printf("=== END OF red21m ========================= \n"); - return 0; -} -/* ---------------------------------------------RED2101 */ -void red2101() -{ - int C[N][M]; - char tname[] = "RED2101"; - int i, j, NN, NM, NNL, ISUM1, isum1, isumt1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - isum1 = sersum2(C, NN, NM, NNL); -/* printf("isum1=%d\n",isum1);*/ - - isumt1 = 0; - #pragma dvm actual(isumt1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on A[i][j]) reduction(sum(isumt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - isumt1 = isumt1 + A[i][j]; - } /*end region*/ - - #pragma dvm get_actual(isumt1) - - if (isum1 == isumt1) - ansyes(tname); - else - ansno(tname); -// printf("isum1=%d isumt1=%d\n",isum1,isumt1); -} -/* ---------------------------------------------RED2102 */ -void red2102() -{ - int C[N][M], CL[N][M]; - char tname[] = "RED2102"; - int i, j, NN, NM, NNL; - long iprod1, iprodt1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = PNL; - - iprod1 = serprod2(C, NN, NM, NNL); - - iprodt1 = 1; - #pragma dvm actual(iprodt1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NNL + i + j; - #pragma dvm parallel([i][j] on A[i][j]) reduction(product(iprodt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - iprodt1 = iprodt1 * A[i][j]; -/* printf("iprodt1=%ld\n",iprodt1);*/ - } /*end region*/ - - #pragma dvm get_actual(iprodt1) -/* printf("iprod1=%ld iprodt1=%ld \n", - iprod1,iprodt1);*/ - - if (iprod1 == iprodt1) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------RED2103*/ -void red2103() -{ - int C[N][M]; - char tname[] = "RED2103"; - int i, j, NN, NM, NNL, imax1, imaxt1, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - ni = N / 2 - 1; - nj = M / 2 - 1; - imax1 = N + M + 1 + NL; - - #pragma dvm actual(imax1, ni, nj) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NNL + i + j; - A[ni][nj] = N + M + 1 + NNL; - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imaxt1=A[0][0]; -// printf("imaxt1=%d\n",imaxt1); - } - #pragma dvm actual(imaxt1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(max(imaxt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - if (A[i][j] > imaxt1) imaxt1=A[i][j]; - - } /*end region*/ - - #pragma dvm get_actual(imaxt1) - - if (imax1 == imaxt1) - ansyes(tname); - else - ansno(tname); -// printf("imax1=%d imaxt1=%d\n",imax1,imaxt1); -} - - /*---------------------------------------------RED2104 */ -void red2104() -{ - int C[N][M]; - char tname[] = "RED2104"; - int i, j, NN, NM, NNL, imin1, imint1, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - ni = N / 2 +1; - nj = M / 2 + 1; - imin1 = -(N + M + 1 + NL); - - #pragma dvm actual(imin1, ni, nj) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni][nj] = -(N + M + 1 + NL); - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imint1=A[0][0]; -// printf("imint1=%d\n",imint1); - } - #pragma dvm actual(imint1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(min(imint1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - if (A[i][j] < imint1) imint1=A[i][j]; - - } /*end region*/ - - #pragma dvm get_actual(imint1) - - if (imin1 == imint1) - ansyes(tname); - else - ansno(tname); -// printf("imin1=%d imint1=%d\n",imin1,imint1); -} -/* ---------------------------------------------RED2105*/ -void red2105() -{ - float C[N][M]; - char tname[] = "RED2105"; - int i, j, NN, NM, NNL, ni, nj; - float imax1, imaxt1; - - #pragma dvm array distribute[block][block] - float A[N][M]; - - NN = N; - ni = N / 2 - 1; - nj = M / 2 - 1; - imax1= N + M + 1. + RNL; - - #pragma dvm actual(imax1, ni, nj) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - A[ni][nj] = N + M + 1. + RNL; - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imaxt1=A[0][0]; - } - #pragma dvm actual(imaxt1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(max(imaxt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - if (A[i][j] > imaxt1) imaxt1 = A[i][j]; - - } /*end region*/ - - #pragma dvm get_actual(imaxt1) - if (imax1 == imaxt1) - ansyes(tname); - else - ansno(tname); -/* printf("imax1=%f imaxt1=%f\n",imax1,imaxt1); */ -} -/* ---------------------------------------------RED2106 */ -void red2106() -{ - float C[N][M], CL[N][M]; - char tname[] = "RED2106"; - int i, j, NN, NM, NNL; - float iprod1, iprodt1, RNNL; - - #pragma dvm array distribute[block][block] - float A[N][M]; - - NN = N; - NM = M; - RNNL = RPNL; - - iprod1 = serprodr2(C, NN, NM, RNNL); - iprodt1 = 1; - - #pragma dvm actual(iprodt1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - #pragma dvm parallel([i][j] on A[i][j]) reduction(product(iprodt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - iprodt1 = iprodt1 * A[i][j]; -/* printf("iprodt1=%ld\n",iprodt1);*/ - } /*end region*/ - - #pragma dvm get_actual(iprodt1) -/* printf("iprod1=%ld iprodt1=%ld \n", - iprod1,iprodt1); -*/ - if (iprod1 == iprodt1) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------RED2107*/ -void red2107() -{ - int C[N][M], CL[N][M]; - char tname[] = "RED2107"; - int i, j, NN, NM, NNL; - int land1, landt1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - - NN = N; - NM = M; - NNL = NL; - - land1 = serand2(CL, NN, NM, NNL); - - #pragma dvm actual(land1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j += 2) - A[i][j] = 1; - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 1; j < M; j += 2) - A[i][j] = 0; - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - landt1=A[0][0]; - } - #pragma dvm actual(landt1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(and(landt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - landt1 = landt1 && A[i][j]; - } /*end region*/ - - #pragma dvm get_actual(landt1) -/* printf(" land1=%d landt1=%d\n", - land1,landt1);*/ - - if (land1 == landt1) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------RED2108*/ -void red2108() -{ - int C[N][M], CL[N][M]; - char tname[] = "RED2108"; - int i, j, NN, NM, NNL; - int lor1, lort1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - - NN = N; - NM = M; - NNL = NL; - - lor1 = seror2(CL, NN, NM, NNL); - - #pragma dvm actual(lor1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j += 2) - A[i][j] = 1; - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 1; j < M; j += 2) - A[i][j] = 0; - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - lort1=A[0][0]; - } - #pragma dvm actual(lort1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(or(lort1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - lort1 = lort1 || A[i][j]; - } /*end region*/ - - #pragma dvm get_actual(lort1) - - if (lor1 == lort1) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------RED2109*/ -void red2109() -{ - int C[N][M], CL[N][M]; - char tname[] = "RED2109"; - int i, j, NN, NM, NNL; - int lxor1, lxort1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - - NN = N; - NM = M; - NNL = NL; - - lxor1 = serxor2(CL, NN, NM, NNL); - - #pragma dvm actual(lxor1) - #pragma dvm region local(A) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j += 2) - A[i][j] = 1; - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 1; j < M; j += 2) - A[i][j] = 0; - #pragma dvm host_section - { - lxort1 = 0; - #pragma dvm actual(lxort1) - } - #pragma dvm parallel([i][j] on A[i][j]) reduction(xor(lxort1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - lxort1 = lxort1 ^ A[i][j]; - } /*end region*/ - - #pragma dvm get_actual(lxort1) - - if (lxor1 == lxort1) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------RED2111*/ -void red2111() -{ - int C[N][M]; - char tname[] = "RED2111"; - int i, j, NN, NM, NNL, imax1, imaxt1, ni, ni1, nj, nj1; - int imaxloct1; - int coor[2]; - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - - ni = N / 2 - 1; - nj = M / 2 - 1; - imax1 = N + M + 1 + NL; - - #pragma dvm actual(imax1,ni,nj) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - A[ni][nj] = N + M + 1 + NL; - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imaxt1=A[0][0]; - } - #pragma dvm actual(imaxt1) - } - imaxloct1 = imaxt1; - coor[0] = 0; - coor[1] = 0; - #pragma dvm parallel([i][j] on A[i][j]) reduction(maxloc(imaxloct1, coor)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - if (A[i][j] > imaxloct1) - { - imaxloct1 = A[i][j]; - coor[0] = i; - coor[1] = j; - } - - } /*end region*/ - - #pragma dvm get_actual(imaxloct1, coor) - if ((imaxloct1 == imax1) && (coor[0] == ni) && (coor[1] == nj)) - ansyes(tname); - else - ansno(tname); -/* printf("imax1=%d imaxt1=%d imaxloct1=%d coor=%d %d ni=%d\n", - imax1,imaxt1,imaxloct1,coor[0],coor[1],ni); */ -} - /*---------------------------------------------RED2112*/ -void red2112() -{ - int C[N][M]; - char tname[] = "RED2112"; - int i, j, NN, NM, NNL, imin1, imint1, ni, ni1, nj1; - int iminloct1; - int coor[2]; - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - ni1 = N /2 + 1; - nj1 = M / 2 +1; - imin1 = -(N + 1 + M + NL); - - #pragma dvm actual(imin1, ni1, nj1) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - A[ni1][nj1] = -(N + 1 + M + NL); - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imint1 = A[0][0]; - } - #pragma dvm actual(imint1) - } - iminloct1 = imint1; - coor[0] = 0; - coor[1] = 0; - #pragma dvm parallel([i][j] on A[i][j]) reduction(minloc(iminloct1,coor)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - if (A[i][j] < iminloct1) - { - iminloct1 = A[i][j]; - coor[0] = i; - coor[1] = j; - } - } /*end region*/ - - #pragma dvm get_actual(iminloct1, coor) - - if ((iminloct1 == imin1) && (coor[0] == ni1) && (coor[1] == nj1)) - ansyes(tname); - else - ansno(tname); -/* printf("imin1=%d imint1=%d iminloct1=%d coor=%d %d ni1=%d\n", - imin1,imint1,iminloct1,coor[0],coor[1],ni1);*/ -} - -/* ---------------------------------------------RED2113*/ -void red2113() -{ - int C[N][M]; - char tname[] = "RED2113"; - int i, j, NN, NM, NNL, ISUM1, isum1, isumt1, imax1, imaxt1, imin1, imint1, ni, nj; - - #pragma dvm array distribute[block][block] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - isum1 = sersum2m(C, NN, NM, NNL); - imax1 = N + M + 1 + NL; - - ni = N / 2 - 1; - nj = M / 2 - 1; - imin1 = -(N + M + 1 + NL); - isumt1 = 0; - - #pragma dvm actual(imin1, imax1, isumt1, ni, nj) -// #pragma dvm region local(A) -// { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - A[ni][nj] = -(N + M + 1 + NL); - A[ni+1][nj+1] = N + M + 1 + NL; - - #pragma dvm actual(A) - #pragma dvm region in(A) - { - - #pragma dvm host_section - { - #pragma dvm remote_access(A[0][0]) - { - imaxt1 = A[0][0]; - } - #pragma dvm actual(imaxt1) - } - imint1 = imaxt1; - - #pragma dvm parallel([i][j] on A[i][j]) reduction(sum(isumt1), max(imaxt1), min(imint1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - { - isumt1 = isumt1 + A[i][j]; - if (A[i][j] > imaxt1) imaxt1 = A[i][j]; - if (A[i][j] < imint1) imint1 = A[i][j]; - } - } /*end region*/ - - #pragma dvm get_actual(isumt1, imaxt1, imint1) - - if ((isum1 == isumt1) && (imax1 == imaxt1) && (imin1 == imint1)) - ansyes(tname); - else - ansno(tname); -/* printf("isum1=%d isumt1=%d\n",isum1,isumt1); - printf("imax1=%d imaxt1=%d\n",imax1,imaxt1); - printf("imin1=%d imint1=%d\n",imin1,imint1); */ -} -/* ---------------------------------------------RED2114*/ -void red2114() -{ - int C[N][M], CL[N][M]; - char tname[] = "RED2114"; - int i, j, NN, NM, NNL; - int iprod1, iprodt1; - int land1, landt1; - - #pragma dvm array distribute[block][block] - int A[N][M]; - #pragma dvm array align([i][j]with A[i][j]) - int B[N][M]; - - - NN = N; - NM = M; - NNL = NL; - - iprod1 = serprod2(C, NN, NM, NNL); - land1 = serand2(CL, NN, NM, NNL); - - #pragma dvm actual(iprod1, land1) - #pragma dvm region local(A), local(B) - { - - #pragma dvm parallel([i][j] on B[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - #pragma dvm parallel([i][j] on B[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j += 2) - B[i][j] = 1; - - #pragma dvm parallel([i][j] on B[i][j]) - for (i = 0; i < N; i++) - for (j = 1; j < M; j += 2) - B[i][j] = 0; - - #pragma dvm host_section - { - #pragma dvm remote_access(B[0][0]) - { - landt1 = B[0][0]; - } - #pragma dvm actual(landt1) - } - - iprodt1 = 1; - #pragma dvm parallel([i][j] on A[i][j]) reduction(product(iprodt1), and(landt1)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - { - iprodt1 = iprodt1*A[i][j]; - landt1 = landt1 && B[i][j]; - } - - } /*end region*/ - #pragma dvm get_actual(iprodt1,landt1) - -/* printf("iprod1=%d iprodt1=%d land1=%d landt1=%d\n", - iprod1,iprodt1,land1,landt1); */ - - if ((iprod1 == iprodt1) && (land1 == landt1)) - ansyes(tname); - else - ansno(tname); -} - -int sersum2(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, S; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL + i + j; - - S = 0; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - S = S + AR[i][j]; - -/* printf("s=%d\n",S);*/ - return S; -} -int sersum2m(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, ni, nj, S; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL + i + j; - ni = NN / 2 - 1; - nj = NM / 2 - 1; - AR[ni][nj] = NN + NM + 1 + NNL; - ni = NN / 2; - nj = NM / 2; - AR[ni][nj] = -(NN + NM + 1 + NNL); - S = 0; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - S = S + AR[i][j]; -/* printf("s=%d\n",S);*/ - return S; -} -float sers2mr(float RAR[N][M], int NN, int NM, float NNL) -{ - int i, j, ni, nj; - float S; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - RAR[i][j] = NNL+i+j; - - ni = NN / 2 - 1; - nj = NM / 2 - 1; - RAR[ni][nj] = NN + NM + 1. + NNL; - ni = NN / 2 + 1; - nj = NM / 2 + 1; - RAR[ni][nj] = -(NN + NM + 1. + NNL); - S = 0; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - S = S + RAR[i][j]; - -/* printf("s=%d\n",S);*/ - return S; -} -long serprod2(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, ni, nj; - long P; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL+i+j; -/* printf("I=%d J=%d AR=%d\n",I,J,AR[I][J]);*/ - - P = 1; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - P = P * AR[i][j]; - return P; -} -float serprodr2(float AR[N][M], int NN, int NM, float NNL) -{ - int i, j; - float P; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL+i+j; - P = 1; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - P = P * AR[i][j]; - return P; -} -int serand2(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, LAND; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j += 2) - AR[i][j] = 1; - for (i = 0; i < NN; i++) - for (j = 1; j < NM; j += 2) - AR[i][j] = 0; - - LAND = AR[0][0]; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - LAND = LAND && AR[i][j]; - - return LAND; -} - -int seror2(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, LOR; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j += 2) - AR[i][j] = 1; - for (i = 0; i < NN; i++) - for (j = 1; j < NM; j += 2) - AR[i][j] = 0; - - LOR = AR[0][0]; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - LOR = LOR || AR[i][j]; - - return LOR; -} - -int serxor2(int AR[N][M], int NN, int NM, int NNL) -{ - int i, j, LXOR; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j += 2) - AR[i][j] = 1; - for (i = 0; i < NN; i++) - for (j = 1; j < NM; j += 2) - AR[i][j] = 0; - - LXOR = 0; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - LXOR = LXOR ^ AR[i][j]; - - return LXOR; -} - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem11.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem11.cdv deleted file mode 100644 index 1e44bc1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem11.cdv +++ /dev/null @@ -1,537 +0,0 @@ -// TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -// DISTRIBUTED ARRAY A(N) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -// ON ALL PROCESSORS. - -#include -#include -#include - -void rem1101(); -void rem1102(); -void rem1103(); -void rem1104(); -void rem1105(); -void rem1106(); -void rem1107(); -void rem1108(); -void rem1109(); -void rem1110(); -void rem1111(); -void rem1112(); - -void serial1(int *ar, int n, int nl); -void ansyes(const char *name); -void ansno(const char *name); - -#define n 16 -#define nl 1000 -#define Min(x, y) (x < y) ? (x) : (y) - -int main(int argc, char *argv[]) { - printf("===START OF REM11========================\n"); - - // -------------------------------------------------- - rem1101(); - - // -------------------------------------------------- - rem1102(); - - // -------------------------------------------------- - rem1103(); - - // ------------------------------------------------- - rem1104(); - - // ------------------------------------------------- - rem1105(); - - // ------------------------------------------------- - rem1106(); - - // -------------------------------------------------- - rem1107(); - - // -------------------------------------------------- - rem1108(); - - // -------------------------------------------------- - rem1109(); - - // ------------------------------------------------- - rem1110(); - - // ------------------------------------------------- - rem1111(); - - // ------------------------------------------------- - rem1112(); - - // ------------------------------------------------- - // - // - printf("=== END OF REM11 ========================= \n"); - return 0; -} - -// ---------------------------------------------REM1101 -void rem1101() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1101"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[0]) -#pragma dvm remote_access(a[0]) - { ib = a[0]; } - - if (ib == c[0]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1102() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1102"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[n - 1]) -#pragma dvm remote_access(a[n - 1]) - { ib = a[n - 1]; } - - if (ib == c[n - 1]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1103() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1103"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[n / 2 - 1]) -#pragma dvm remote_access(a[n / 2 - 1]) - { ib = a[n / 2 - 1]; } - - if (ib == c[n / 2 - 1]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1104() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1104"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } - for (i = 1; i <= n; i++) { -#pragma dvm get_actual(a[i - 1]) -#pragma dvm remote_access(a[i - 1]) - { d[i - 1] = a[i - 1]; } - isumc = isumc + c[i - 1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1105() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1105"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a) - for (i = 1; i <= n; i++) { -#pragma dvm remote_access(a[]) - { d[i - 1] = a[i - 1]; } - isumc = isumc + c[i - 1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1106() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1106"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } - int kk = 2; - int kk1 = 3; - for (i = 1; i <= n / kk - kk1; i++) { -#pragma dvm get_actual(a[kk * (i - 1) + kk1]) -#pragma dvm remote_access(a[kk * (i - 1) + kk1]) - { d[i - 1] = a[kk * (i - 1) + kk1]; } - isumc = isumc + c[kk * (i - 1) + kk1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1107() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1107"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[0]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[0]; - } - -#pragma dvm parallel([i] on a[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[0]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1108() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1108"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[n - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[n - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[n - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1109() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1109"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[n / 2 - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[n / 2 - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[n / 2 - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1110() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1110"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[i - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[i - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1111() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1111"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[i - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[i - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[i - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1112() { -#pragma dvm array distribute[block] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1112"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - int kk = 2; - int kk1 = 3; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[kk * i + (kk1 - kk)]) - for (i = 1; i <= n / kk - kk1; i++) { - b[i - 1] = a[kk * i + (kk1 - kk)]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n / kk - kk1; i++) { - if (b[i - 1] != c[kk * (i - 1) + kk1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -#undef n -#undef nl - -void serial1(int *ar, int n, int nl) { - int i; - for (i = 1; i <= n; i++) { - ar[i - 1] = nl + i; - } -} - -void ansyes(const char *name) { printf("%s - complete\n", name); } - -void ansno(const char *name) { printf("%s - ***error\n", name); } diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem12.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem12.cdv deleted file mode 100644 index a468fd3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem12.cdv +++ /dev/null @@ -1,537 +0,0 @@ -// TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -// DISTRIBUTED ARRAY A(N) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -// ON ALL PROCESSORS. - -#include -#include -#include - -void rem1101(); -void rem1102(); -void rem1103(); -void rem1104(); -void rem1105(); -void rem1106(); -void rem1107(); -void rem1108(); -void rem1109(); -void rem1110(); -void rem1111(); -void rem1112(); - -void serial1(int *ar, int n, int nl); -void ansyes(const char *name); -void ansno(const char *name); - -#define n 16 -#define nl 1000 -#define Min(x, y) (x < y) ? (x) : (y) - -int main(int argc, char *argv[]) { - printf("===START OF REM11========================\n"); - - // -------------------------------------------------- - rem1101(); - - // -------------------------------------------------- - rem1102(); - - // -------------------------------------------------- - rem1103(); - - // ------------------------------------------------- - rem1104(); - - // ------------------------------------------------- - rem1105(); - - // ------------------------------------------------- - rem1106(); - - // -------------------------------------------------- - rem1107(); - - // -------------------------------------------------- - rem1108(); - - // -------------------------------------------------- - rem1109(); - - // ------------------------------------------------- - rem1110(); - - // ------------------------------------------------- - rem1111(); - - // ------------------------------------------------- - rem1112(); - - // ------------------------------------------------- - // - // - printf("=== END OF REM11 ========================= \n"); - return 0; -} - -// ---------------------------------------------REM1101 -void rem1101() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1101"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[0]) -#pragma dvm remote_access(a[0]) - { ib = a[0]; } - - if (ib == c[0]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1102() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1102"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[n - 1]) -#pragma dvm remote_access(a[n - 1]) - { ib = a[n - 1]; } - - if (ib == c[n - 1]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1103() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl, ib; - - const char *tname = "REM1103"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a[n / 2 - 1]) -#pragma dvm remote_access(a[n / 2 - 1]) - { ib = a[n / 2 - 1]; } - - if (ib == c[n / 2 - 1]) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1104() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1104"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } - for (i = 1; i <= n; i++) { -#pragma dvm get_actual(a[i - 1]) -#pragma dvm remote_access(a[i - 1]) - { d[i - 1] = a[i - 1]; } - isumc = isumc + c[i - 1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1105() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1105"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } -#pragma dvm get_actual(a) - for (i = 1; i <= n; i++) { -#pragma dvm remote_access(a[]) - { d[i - 1] = a[i - 1]; } - isumc = isumc + c[i - 1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1106() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n], d[n]; - int nloop, i, nnl, isumc, isuma; - - const char *tname = "REM1106"; - isumc = 0; - isuma = 0; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region out(a) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - } - int kk = 2; - int kk1 = 3; - for (i = 1; i <= n / kk - kk1; i++) { -#pragma dvm get_actual(a[kk * (i - 1) + kk1]) -#pragma dvm remote_access(a[kk * (i - 1) + kk1]) - { d[i - 1] = a[kk * (i - 1) + kk1]; } - isumc = isumc + c[kk * (i - 1) + kk1]; - isuma = isuma + d[i - 1]; - } - - if (isumc == isuma) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1107() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1107"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[0]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[0]; - } - -#pragma dvm parallel([i] on a[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[0]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1108() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1108"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[n - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[n - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[n - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1109() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1109"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[n / 2 - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[n / 2 - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[n / 2 - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1110() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1110"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[i - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[i - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1111() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1111"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[i - 1]) - for (i = 1; i <= n; i++) { - b[i - 1] = a[i - 1]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n; i++) { - if (b[i - 1] != c[i - 1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -void rem1112() { -#pragma dvm array distribute[*] - int b[n]; -#pragma dvm array align([i] with b[i]) - int a[n]; - int c[n]; - int nloop, i, nnl; - - const char *tname = "REM1112"; - nnl = nl; - serial1(c, n, nnl); - nloop = nl; - int kk = 2; - int kk1 = 3; - -#pragma dvm region local(a, b) - { -#pragma dvm parallel([i] on a[i - 1]) - for (i = 1; i <= n; i++) { - a[i - 1] = nl + i; - } - -#pragma dvm parallel([i] on b[i - 1]) remote_access(a[kk * i + (kk1 - kk)]) - for (i = 1; i <= n / kk - kk1; i++) { - b[i - 1] = a[kk * i + (kk1 - kk)]; - } - -#pragma dvm parallel([i] on b[i - 1]) reduction(min(nloop)) - for (i = 1; i <= n / kk - kk1; i++) { - if (b[i - 1] != c[kk * (i - 1) + kk1]) { - nloop = Min(nloop, i); - } - } - } -#pragma dvm get_actual(nloop) - if (nloop == nl) { - ansyes(tname); - } else { - ansno(tname); - } -} - -#undef n -#undef nl - -void serial1(int *ar, int n, int nl) { - int i; - for (i = 1; i <= n; i++) { - ar[i - 1] = nl + i; - } -} - -void ansyes(const char *name) { printf("%s - complete\n", name); } - -void ansno(const char *name) { printf("%s - ***error\n", name); } diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem21.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem21.cdv deleted file mode 100644 index 31c2239..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem21.cdv +++ /dev/null @@ -1,943 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 8 -#define NL 1000 - -static void rem2101(); -static void rem2102(); -static void rem2103(); -static void rem2104(); -static void rem2105(); -static void rem2106(); -static void rem2107(); -static void rem2108(); -static void rem2109(); -static void rem2110(); -static void rem2111(); -static void rem2112(); -static void rem2113(); -static void rem2114(); -static void rem2115(); -static void rem2116(); -static void rem2117(); -static void rem2118(); -static void rem2119(); -static void rem2120(); -static void serial2(int AR[N][M], int NN, int NM, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int an, char **as) { - printf("===START OF REM21========================\n"); - rem2101(); - rem2102(); - rem2103(); - rem2104(); - rem2105(); - rem2106(); - rem2107(); - rem2108(); - rem2109(); - rem2110(); - rem2111(); - rem2112(); - rem2113(); - rem2114(); - rem2115(); - rem2116(); - rem2117(); - rem2118(); - rem2119(); - rem2120(); - - printf("=== END OF REM21 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM2101 */ -void rem2101() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2101"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[0][0]) -#pragma dvm remote_access(A[0][0]) - { ib = A[0][0]; } - if (ib == C[0][0]) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM2102 */ -void rem2102() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2102"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } - -#pragma dvm get_actual(A[N - 1][M - 1]) -#pragma dvm remote_access(A[N - 1][M - 1]) - { ib = A[N - 1][M - 1]; } - if (ib == C[N - 1][M - 1]) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM2103 */ -void rem2103() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2103"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } - -#pragma dvm get_actual(A[0][M - 1]) -#pragma dvm remote_access(A[0][M - 1]) - { ib = A[0][M - 1]; } - if (ib == C[0][M - 1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2104 */ -void rem2104() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2104"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[N - 1][0]) -#pragma dvm remote_access(A[N - 1][0]) - { ib = A[N - 1][0]; } - if (ib == C[N - 1][0]) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2105 */ -void rem2105() { - - int C[N][M], D[N][M]; - int ib, isuma, isumc; - char tname[] = "REM2105"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[][]) - { D[i][j] = A[i][j]; } - isumc = isumc + C[i][j]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2106 */ -void rem2106() { - - int C[N][M], D[N][M]; - int ib, isuma, isumc; - char tname[] = "REM2106"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][0]) - for (i = 0; i < N; i++) { -#pragma dvm remote_access(A[][0]) - { D[i][0] = A[i][0]; } - isumc = isumc + C[i][0]; - isuma = isuma + D[i][0]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2107 */ -void rem2107() { - - int C[N][M], D[N][M]; - int isuma, isumc; - char tname[] = "REM2107"; - - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[0][]) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[0][]) - { D[0][j] = A[0][j]; } - isumc = isumc + C[0][j]; - isuma = isuma + D[0][j]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2108 */ -void rem2108() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2108"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][M - 1]) - - for (i = 0; i < N; i++) { -#pragma dvm remote_access(A[][M - 1]) - { D[i][M - 1] = A[i][M - 1]; } - isumc = isumc + C[i][M - 1]; - isuma = isuma + D[i][M - 1]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2109 */ -void rem2109() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2109"; - - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[N - 1][]) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[N - 1][]) - { D[N - 1][j] = A[N - 1][j]; } - isumc = isumc + C[N - 1][j]; - isuma = isuma + D[N - 1][j]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2110 */ -void rem2110() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2110"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[i][j]) - { D[i][j] = A[i][j]; } - isumc = isumc + C[i][j]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2111 */ -void rem2111() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc, kk, kk1; - char tname[] = "REM2111"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - - kk = 2; - kk1 = 3; - - for (i = 0; i < N / (kk - kk1); i++) - for (j = 0; j < M / (kk - kk1); j++) { -#pragma dvm remote_access(A[kk * i + kk1][kk * j + kk1]) - { D[i][j] = A[kk * i + kk1][kk * j + kk1]; } - isumc = isumc + C[kk * i + kk1][kk * j + kk1]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2112 */ -void rem2112() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2112"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2113 */ -void rem2113() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2113"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2114 */ -void rem2114() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2114"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2115 */ -void rem2115() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2115"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2116 */ -void rem2116() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2116"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2117 */ -void rem2117() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2117"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2118 */ -void rem2118() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2118"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2119 */ -void rem2119() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2119"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2120 */ -void rem2120() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2120"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial2(int AR[N][M], int NN, int NM, int NNL) { - int i, j; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) { - AR[i][j] = NNL + i + j; - } - return; -} - -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem22.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem22.cdv deleted file mode 100644 index 79f7ae1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem22.cdv +++ /dev/null @@ -1,943 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 8 -#define NL 1000 - -static void rem2101(); -static void rem2102(); -static void rem2103(); -static void rem2104(); -static void rem2105(); -static void rem2106(); -static void rem2107(); -static void rem2108(); -static void rem2109(); -static void rem2110(); -static void rem2111(); -static void rem2112(); -static void rem2113(); -static void rem2114(); -static void rem2115(); -static void rem2116(); -static void rem2117(); -static void rem2118(); -static void rem2119(); -static void rem2120(); -static void serial2(int AR[N][M], int NN, int NM, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int an, char **as) { - printf("===START OF REM21========================\n"); - rem2101(); - rem2102(); - rem2103(); - rem2104(); - rem2105(); - rem2106(); - rem2107(); - rem2108(); - rem2109(); - rem2110(); - rem2111(); - rem2112(); - rem2113(); - rem2114(); - rem2115(); - rem2116(); - rem2117(); - rem2118(); - rem2119(); - rem2120(); - - printf("=== END OF REM21 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM2101 */ -void rem2101() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2101"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[0][0]) -#pragma dvm remote_access(A[0][0]) - { ib = A[0][0]; } - if (ib == C[0][0]) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM2102 */ -void rem2102() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2102"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } - -#pragma dvm get_actual(A[N - 1][M - 1]) -#pragma dvm remote_access(A[N - 1][M - 1]) - { ib = A[N - 1][M - 1]; } - if (ib == C[N - 1][M - 1]) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM2103 */ -void rem2103() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2103"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } - -#pragma dvm get_actual(A[0][M - 1]) -#pragma dvm remote_access(A[0][M - 1]) - { ib = A[0][M - 1]; } - if (ib == C[0][M - 1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2104 */ -void rem2104() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2104"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[N - 1][0]) -#pragma dvm remote_access(A[N - 1][0]) - { ib = A[N - 1][0]; } - if (ib == C[N - 1][0]) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2105 */ -void rem2105() { - - int C[N][M], D[N][M]; - int ib, isuma, isumc; - char tname[] = "REM2105"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[][]) - { D[i][j] = A[i][j]; } - isumc = isumc + C[i][j]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2106 */ -void rem2106() { - - int C[N][M], D[N][M]; - int ib, isuma, isumc; - char tname[] = "REM2106"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][0]) - for (i = 0; i < N; i++) { -#pragma dvm remote_access(A[][0]) - { D[i][0] = A[i][0]; } - isumc = isumc + C[i][0]; - isuma = isuma + D[i][0]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2107 */ -void rem2107() { - - int C[N][M], D[N][M]; - int isuma, isumc; - char tname[] = "REM2107"; - - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int A[N][M]; - -#pragma dvm array align([i][j] with A[i][j]) - int B[N][M]; - isuma = 0; - isumc = 0; - NNL = NL; - serial2(C, N, M, NNL); - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[0][]) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[0][]) - { D[0][j] = A[0][j]; } - isumc = isumc + C[0][j]; - isuma = isuma + D[0][j]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2108 */ -void rem2108() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2108"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][M - 1]) - - for (i = 0; i < N; i++) { -#pragma dvm remote_access(A[][M - 1]) - { D[i][M - 1] = A[i][M - 1]; } - isumc = isumc + C[i][M - 1]; - isuma = isuma + D[i][M - 1]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2109 */ -void rem2109() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2109"; - - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[N - 1][]) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[N - 1][]) - { D[N - 1][j] = A[N - 1][j]; } - isumc = isumc + C[N - 1][j]; - isuma = isuma + D[N - 1][j]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2110 */ -void rem2110() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc; - char tname[] = "REM2110"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { -#pragma dvm remote_access(A[i][j]) - { D[i][j] = A[i][j]; } - isumc = isumc + C[i][j]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2111 */ -void rem2111() { - - int C[N][M], D[N][M]; - int nloop, ib, isuma, isumc, kk, kk1; - char tname[] = "REM2111"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - isuma = 0; - isumc = 0; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - } -#pragma dvm get_actual(A[][]) - - kk = 2; - kk1 = 3; - - for (i = 0; i < N / (kk - kk1); i++) - for (j = 0; j < M / (kk - kk1); j++) { -#pragma dvm remote_access(A[kk * i + kk1][kk * j + kk1]) - { D[i][j] = A[kk * i + kk1][kk * j + kk1]; } - isumc = isumc + C[kk * i + kk1][kk * j + kk1]; - isuma = isuma + D[i][j]; - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2112 */ -void rem2112() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2112"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2113 */ -void rem2113() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2113"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2114 */ -void rem2114() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2114"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2115 */ -void rem2115() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2115"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2116 */ -void rem2116() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2116"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM2117 */ -void rem2117() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2117"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][0]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2118 */ -void rem2118() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2118"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[0][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[0][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[0][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2119 */ -void rem2119() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2119"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[*][block] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[][M - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[i][M - 1]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[i][M - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM2120 */ -void rem2120() { - - int C[N][M]; - int nloop, ib; - char tname[] = "REM2120"; - int i, j, NN, NM, NNL; - -#pragma dvm array distribute[block][*] - int B[N][M]; - -#pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloop = NL; -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - A[i][j] = NL + i + j; - } - -#pragma dvm parallel([i][j] on B[i][j]) remote_access(A[N - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - B[i][j] = A[N - 1][j]; - } -#pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - if (B[i][j] != C[N - 1][j]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial2(int AR[N][M], int NN, int NM, int NNL) { - int i, j; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) { - AR[i][j] = NNL + i + j; - } - return; -} - -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem31.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem31.cdv deleted file mode 100644 index 7216f6f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem31.cdv +++ /dev/null @@ -1,702 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 8 -#define K 8 -#define NL 1000 - -static void rem3101(); -static void rem3102(); -static void rem3103(); -static void rem3104(); -static void rem3105(); -static void rem3106(); -static void rem3107(); -static void rem3108(); -static void rem3109(); -static void rem3110(); -static void rem3111(); -static void rem3112(); -static void rem3113(); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL); - -int main(int an, char **as) { - printf("===START OF REM31========================\n"); - rem3101(); - rem3102(); - rem3103(); - rem3104(); - rem3105(); - rem3106(); - rem3107(); - rem3108(); - rem3109(); - rem3110(); - rem3111(); - rem3112(); - rem3113(); - - printf("=== END OF REM31 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM3101 */ -void rem3101() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3101"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[0][0][0]) -#pragma dvm remote_access(A[0][0][0]) - { ib = A[0][0][0]; } - if (ib == C[0][0][0]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3102 */ -void rem3102() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3102"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[N - 1][M - 1][K - 1]) -#pragma dvm remote_access(A[N - 1][M - 1][K - 1]) - { ib = A[N - 1][M - 1][K - 1]; } - if (ib == C[N - 1][M - 1][K - 1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3103 */ -void rem3103() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3103"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][][]) -#pragma dvm remote_access(A[][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][j][ii]; - isuma = isuma + A[i][j][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3104 */ -void rem3104() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3104"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[0][][]) -#pragma dvm remote_access(A[0][][]) - { - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[0][j][ii]; - isuma = isuma + A[0][j][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3105 */ -void rem3105() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3105"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][M - 1][]) -#pragma dvm remote_access(A[][M - 1][]) - { - for (i = 0; i < N; i++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][M - 1][ii]; - isuma = isuma + A[i][M - 1][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3106 */ -void rem3106() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3106"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][][K - 1]) -#pragma dvm remote_access(A[][][K - 1]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - isumc = isumc + C[i][j][K - 1]; - isuma = isuma + A[i][j][K - 1]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3107 */ -void rem3107() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - int ki, ki1, kj, kj1, kii, kii1; - char tname[] = "REM3107"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A) - ki = 2; - ki1 = 3; - kj = 2; - kj1 = 3; - kii = 2; - kii1 = 3; - for (i = 0; i < N / ki - ki1; i++) - for (j = 0; j < M / kj - kj1; j++) - for (ii = 0; ii < K / kii - kii1; ii++) { -#pragma dvm remote_access(A[ki * i + ki1][kj * j + kj1][kii * ii + kii1]) - { isuma = isuma + A[ki * i + ki1][kj * j + kj1][kii * ii + kii1]; } - isumc = isumc + C[ki * i + ki1][kj * j + kj1][kii * ii + kii1]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM3108 */ -void rem3108() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3108"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[0][0][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[0][0][0]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[0][0][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3109 */ -void rem3109() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3109"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) \ - remote_access(A[N - 1][M - 1][K - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[N - 1][M - 1][K - 1]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[N - 1][M - 1][K - 1]) - nloop = i; - } - } - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3110 */ -void rem3110() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3110"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - B[i][j][ii] = A[i][j][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][j][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3111 */ -void rem3111() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3111"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[0][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[0][j][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[0][j][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3112 */ -void rem3112() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3112"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][M - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - B[i][j][ii] = A[i][M - 1][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][M - 1][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3113 */ -void rem3113() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3113"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][][K - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[i][j][K - 1]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][j][K - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL) { - int i, j, ii; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - - { - AR[i][j][ii] = NNL + i + j + ii; - } -} - -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem32.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem32.cdv deleted file mode 100644 index a2944b4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem32.cdv +++ /dev/null @@ -1,705 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 8 -#define K 8 -#define NL 1000 - -static void rem3101(); -static void rem3102(); -static void rem3103(); -static void rem3104(); -static void rem3105(); -static void rem3106(); -static void rem3107(); -static void rem3108(); -static void rem3109(); -static void rem3110(); -static void rem3111(); -static void rem3112(); -static void rem3113(); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL); - -int main(int an, char **as) { - printf("===START OF REM31========================\n"); - rem3101(); - rem3102(); - rem3103(); - rem3104(); - rem3105(); - rem3106(); - rem3107(); - rem3108(); - rem3109(); - rem3110(); - rem3111(); - rem3112(); - rem3113(); - - printf("=== END OF REM31 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM3101 */ -void rem3101() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3101"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[*][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[1][1][1]) -#pragma dvm remote_access(A[1][1][1]) - { ib = A[1][1][1]; } - if (ib == C[1][1][1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3102 */ -void rem3102() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3102"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][*][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[N - 1][M - 1][K - 1]) -#pragma dvm remote_access(A[N - 1][M - 1][K - 1]) - { ib = A[N - 1][M - 1][K - 1]; } - if (ib == C[N - 1][M - 1][K - 1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3103 */ -void rem3103() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3103"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][*] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][][]) -#pragma dvm remote_access(A[][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][j][ii]; - isuma = isuma + A[i][j][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3104 */ -void rem3104() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3104"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[*][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[1][][]) -#pragma dvm remote_access(A[1][][]) - { - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[1][j][ii]; - isuma = isuma + A[1][j][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3105 */ -void rem3105() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3105"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][*][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][M - 1][]) -#pragma dvm remote_access(A[][M - 1][]) - { - for (i = 0; i < N; i++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][M - 1][ii]; - isuma = isuma + A[i][M - 1][ii]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3106 */ -void rem3106() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - char tname[] = "REM3106"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][*] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A[][][K - 1]) -#pragma dvm remote_access(A[][][K - 1]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) { - isumc = isumc + C[i][j][K - 1]; - isuma = isuma + A[i][j][K - 1]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3107 */ -void rem3107() { - - int C[N][M][K]; - int nloop, ib, isuma, isumc; - int ki, ki1, kj, kj1, kii, kii1; - char tname[] = "REM3107"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[*][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - isuma = 0; - isumc = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - } -#pragma dvm get_actual(A) - ki = 2; - ki1 = 3; - kj = 2; - kj1 = 3; - kii = 2; - kii1 = 3; - for (i = 0; i < N / ki - ki1; i++) - for (j = 0; j < M / kj - kj1; j++) - for (ii = 0; ii < K / kii - kii1; ii++) { -#pragma dvm remote_access(A[ki * i + ki1][kj * j + kj1][kii * ii + kii1]) - { isuma = isuma + A[ki * i + ki1][kj * j + kj1][kii * ii + kii1]; } - isumc = isumc + C[ki * i + ki1][kj * j + kj1][kii * ii + kii1]; - } - - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); - return; -} - -/* ---------------------------------------------REM3108 */ -void rem3108() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3108"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][*][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[1][1][1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[1][1][1]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[1][1][1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3109 */ -void rem3109() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3109"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][*] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) \ - remote_access(A[N - 1][M - 1][K - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[N - 1][M - 1][K - 1]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[N - 1][M - 1][K - 1]) - nloop = i; - } - } - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM3110 */ -void rem3110() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3110"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[*][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[i][j][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][j][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3111 */ -void rem3111() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3111"; - - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][*][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[1][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[1][j][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[1][j][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3112 */ -void rem3112() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3112"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[block][block][*] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][M - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[i][M - 1][ii]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][M - 1][ii]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM3113 */ -void rem3113() { - - int C[N][M][K]; - int nloop, ib; - char tname[] = "REM3113"; - int i, j, ii, NN, NM, NK, NNL; - -#pragma dvm array distribute[*][block][block] - int B[N][M][K]; - -#pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - } - -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) remote_access(A[][][K - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - - B[i][j][ii] = A[i][j][K - 1]; - } -#pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - if (B[i][j][ii] != C[i][j][K - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL) { - int i, j, ii; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - - { - AR[i][j][ii] = NNL + i + j + ii; - } -} - -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem41.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem41.cdv deleted file mode 100644 index 95bc72f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem41.cdv +++ /dev/null @@ -1,811 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 16 -#define K 16 -#define L 16 -#define NL 1000 - -static void rem4101(); -static void rem4102(); -static void rem4103(); -static void rem4104(); -static void rem4105(); -static void rem4106(); -static void rem4107(); -static void rem4108(); -static void rem4109(); -static void rem4110(); -static void rem4111(); -static void rem4112(); -static void rem4113(); -static void rem4114(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, - int NNL); - -int main(int an, char **as) { - printf("===START OF REM41========================\n"); - rem4101(); - rem4102(); - rem4103(); - rem4104(); - rem4105(); - rem4106(); - rem4107(); - rem4108(); - rem4109(); - rem4110(); - rem4111(); - rem4112(); - rem4113(); - rem4114(); - - printf("=== END OF REM41 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM4101 */ -void rem4101() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4101"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[1][1][1][1]) -#pragma dvm remote_access(A[1][1][1][1]) - { ib = A[1][1][1][1]; } - if (ib == C[1][1][1][1]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4102 */ -void rem4102() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4102"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[N - 1][M - 1][K - 1][L - 1]) -#pragma dvm remote_access(A[N - 1][M - 1][K - 1][L - 1]) - { ib = A[N - 1][M - 1][K - 1][L - 1]; } - - if (ib == C[N - 1][M - 1][K - 1][L - 1]) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4103 */ -void rem4103() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4103"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][]) -#pragma dvm remote_access(A[][][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][j][ii][jj]; - isuma = isuma + A[i][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4104 */ -void rem4104() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4104"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[1][][][]) -#pragma dvm remote_access(A[1][][][]) - { - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[1][j][ii][jj]; - isuma = isuma + A[1][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4105 */ -void rem4105() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4105"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][M - 1][][]) -#pragma dvm remote_access(A[][M - 1][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][M - 1][ii][jj]; - isuma = isuma + A[i][M - 1][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4106 */ -void rem4106() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4106"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][K - 1][]) - -#pragma dvm remote_access(A[][][K - 1][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (jj = 0; jj < L; jj++) { - isumc = isumc + C[i][j][K - 1][jj]; - isuma = isuma + A[i][j][K - 1][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4107 */ -void rem4107() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4107"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][L - 1]) -#pragma dvm remote_access(A[][][][L - 1]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][j][ii][L - 1]; - isuma = isuma + A[i][j][ii][L - 1]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4108 */ -void rem4108() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4108"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[1][1][1][1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[1][1][1][1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[1][1][1][1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4109 */ -void rem4109() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4109"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[N - 1][M - 1][K - 1][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[N - 1][M - 1][K - 1][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[N - 1][M - 1][K - 1][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4110 */ -void rem4110() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4110"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) remote_access(A[][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4111 */ -void rem4111() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4111"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[1][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[1][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[1][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4112 */ -void rem4112() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4112"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][M - 1][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][M - 1][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][M - 1][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4113 */ -void rem4113() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4113"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][K - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][K - 1][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][K - 1][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4114 */ -void rem4114() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4114"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, int NNL) { - int i, j, ii, jj; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - for (jj = 0; jj < NLL; jj++) - - { - AR[i][j][ii][jj] = NNL + i + j + ii + jj; - } -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem42.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem42.cdv deleted file mode 100644 index ad51022..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem42.cdv +++ /dev/null @@ -1,811 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 16 -#define K 16 -#define L 16 -#define NL 1000 - -static void rem4101(); -static void rem4102(); -static void rem4103(); -static void rem4104(); -static void rem4105(); -static void rem4106(); -static void rem4107(); -static void rem4108(); -static void rem4109(); -static void rem4110(); -static void rem4111(); -static void rem4112(); -static void rem4113(); -static void rem4114(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, - int NNL); - -int main(int an, char **as) { - printf("===START OF REM41========================\n"); - rem4101(); - rem4102(); - rem4103(); - rem4104(); - rem4105(); - rem4106(); - rem4107(); - rem4108(); - rem4109(); - rem4110(); - rem4111(); - rem4112(); - rem4113(); - rem4114(); - - printf("=== END OF REM41 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM4101 */ -void rem4101() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4101"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[0][0][0][0]) -#pragma dvm remote_access(A[0][0][0][0]) - { ib = A[0][0][0][0]; } - if (ib == C[0][0][0][0]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4102 */ -void rem4102() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4102"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[N - 1][M - 1][K - 1][L - 1]) -#pragma dvm remote_access(A[N - 1][M - 1][K - 1][L - 1]) - { ib = A[N - 1][M - 1][K - 1][L - 1]; } - - if (ib == C[N - 1][M - 1][K - 1][L - 1]) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4103 */ -void rem4103() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4103"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][]) -#pragma dvm remote_access(A[][][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][j][ii][jj]; - isuma = isuma + A[i][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4104 */ -void rem4104() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4104"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[0][0][0][0]) -#pragma dvm remote_access(A[0][][][]) - { - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[0][j][ii][jj]; - isuma = isuma + A[0][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4105 */ -void rem4105() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4105"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][M - 1][][]) -#pragma dvm remote_access(A[][M - 1][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][M - 1][ii][jj]; - isuma = isuma + A[i][M - 1][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4106 */ -void rem4106() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4106"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][K - 1][]) - -#pragma dvm remote_access(A[][][K - 1][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (jj = 0; jj < L; jj++) { - isumc = isumc + C[i][j][K - 1][jj]; - isuma = isuma + A[i][j][K - 1][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4107 */ -void rem4107() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4107"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][L - 1]) -#pragma dvm remote_access(A[][][][L - 1]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][j][ii][L - 1]; - isuma = isuma + A[i][j][ii][L - 1]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4108 */ -void rem4108() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4108"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[0][0][0][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[0][0][0][0]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[0][0][0][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4109 */ -void rem4109() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4109"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[N - 1][M - 1][K - 1][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[N - 1][M - 1][K - 1][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[N - 1][M - 1][K - 1][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4110 */ -void rem4110() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4110"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) remote_access(A[][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4111 */ -void rem4111() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4111"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[0][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[0][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[0][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4112 */ -void rem4112() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4112"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][M - 1][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][M - 1][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][M - 1][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4113 */ -void rem4113() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4113"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][K - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][K - 1][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][K - 1][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4114 */ -void rem4114() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4114"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][*][*][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, int NNL) { - int i, j, ii, jj; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - for (jj = 0; jj < NLL; jj++) - - { - AR[i][j][ii][jj] = NNL + i + j + ii + jj; - } -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem43.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem43.cdv deleted file mode 100644 index 09f6d7a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/REMOTE/rem43.cdv +++ /dev/null @@ -1,811 +0,0 @@ -/* TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED - ON ALL PROCESSORS. */ -#include -#include -#include -#define Min(a, b) ((a) < (b) ? (a) : (b)) -#define N 16 -#define M 16 -#define K 16 -#define L 16 -#define NL 1000 - -static void rem4101(); -static void rem4102(); -static void rem4103(); -static void rem4104(); -static void rem4105(); -static void rem4106(); -static void rem4107(); -static void rem4108(); -static void rem4109(); -static void rem4110(); -static void rem4111(); -static void rem4112(); -static void rem4113(); -static void rem4114(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); -static void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, - int NNL); - -int main(int an, char **as) { - printf("===START OF REM41========================\n"); - rem4101(); - rem4102(); - rem4103(); - rem4104(); - rem4105(); - rem4106(); - rem4107(); - rem4108(); - rem4109(); - rem4110(); - rem4111(); - rem4112(); - rem4113(); - rem4114(); - - printf("=== END OF REM41 ========================= \n"); - return 0; -} -/* ---------------------------------------------REM4101 */ -void rem4101() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4101"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[0][0][0][0]) -#pragma dvm remote_access(A[0][0][0][0]) - { ib = A[0][0][0][0]; } - if (ib == C[0][0][0][0]) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4102 */ -void rem4102() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4102"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][*][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[N - 1][M - 1][K - 1][L - 1]) -#pragma dvm remote_access(A[N - 1][M - 1][K - 1][L - 1]) - { ib = A[N - 1][M - 1][K - 1][L - 1]; } - - if (ib == C[N - 1][M - 1][K - 1][L - 1]) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4103 */ -void rem4103() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4103"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][*][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][]) -#pragma dvm remote_access(A[][][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][j][ii][jj]; - isuma = isuma + A[i][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4104 */ -void rem4104() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4104"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[0][0][0][0]) -#pragma dvm remote_access(A[0][][][]) - { - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[0][j][ii][jj]; - isuma = isuma + A[0][j][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4105 */ -void rem4105() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4105"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][M - 1][][]) -#pragma dvm remote_access(A[][M - 1][][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < K; jj++) { - isumc = isumc + C[i][M - 1][ii][jj]; - isuma = isuma + A[i][M - 1][ii][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4106 */ -void rem4106() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4106"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][*][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][K - 1][]) - -#pragma dvm remote_access(A[][][K - 1][]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (jj = 0; jj < L; jj++) { - isumc = isumc + C[i][j][K - 1][jj]; - isuma = isuma + A[i][j][K - 1][jj]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4107 */ -void rem4107() { - - int C[N][M][K][L]; - int nloop, ib, isuma, isumc; - char tname[] = "REM4107"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][*][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - isumc = 0; - isuma = 0; - -#pragma dvm region out(A) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - } -#pragma dvm get_actual(A[][][][L - 1]) -#pragma dvm remote_access(A[][][][L - 1]) - { - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - isumc = isumc + C[i][j][ii][L - 1]; - isuma = isuma + A[i][j][ii][L - 1]; - } - } - if (isuma == isumc) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4108 */ -void rem4108() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4108"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[0][0][0][0]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[0][0][0][0]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[0][0][0][0]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4109 */ -void rem4109() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4109"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[N - 1][M - 1][K - 1][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[N - 1][M - 1][K - 1][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[N - 1][M - 1][K - 1][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4110 */ -void rem4110() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4110"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][*][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) remote_access(A[][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4111 */ -void rem4111() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4111"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][*][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[0][][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[0][j][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[0][j][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------REM4112 */ -void rem4112() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4112"; - - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[*][block][block][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][M - 1][][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][M - 1][ii][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][M - 1][ii][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4113 */ -void rem4113() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4113"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][block][*] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][K - 1][]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][K - 1][jj]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][K - 1][jj]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------REM4114 */ -void rem4114() { - - int C[N][M][K][L]; - int nloop, ib; - char tname[] = "REM4114"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - -#pragma dvm array distribute[block][block][*][block] - int B[N][M][K][L]; - -#pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]) - int A[N][M][K][L]; - - NN = N; - NM = M; - NK = K; - NLL = L; - NNL = NL; - serial4(C, NN, NM, NK, NLL, NNL); - nloop = NL; - -#pragma dvm region local(A, B) - { - -#pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - A[i][j][ii][jj] = NL + i + j + ii + jj; - } - -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) \ - remote_access(A[][][][L - 1]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - - B[i][j][ii][jj] = A[i][j][ii][L - 1]; - } -#pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloop)) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) { - if (B[i][j][ii][jj] != C[i][j][ii][L - 1]) - nloop = i; - } - } -#pragma dvm get_actual(nloop) - if (nloop == NL) - ansyes(tname); - else - ansno(tname); -} -void serial4(int AR[N][M][K][L], int NN, int NM, int NK, int NLL, int NNL) { - int i, j, ii, jj; - - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - for (jj = 0; jj < NLL; jj++) - - { - AR[i][j][ii][jj] = NNL + i + j + ii + jj; - } -} -void ansyes(const char name[]) { - printf("%s - complete\n", name); - return; -} -void ansno(const char name[]) { - printf("%s - ***error\n", name); - return; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh21.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh21.cdv deleted file mode 100644 index 977fb11..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh21.cdv +++ /dev/null @@ -1,1169 +0,0 @@ -/* TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. - DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT SHADOW WIDTH - ON BOTH SIDES */ - -#include -#include -#include - -#define N 60 -#define M 60 -#define NL 1000 - -static void sh2101(); -static void sh2102(); -static void sh2103(); -static void sh2104(); -static void sh2105(); -static void sh2106(); -static void sh2107(); -static void sh2108(); -static void sh2109(); -static void sh2110(); -static void sh2111(); -static void sh2112(); -static void sh2113(); -static void sh2114(); -static void sh2115(); -static void sh2116(); -static void sh2117(); -static void sh2118(); -static void sh2119(); -static void sh2120(); -static void sh2121(); -static void sh2122(); - -static void serial2(int AR[N][M], int NN, int NM, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF SH21========================\n"); - sh2101(); - sh2102(); - sh2103(); - sh2104(); - sh2105(); - sh2106(); - sh2107(); - sh2108(); - sh2109(); - sh2110(); - sh2111(); - sh2112(); - sh2113(); - sh2114(); - sh2115(); - sh2116(); - sh2117(); - sh2118(); - sh2119(); - sh2120(); - sh2121(); - sh2122(); - - printf("=== END OF SH21 ========================= \n"); - return 0; -} -/* ---------------------------------------------SH2101 */ -void sh2101() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2101"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A (corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i+1][j]+A[i][j+1]+A[i-1][j]+A[i][j-1]+ A[i-1][j-1]+ - A[i+1][j+1]+A[i-1][j+1]+A[i+1][j-1]; - } /*end region*/ - - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i+1][j]+C[i][j+1]+C[i-1][j]+C[i][j-1]+C[i-1][j-1]+ - C[i+1][j+1]+C[i-1][j+1]+C[i+1][j-1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2102 */ -void sh2102() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2102"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]) - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][0:1](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i+1][j]+A[i][j+1]+ A[i+1][j+1]; - } /*end region*/ - - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i+1][j]+C[i][j+1]+C[i+1][j+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2103 */ -void sh2103() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2103"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[1:0][0:1] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[1:0][0:1](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i-1][j]+A[i][j+1]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i-1][j]+C[i][j+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2104 */ -void sh2104() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2104"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:1][0:1] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][0:1](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i+1][j]+A[i][j+1]+ A[i+1][j+1]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i+1][j]+C[i][j+1]+C[i+1][j+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2105 */ -void sh2105() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2105"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:1][1:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][1:0](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i][j-1]+A[i+1][j]+A[i+1][j-1]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i][j-1]+C[i+1][j]+C[i+1][j-1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2106 */ -void sh2106() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2106"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:1][0:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][0:0](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i+1][j]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] != C[i+1][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2107 */ -void sh2107() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2107"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:0][1:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:0][1:0](corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - B[i][j] = A[i][j-1]; - - } /*end region*/ - - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - if (B[i][j] !=C[i][j-1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2108 */ -void sh2108() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2108"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:2][2:2] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[2:2][2:2](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i+2][j]+A[i][j+2]+A[i+2][j+2]+A[i-2][j+2]+ - A[i-2][j]+A[i][j-2]+A[i-2][j-2]+A[i+2][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] != C[i+2][j]+C[i][j+2]+C[i+2][j+2]+C[i-2][j+2]+ - C[i-2][j]+C[i][j-2]+C[i-2][j-2]+C[i+2][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2109 */ - void sh2109() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2109"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:2][2:2] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:2][2:2](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i+2][j+2]+A[i+1][j+1]+A[i][j+2]+A[i][j-2]+A[i+2][j-2]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] != C[i+2][j+2]+C[i+1][j+1]+C[i][j+2]+C[i][j-2]+C[i+2][j-2]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2110 */ -void sh2110() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2110"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:2][2:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[2:2][2:0](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i-2][j-2]+A[i-1][j-1]+A[i-2][j]+A[i+2][j]+A[i+2][j-2]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] != C[i-2][j-2]+C[i-1][j-1]+C[i-2][j]+C[i+2][j]+C[i+2][j-2]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2111 */ -void sh2111() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2111"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:2][0:2] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[2:2][0:2](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i+2][j+2]+A[i+1][j+1]+A[i-2][j+2]+A[i+2][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] != C[i+2][j+2]+C[i+1][j+1]+C[i-2][j+2]+C[i+2][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2112 */ -void sh2112() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2112"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:0][2:2] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[1:0][0:1](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i-1][j+1]+A[i][j+1]+A[i-1][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] != C[i-1][j+1]+C[i][j+1]+C[i-1][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2113 */ -void sh2113() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2113"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:2][2:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][0:0](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i+1][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] !=C[i+1][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2114 */ -void sh2114() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2114"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[2:0][2:2] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:0][0:2](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - B[i][j] = A[i][j+2]+A[i][j+1]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - if (B[i][j] !=C[i][j+2]+C[i][j+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2115 */ -void sh2115() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2115"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[3:3][3:3] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A(corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - B[i][j] = A[i+1][j+1]+A[i+2][j+2]+A[i+3][j+3]+A[i-3][j-3]+A[i-2][j-2]+ - A[i-1][j-1]+A[i-3][j+3]+A[i+3][j-3]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (B[i][j] !=C[i+1][j+1]+C[i+2][j+2]+C[i+3][j+3]+C[i-3][j-3]+C[i-2][j-2]+ - C[i-1][j-1]+C[i-3][j+3]+C[i+3][j-3]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2116 */ -void sh2116() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2116"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[3:3][0:3] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:0][0:1](corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - B[i][j] = A[i][j+1]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (B[i][j] !=C[i][j+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -/* ---------------------------------------------SH2117 */ -void sh2117() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2117"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[0:3][3:3] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[0:1][0:0](corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - B[i][j] = A[i+1][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (B[i][j] !=C[i+1][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2118 */ -void sh2118() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2118"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[3:3][3:0] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A(corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - B[i][j] = A[i-3][j-3]+A[i+3][j]+A[i-3][j]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (B[i][j] !=C[i-3][j-3]+C[i+3][j]+C[i-3][j]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2119 */ -void sh2119() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2119"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[3:0][3:3] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A[3:0][3:3](corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - B[i][j] = A[i-3][j-3]+A[i][j+3]+A[i-3][j+3]; - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - if (B[i][j] !=C[i-3][j-3]+C[i][j+3]+C[i-3][j+3]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2120 */ -void sh2120() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2120"; - int i, j, NN, NM, NNL; - #pragma dvm array distribute[block][block] - int B[N][M]; - #pragma dvm array align([i][j] with B[i][j]), shadow[9:9][9:9] - int A[N][M]; - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - - nloopi = NL; - nloopj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A(corner)) - for (i = 9; i < N - 9;i++) - for (j = 9; j < M - 9; j++) - B[i][j] = A[i+7][j+7]+A[i+8][j+8]+A[i+9][j+9]+A[i-9][j-9]+A[i-8][j-8]+ - A[i-7][j-7]+A[i-9][j+9]+A[i+9][j-9]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - if (B[i][j] !=C[i+7][j+7]+C[i+8][j+8]+C[i+9][j+9]+C[i-9][j-9]+C[i-8][j-8]+ - C[i-7][j-7]+C[i-9][j+9]+C[i+9][j-9] ) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2121 */ -void sh2121() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2121"; - int i, j, NN, NM, NNL; - - #pragma dvm array distribute[block][block] - int B[N][M]; - - #pragma dvm array shadow[9:9][9:9] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloopi = NL; - nloopj = NL; - #pragma dvm realign(A[i][j] with B[i][j]) - #pragma dvm region local(A), out(B) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A(corner)) - for (i = 9; i < N - 9;i++) - for (j = 9; j < M - 9; j++) - B[i][j] = A[i+7][j+7]+A[i+8][j+8]+A[i+9][j+9]+A[i-9][j-9]+A[i-8][j-8]+ - A[i-7][j-7]+A[i-9][j+9]+A[i+9][j-9]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - if (B[i][j] !=C[i+7][j+7]+C[i+8][j+8]+C[i+9][j+9]+C[i-9][j-9]+C[i-8][j-8]+ - C[i-7][j-7]+C[i-9][j+9]+C[i+9][j-9] ) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH2122 */ -void sh2122() -{ - int C[N][M]; - int nloopi, nloopj; - char tname[] = "SH2122"; - int i, j, NN, NM, NNL; - - #pragma dvm array - int B[N][M]; - - #pragma dvm array shadow[9:9][9:9] - int A[N][M]; - - NN = N; - NM = M; - NNL = NL; - serial2(C, NN, NM, NNL); - nloopi = NL; - nloopj = NL; - #pragma dvm redistribute(B[block][block]) - #pragma dvm realign(A[i][j] with B[i][j]) - #pragma dvm region local(A), out(B) - { - - #pragma dvm parallel([i][j] on A[i][j]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - A[i][j] = NL + i + j; - - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A(corner)) - for (i = 9; i < N - 9;i++) - for (j = 9; j < M - 9; j++) - B[i][j] = A[i+7][j+7]+A[i+8][j+8]+A[i+9][j+9]+A[i-9][j-9]+A[i-8][j-8]+ - A[i-7][j-7]+A[i-9][j+9]+A[i+9][j-9]; - - } /*end region*/ - - #pragma dvm get_actual(B) - - #pragma dvm parallel([i][j] on B[i][j]) reduction(min(nloopi), min(nloopj)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - if (B[i][j] !=C[i+7][j+7]+C[i+8][j+8]+C[i+9][j+9]+C[i-9][j-9]+C[i-8][j-8]+ - C[i-7][j-7]+C[i-9][j+9]+C[i+9][j-9] ) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - } - - if (nloopi == NL && nloopj == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial2(int AR[N][M], int NN, int NM, int NNL) -{ - int i,j; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - AR[i][j] = NNL + i + j; -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh31.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh31.cdv deleted file mode 100644 index a5854ea..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh31.cdv +++ /dev/null @@ -1,706 +0,0 @@ - /* TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT SHADOW WIDTH - ON BOTH SIDES */ - -#include -#include -#include - -#define N 60 -#define M 60 -#define K 60 -#define NL 1000 - -static void sh3101(); -static void sh3102(); -static void sh3103(); -static void sh3104(); -static void sh3105(); -static void sh3106(); -static void sh3107(); -static void sh3108(); -static void sh3109(); -static void sh3110(); -static void sh3111(); -static void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL); -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int argc, char *argv[]) -{ - printf("===START OF SH31========================\n"); - sh3101(); - sh3102(); - sh3103(); - sh3104(); - sh3105(); - sh3106(); - sh3107(); - sh3108(); - sh3109(); - sh3110(); - sh3111(); - - printf("=== END OF SH31 ========================= \n"); - return 0; -} -/* ---------------------------------------------SH3101 */ -void sh3101() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3101"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]) - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A (corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1;j++) - for (ii = 1; ii < K - 1; ii++) - B[i][j][ii] = A[i+1][j][ii]+A[i][j+1][ii]+A[i][j][ii+1]+A[i-1][j][ii]+ - A[i][j-1][ii]+A[i][j][ii-1]+A[i-1][j-1][ii-1]+ - A[i+1][j+1][ii+1]+A[i-1][j+1][ii]+A[i+1][j-1][ii]+ - A[i-1][j+1][ii-1]+A[i-1][j+1][ii+1]+A[i+1][j-1][ii-1]+ - A[i+1][j-1][ii+1]; - - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1;j++) - for (ii = 1; ii < K - 1; ii++) - if (B[i][j][ii]!=C[i+1][j][ii]+C[i][j+1][ii]+C[i][j][ii+1]+ - C[i-1][j][ii]+C[i][j-1][ii]+C[i][j][ii-1]+ - C[i-1][j-1][ii-1]+C[i+1][j+1][ii+1]+C[i-1][j+1][ii]+ - C[i+1][j-1][ii]+C[i-1][j+1][ii-1]+C[i-1][j+1][ii+1]+ - C[i+1][j-1][ii-1]+C[i+1][j-1][ii+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3102 */ -void sh3102() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3102"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[2:2][2:2][2:2] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[1:2][2:2][1:2](corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - B[i][j][ii] = A[i-1][j-2][ii+2]+A[i-1][j+2][ii-1]+A[i-1][j+2][ii+2]+ - A[i+2][j+2][ii+2]+A[i+2][j+2][ii-1]+A[i+2][j-2][ii+2]+ - A[i+2][j-2][ii-1]+A[i-1][j-2][ii-1]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - if (B[i][j][ii]!= C[i-1][j-2][ii+2]+C[i-1][j+2][ii-1]+C[i-1][j+2][ii+2]+ - C[i+2][j+2][ii+2]+C[i+2][j+2][ii-1]+C[i+2][j-2][ii+2]+ - C[i+2][j-2][ii-1]+C[i-1][j-2][ii-1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3103 */ -void sh3103() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3103"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[2:2][2:2][2:2] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[0:2][2:2][0:2] (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - B[i][j][ii] = A[i+2][j+2][ii+2]+A[i][j-2][ii]+ - A[i+2][j-2][ii]+A[i][j+2][ii]+ A[i][j+2][ii+2]+ - A[i+2][j-2][ii+2]+A[i+2][j+2][ii]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - if (B[i][j][ii]!= C[i+2][j+2][ii+2]+C[i][j-2][ii]+ - C[i+2][j-2][ii]+C[i][j+2][ii]+ C[i][j+2][ii+2]+ - C[i+2][j-2][ii+2]+C[i+2][j+2][ii] ) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3104 */ -void sh3104() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3104"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[2:2][2:2][2:2] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[2:2][2:0][2:0] (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - B[i][j][ii] = A[i+2][j][ii]+A[i-2][j-2][ii-2] - + A[i+2][j-2][ii-2]+A[i-2][j][ii-2]+ A[i-2][j-2][ii]+ - A[i-2][j][ii]+A[i+2][j-2][ii]+A[i+2][j][ii-2]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - if (B[i][j][ii]!=C[i+2][j][ii]+C[i-2][j-2][ii-2] - + C[i+2][j-2][ii-2]+C[i-2][j][ii-2]+ C[i-2][j-2][ii]+ - C[i-2][j][ii]+C[i+2][j-2][ii]+C[i+2][j][ii-2]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } -/* printf ("%i,%i,%i\n",nloopi,nloopj,nloopii);*/ - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3105 */ -void sh3105() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3105"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[0:2][2:2][0:2] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[0:2][2:2][0:2] (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - B[i][j][ii] = A[i+2][j+2][ii+2]+A[i][j-2][ii]+ - A[i+2][j-2][ii]+A[i][j+2][ii]+ A[i][j+2][ii+2]+ - A[i+2][j-2][ii+2]+A[i+2][j+2][ii]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - if (B[i][j][ii]!= C[i+2][j+2][ii+2]+C[i][j-2][ii]+ - C[i+2][j-2][ii]+C[i][j+2][ii]+ C[i][j+2][ii+2]+ - C[i+2][j-2][ii+2]+C[i+2][j+2][ii]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3106 */ -void sh3106() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3106"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[3:3][3:3][3:3] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - B[i][j][ii] = A[i-3][j-3][ii+3]+A[i+3][j+3][ii-3]+A[i+3][j-3][ii+3]+ - A[i-3][j+3][ii+3]+A[i-3][j+3][ii-3]+A[i+3][j-3][ii-3]+ - A[i+3][j+3][ii+3]+A[i-3][j-3][ii-3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - if (B[i][j][ii]!= C[i-3][j-3][ii+3]+C[i+3][j+3][ii-3]+C[i+3][j-3][ii+3]+ - C[i-3][j+3][ii+3]+C[i-3][j+3][ii-3]+C[i+3][j-3][ii-3]+ - C[i+3][j+3][ii+3]+C[i-3][j-3][ii-3]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3107 */ -void sh3107() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3107"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[3:3][0:3][3:0] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - B[i][j][ii] = A[i+3][j+3][ii]+A[i-3][j][ii-3]+A[i+3][j][ii-3]+ - A[i-3][j+3][ii-3]+A[i-3][j][ii]+A[i-3][j+3][ii]+ - A[i+3][j][ii]+A[i+3][j+3][ii-3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - if (B[i][j][ii]!= C[i-3][j-3][ii+3]+C[i+3][j+3][ii-3]+C[i+3][j-3][ii+3]+ - C[i-3][j+3][ii+3]+C[i-3][j+3][ii-3]+C[i+3][j-3][ii-3]+ - C[i+3][j+3][ii+3]+C[i-3][j-3][ii-3]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3108 */ -void sh3108() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3108"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[0:3][0:3][0:3] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[0:3][0:3][0:3] (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - B[i][j][ii] = A[i+3][j+3][ii+3]+A[i+3][j][ii]+A[i][j+3][ii]+ - A[i][j][ii+3]+A[i][j+3][ii+3]+A[i+3][j][ii+3]+ - A[i+3][j+3][ii]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - if (B[i][j][ii]!=C[i+3][j+3][ii+3]+C[i+3][j][ii]+C[i][j+3][ii]+ - C[i][j][ii+3]+C[i][j+3][ii+3]+C[i+3][j][ii+3]+ - C[i+3][j+3][ii] ) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3109 */ -void sh3109() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3109"; - int i, j, ii, NN, NM, NK, NNL; - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - #pragma dvm array align([i][j][ii] with B[i][j][ii]), shadow[9:9][9:9][9:9] - int A[N][M][K]; - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[9:9][9:9][9:9] (corner)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - B[i][j][ii]=A[i+9][j+9][ii+9]+A[i-9][j-9][ii-9]+A[i+9][j-9][ii-9]+ - A[i-9][j+9][ii-9]+A[i-9][j-9][ii+9]+A[i-9][j+9][ii+9]+ - A[i+9][j-9][ii+9]+A[i+9][j+9][ii-9]; - - - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - if (B[i][j][ii]!=C[i+9][j+9][ii+9]+C[i-9][j-9][ii-9]+C[i+9][j-9][ii-9]+ - C[i-9][j+9][ii-9]+C[i-9][j-9][ii+9]+C[i-9][j+9][ii+9]+ - C[i+9][j-9][ii+9]+C[i+9][j+9][ii-9]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3110 */ -void sh3110() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3110"; - int i, j, ii, NN, NM, NK, NNL; - - #pragma dvm array distribute[block][block][block] - int B[N][M][K]; - - #pragma dvm array shadow[9:9][9:9][9:9] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - #pragma dvm realign(A[i][j][ii] with B[i][j][ii]) - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[9:9][9:9][9:9] (corner)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - B[i][j][ii]=A[i+9][j+9][ii+9]+A[i-9][j-9][ii-9]+A[i+9][j-9][ii-9]+ - A[i-9][j+9][ii-9]+A[i-9][j-9][ii+9]+A[i-9][j+9][ii+9]+ - A[i+9][j-9][ii+9]+A[i+9][j+9][ii-9]; - - - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - if (B[i][j][ii]!=C[i+9][j+9][ii+9]+C[i-9][j-9][ii-9]+C[i+9][j-9][ii-9]+ - C[i-9][j+9][ii-9]+C[i-9][j-9][ii+9]+C[i-9][j+9][ii+9]+ - C[i+9][j-9][ii+9]+C[i+9][j+9][ii-9]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} -/* ---------------------------------------------SH3111 */ -void sh3111() -{ - int C[N][M][K]; - int nloopi, nloopj, nloopii; - char tname[] = "SH3111"; - int i, j, ii, NN, NM, NK, NNL; - - #pragma dvm array - int B[N][M][K]; - - #pragma dvm array shadow[9:9][9:9][9:9] - int A[N][M][K]; - - NN = N; - NM = M; - NK = K; - NNL = NL; - serial3(C, NN, NM, NK, NNL); - nloopi = NL; - nloopj = NL; - nloopii = NL; - #pragma dvm redistribute(B[block][block][block]) - #pragma dvm realign(A[i][j][ii] with B[i][j][ii]) - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii] on A[i][j][ii]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) { - A[i][j][ii] = NL + i + j + ii; - B[i][j][ii] = 0; - } - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) shadow_renew(A[9:9][9:9][9:9] (corner)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - B[i][j][ii]=A[i+9][j+9][ii+9]+A[i-9][j-9][ii-9]+A[i+9][j-9][ii-9]+ - A[i-9][j+9][ii-9]+A[i-9][j-9][ii+9]+A[i-9][j+9][ii+9]+ - A[i+9][j-9][ii+9]+A[i+9][j+9][ii-9]; - - - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii] on B[i][j][ii]) reduction(min(nloopi), min(nloopj), min(nloopii)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 9; ii < K - 9; ii++) - if (B[i][j][ii]!=C[i+9][j+9][ii+9]+C[i-9][j-9][ii-9]+C[i+9][j-9][ii-9]+ - C[i-9][j+9][ii-9]+C[i-9][j-9][ii+9]+C[i-9][j+9][ii+9]+ - C[i+9][j-9][ii+9]+C[i+9][j+9][ii-9]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL) - ansyes(tname); - else - ansno(tname); -} - -void serial3(int AR[N][M][K], int NN, int NM, int NK, int NNL) -{ - int i, j, ii; - for (i = 0; i < NN; i++) - for (j = 0; j < NM; j++) - for (ii = 0; ii < NK; ii++) - AR[i][j][ii] = NNL + i + j + ii; -} - -void ansyes(const char name[]) -{ - printf ("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh41.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh41.cdv deleted file mode 100644 index d0ff678..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/SHADOW/sh41.cdv +++ /dev/null @@ -1,923 +0,0 @@ -/* TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. - DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT SHADOW WIDTH - ON BOTH SIDES */ - -#include -#include -#include - -#define NL 1000 - -static void sh4101(); -static void sh4102(); -static void sh4103(); -static void sh4104(); -static void sh4105(); -static void sh4106(); -static void sh4107(); -static void sh4108(); -static void sh4109(); -static void sh4110(); -static void sh4111(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -int main(int an, char **as) -{ - printf("===START OF SH41========================\n"); - sh4101(); - sh4102(); - sh4103(); - sh4104(); - sh4105(); - sh4106(); - sh4107(); - sh4108(); - sh4109(); - sh4110(); - sh4111(); - - printf("=== END OF SH41 ========================= \n"); - return 0; -} -/* ---------------------------------------------SH4101 */ -void sh4101() -{ - #define N 16 - #define M 8 - #define K 8 - #define L 8 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4101"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[1:1][1:1][1:1][1:1] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A(corner)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - B[i][j][ii][jj] = A[i+1][j+1][ii+1][jj+1]+A[i-1][j-1][ii-1][jj-1]+ - A[i+1][j-1][ii-1][jj-1]+A[i-1][j+1][ii-1][jj-1]+ - A[i-1][j-1][ii+1][jj-1]+A[i-1][j-1][ii-1][jj+1]+ - A[i+1][j+1][ii-1][jj-1]+A[i-1][j+1][ii+1][jj-1]+ - A[i-1][j-1][ii+1][jj+1]+A[i+1][j-1][ii-1][jj+1]+ - A[i+1][j-1][ii+1][jj-1]+A[i-1][j+1][ii-1][jj+1]+ - A[i+1][j+1][ii+1][jj-1]+A[i-1][j+1][ii+1][jj+1]+ - A[i+1][j-1][ii+1][jj+1]+A[i+1][j+1][ii-1][jj+1]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 1; i < N - 1; i++) - for (j = 1; j < M - 1; j++) - for (ii = 1; ii < K - 1; ii++) - for (jj = 1; jj < L - 1; jj++) - if (B[i][j][ii][jj]!= - C[i+1][j+1][ii+1][jj+1]+C[i-1][j-1][ii-1][jj-1]+ - C[i+1][j-1][ii-1][jj-1]+C[i-1][j+1][ii-1][jj-1]+ - C[i-1][j-1][ii+1][jj-1]+C[i-1][j-1][ii-1][jj+1]+ - C[i+1][j+1][ii-1][jj-1]+C[i-1][j+1][ii+1][jj-1]+ - C[i-1][j-1][ii+1][jj+1]+C[i+1][j-1][ii-1][jj+1]+ - C[i+1][j-1][ii+1][jj-1]+C[i-1][j+1][ii-1][jj+1]+ - C[i+1][j+1][ii+1][jj-1]+C[i-1][j+1][ii+1][jj+1]+ - C[i+1][j-1][ii+1][jj+1]+C[i+1][j+1][ii-1][jj+1]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/*-----------------------------------------------------------SH4102 */ -void sh4102() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4102"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel ([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - B[i][j][ii][jj] = - A[i+2][j+2][ii+2][jj+2]+A[i-2][j-2][ii-2][jj-2]+ - A[i+2][j-2][ii-2][jj-2]+A[i-2][j+2][ii-2][jj-2]+ - A[i-2][j-2][ii+2][jj-2]+A[i-2][j-2][ii-2][jj+2]+ - A[i+2][j+2][ii-2][jj-2]+A[i-2][j+2][ii+2][jj-2]+ - A[i-2][j-2][ii+2][jj+2]+A[i+2][j-2][ii-2][jj+2]+ - A[i+2][j-2][ii+2][jj-2]+A[i-2][j+2][ii-2][jj+2]+ - A[i+2][j+2][ii+2][jj-2]+A[i-2][j+2][ii+2][jj+2]+ - A[i+2][j-2][ii+2][jj+2]+A[i+2][j+2][ii-2][jj+2]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - if (B[i][j][ii][jj]!= - C[i+2][j+2][ii+2][jj+2]+C[i-2][j-2][ii-2][jj-2]+ - C[i+2][j-2][ii-2][jj-2]+C[i-2][j+2][ii-2][jj-2]+ - C[i-2][j-2][ii+2][jj-2]+C[i-2][j-2][ii-2][jj+2]+ - C[i+2][j+2][ii-2][jj-2]+C[i-2][j+2][ii+2][jj-2]+ - C[i-2][j-2][ii+2][jj+2]+C[i+2][j-2][ii-2][jj+2]+ - C[i+2][j-2][ii+2][jj-2]+C[i-2][j+2][ii-2][jj+2]+ - C[i+2][j+2][ii+2][jj-2]+C[i-2][j+2][ii+2][jj+2]+ - C[i+2][j-2][ii+2][jj+2]+C[i+2][j+2][ii-2][jj+2]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4103 */ -void sh4103() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4103"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[2:2][2:2][2:2][2:2] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A[2:0][2:2][2:0][2:0] (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - B[i][j][ii][jj] = - A[i-2][j-2][ii-2][jj-2]+A[i][j-2][ii][jj]+ - A[i-2][j-2][ii][jj] +A[i][j-2][ii][jj]+ - A[i][j-2][ii-2][jj] +A[i-2][j-2][ii][jj]+ - A[i][j-2][ii-2][jj-2] +A[i][j-2][ii][jj-2]+ - A[i-2][j-2][ii-2][jj] +A[i][j-2][ii-2][jj-2]; - }/* end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - if (B[i][j][ii][jj]!= - C[i-2][j-2][ii-2][jj-2]+C[i][j-2][ii][jj]+ - C[i-2][j-2][ii][jj] +C[i][j-2][ii][jj]+ - C[i][j-2][ii-2][jj] +C[i-2][j-2][ii][jj]+ - C[i][j-2][ii-2][jj-2] +C[i][j-2][ii][jj-2]+ - C[i-2][j-2][ii-2][jj] +C[i][j-2][ii-2][jj-2]) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4104 */ -void sh4104() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4104"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[0:2][2:2][0:2][0:2] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A(corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - B[i][j][ii][jj] = A[i+2][j+2][ii+2][jj+2]+A[i][j-2][ii][jj]+ - A[i+2][j-2][ii][jj] +A[i][j-2][ii][jj]+ - A[i][j+2][ii][jj] +A[i][j-2][ii+2][jj]+ - A[i+2][j+2][ii][jj] +A[i][j-2][ii+2][jj+2]+ - A[i][j+2][ii][jj+2] +A[i+2][j+2][ii+2][jj]+ - A[i][j+2][ii+2][jj+2] +A[i+2][j-2][ii+2][jj+2]; - }/*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - if (B[i][j][ii][jj]!= - C[i+2][j+2][ii+2][jj+2]+C[i][j-2][ii][jj]+ - C[i+2][j-2][ii][jj] +C[i][j-2][ii][jj]+ - C[i][j+2][ii][jj] +C[i][j-2][ii+2][jj]+ - C[i+2][j+2][ii][jj] +C[i][j-2][ii+2][jj+2]+ - C[i][j+2][ii][jj+2] +C[i+2][j+2][ii+2][jj]+ - C[i][j+2][ii+2][jj+2] +C[i+2][j-2][ii+2][jj+2]) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4105 */ -void sh4105() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4105"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[2:2][2:0][0:2][2:2] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A[0:0][0:0][0:0][0:2] (corner)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - B[i][j][ii][jj] = A[i][j][ii][jj+2]; - }/*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 2; i < N - 2; i++) - for (j = 2; j < M - 2; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - if (B[i][j][ii][jj]!=C[i][j][ii][jj+2]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4106 */ -void sh4106() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4106"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - B[i][j][ii][jj] = A[i+3][j+3][ii+3][jj+3]+A[i-3][j-3][ii-3][jj-3]+ - A[i+3][j-3][ii-3][jj-3]+A[i-3][j+3][ii-3][jj-3]+ - A[i-3][j-3][ii+3][jj-3]+A[i-3][j-3][ii-3][jj+3]+ - A[i+3][j+3][ii-3][jj-3]+A[i-3][j+3][ii+3][jj-3]+ - A[i-3][j-3][ii+3][jj+3]+A[i+3][j-3][ii-3][jj+3]+ - A[i+3][j-3][ii+3][jj-3]+A[i-3][j+3][ii-3][jj+3]+ - A[i+3][j+3][ii+3][jj-3]+A[i-3][j+3][ii+3][jj+3]+ - A[i+3][j-3][ii+3][jj+3]+A[i+3][j+3][ii-3][jj+3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - if (B[i][j][ii][jj]!= - C[i+3][j+3][ii+3][jj+3]+C[i-3][j-3][ii-3][jj-3]+ - C[i+3][j-3][ii-3][jj-3]+C[i-3][j+3][ii-3][jj-3]+ - C[i-3][j-3][ii+3][jj-3]+C[i-3][j-3][ii-3][jj+3]+ - C[i+3][j+3][ii-3][jj-3]+C[i-3][j+3][ii+3][jj-3]+ - C[i-3][j-3][ii+3][jj+3]+C[i+3][j-3][ii-3][jj+3]+ - C[i+3][j-3][ii+3][jj-3]+C[i-3][j+3][ii-3][jj+3]+ - C[i+3][j+3][ii+3][jj-3]+C[i-3][j+3][ii+3][jj+3]+ - C[i+3][j-3][ii+3][jj+3]+C[i+3][j+3][ii-3][jj+3] ) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4107 */ -void sh4107() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4107"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[0:3][3:3][0:3][0:3] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A(corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - B[i][j][ii][jj] = - A[i+3][j+3][ii+3][jj+3]+A[i][j-3][ii][jj]+ - A[i+3][j-3][ii][jj]+A[i][j+3][ii][jj]+ - A[i][j-3][ii+3][jj]+A[i+3][j+3][ii][jj]+ - A[i][j-3][ii+3][jj+3]+A[i][j+3][ii][jj+3]+ - A[i+3][j+3][ii+3][jj]+A[i][j+3][ii+3][jj+3]+ - A[i+3][j-3][ii+3][jj+3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - if (B[i][j][ii][jj]!= - C[i+3][j+3][ii+3][jj+3]+C[i][j-3][ii][jj]+ - C[i+3][j-3][ii][jj]+ C[i][j+3][ii][jj]+ - C[i][j-3][ii+3][jj]+ C[i+3][j+3][ii][jj]+ - C[i][j-3][ii+3][jj+3]+ C[i][j+3][ii][jj+3]+ - C[i+3][j+3][ii+3][jj]+ C[i][j+3][ii+3][jj+3]+ - C[i+3][j-3][ii+3][jj+3]) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4108 */ -void sh4108() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4108"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[0:3][3:3][0:3][0:3] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A[0:0][0:0][0:0][0:3] (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - B[i][j][ii][jj] = A[i][j][ii][jj+3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - if (B[i][j][ii][jj]!=C[i][j][ii][jj+3]) - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4109 */ -void sh4109() -{ - #define N 48 - #define M 48 - #define K 24 - #define L 24 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4109"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array align([i][j][ii][jj] with B[i][j][ii][jj]), shadow[9:9][9:9][2:2][2:2] - int A[N][M][K][L]; - - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A[9:9][9:9][2:2][2:2] (corner)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - B[i][j][ii][jj] = A[i+9][j+9][ii+2][jj+2]+A[i-9][j-9][ii-2][jj-2]+ - A[i+9][j-9][ii-2][jj-2]+A[i-9][j+9][ii-2][jj-2]+ - A[i-9][j-9][ii+2][jj-2]+A[i-9][j-9][ii-2][jj+2]+ - A[i+9][j+9][ii-2][jj-2]+A[i-9][j+9][ii+2][jj-2]+ - A[i-9][j-9][ii+2][jj+2]+A[i+9][j-9][ii-2][jj+2]+ - A[i+9][j-9][ii+2][jj-2]+A[i-9][j+9][ii-2][jj+2]+ - A[i+9][j+9][ii+2][jj-2]+A[i-9][j+9][ii+2][jj+2]+ - A[i+9][j-9][ii+2][jj+2]+A[i+9][j+9][ii-2][jj+2]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 9; i < N - 9; i++) - for (j = 9; j < M - 9; j++) - for (ii = 2; ii < K - 2; ii++) - for (jj = 2; jj < L - 2; jj++) - if (B[i][j][ii][jj]!= - C[i+9][j+9][ii+2][jj+2]+C[i-9][j-9][ii-2][jj-2]+ - C[i+9][j-9][ii-2][jj-2]+C[i-9][j+9][ii-2][jj-2]+ - C[i-9][j-9][ii+2][jj-2]+C[i-9][j-9][ii-2][jj+2]+ - C[i+9][j+9][ii-2][jj-2]+C[i-9][j+9][ii+2][jj-2]+ - C[i-9][j-9][ii+2][jj+2]+C[i+9][j-9][ii-2][jj+2]+ - C[i+9][j-9][ii+2][jj-2]+C[i-9][j+9][ii-2][jj+2]+ - C[i+9][j+9][ii+2][jj-2]+C[i-9][j+9][ii+2][jj+2]+ - C[i+9][j-9][ii+2][jj+2]+C[i+9][j+9][ii-2][jj+2] ) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4110 */ -void sh4110() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4110"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array distribute[block][block][block][block] - int B[N][M][K][L]; - #pragma dvm array shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - #pragma dvm realign(A[i][j][ii][jj] with B[i][j][ii][jj]) - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - B[i][j][ii][jj] = A[i+3][j+3][ii+3][jj+3]+A[i-3][j-3][ii-3][jj-3]+ - A[i+3][j-3][ii-3][jj-3]+A[i-3][j+3][ii-3][jj-3]+ - A[i-3][j-3][ii+3][jj-3]+A[i-3][j-3][ii-3][jj+3]+ - A[i+3][j+3][ii-3][jj-3]+A[i-3][j+3][ii+3][jj-3]+ - A[i-3][j-3][ii+3][jj+3]+A[i+3][j-3][ii-3][jj+3]+ - A[i+3][j-3][ii+3][jj-3]+A[i-3][j+3][ii-3][jj+3]+ - A[i+3][j+3][ii+3][jj-3]+A[i-3][j+3][ii+3][jj+3]+ - A[i+3][j-3][ii+3][jj+3]+A[i+3][j+3][ii-3][jj+3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - if (B[i][j][ii][jj]!= - C[i+3][j+3][ii+3][jj+3]+C[i-3][j-3][ii-3][jj-3]+ - C[i+3][j-3][ii-3][jj-3]+C[i-3][j+3][ii-3][jj-3]+ - C[i-3][j-3][ii+3][jj-3]+C[i-3][j-3][ii-3][jj+3]+ - C[i+3][j+3][ii-3][jj-3]+C[i-3][j+3][ii+3][jj-3]+ - C[i-3][j-3][ii+3][jj+3]+C[i+3][j-3][ii-3][jj+3]+ - C[i+3][j-3][ii+3][jj-3]+C[i-3][j+3][ii-3][jj+3]+ - C[i+3][j+3][ii+3][jj-3]+C[i-3][j+3][ii+3][jj+3]+ - C[i+3][j-3][ii+3][jj+3]+C[i+3][j+3][ii-3][jj+3] ) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} -/* ---------------------------------------------SH4111 */ -void sh4111() -{ - #define N 16 - #define M 16 - #define K 16 - #define L 16 - - int C[N][M][K][L]; - int nloopi, nloopj, nloopii, nloopjj; - char tname[] = "SH4111"; - int i, j, ii, jj, NN, NM, NK, NLL, NNL; - #pragma dvm array - int B[N][M][K][L]; - #pragma dvm array shadow[3:3][3:3][3:3][3:3] - int A[N][M][K][L]; - - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - C[i][j][ii][jj] = NL + i + j + ii + jj; - nloopi = NL; - nloopj = NL; - nloopii = NL; - nloopjj = NL; - - #pragma dvm redistribute(B[block][block][block][block]) - #pragma dvm realign(A[i][j][ii][jj] with B[i][j][ii][jj]) - - #pragma dvm region local(A), out(B) - { - #pragma dvm parallel([i][j][ii][jj] on A[i][j][ii][jj]) - for (i = 0; i < N; i++) - for (j = 0; j < M; j++) - for (ii = 0; ii < K; ii++) - for (jj = 0; jj < L; jj++) - A[i][j][ii][jj] = NL + i + j + ii + jj; - - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) shadow_renew(A (corner)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - B[i][j][ii][jj] = A[i+3][j+3][ii+3][jj+3]+A[i-3][j-3][ii-3][jj-3]+ - A[i+3][j-3][ii-3][jj-3]+A[i-3][j+3][ii-3][jj-3]+ - A[i-3][j-3][ii+3][jj-3]+A[i-3][j-3][ii-3][jj+3]+ - A[i+3][j+3][ii-3][jj-3]+A[i-3][j+3][ii+3][jj-3]+ - A[i-3][j-3][ii+3][jj+3]+A[i+3][j-3][ii-3][jj+3]+ - A[i+3][j-3][ii+3][jj-3]+A[i-3][j+3][ii-3][jj+3]+ - A[i+3][j+3][ii+3][jj-3]+A[i-3][j+3][ii+3][jj+3]+ - A[i+3][j-3][ii+3][jj+3]+A[i+3][j+3][ii-3][jj+3]; - } /*end region*/ - #pragma dvm get_actual(B) - #pragma dvm parallel([i][j][ii][jj] on B[i][j][ii][jj]) reduction(min(nloopi), min(nloopj), min(nloopii), min(nloopjj)) - for (i = 3; i < N - 3; i++) - for (j = 3; j < M - 3; j++) - for (ii = 3; ii < K - 3; ii++) - for (jj = 3; jj < L - 3; jj++) - if (B[i][j][ii][jj]!= - C[i+3][j+3][ii+3][jj+3]+C[i-3][j-3][ii-3][jj-3]+ - C[i+3][j-3][ii-3][jj-3]+C[i-3][j+3][ii-3][jj-3]+ - C[i-3][j-3][ii+3][jj-3]+C[i-3][j-3][ii-3][jj+3]+ - C[i+3][j+3][ii-3][jj-3]+C[i-3][j+3][ii+3][jj-3]+ - C[i-3][j-3][ii+3][jj+3]+C[i+3][j-3][ii-3][jj+3]+ - C[i+3][j-3][ii+3][jj-3]+C[i-3][j+3][ii-3][jj+3]+ - C[i+3][j+3][ii+3][jj-3]+C[i-3][j+3][ii+3][jj+3]+ - C[i+3][j-3][ii+3][jj+3]+C[i+3][j+3][ii-3][jj+3] ) - - { - if (nloopi > i) nloopi = i; - if (nloopj > j) nloopj = j; - if (nloopii > ii) nloopii = ii; - if (nloopjj > jj) nloopjj = jj; - } - - if (nloopi == NL && nloopj == NL && nloopii == NL && nloopjj == NL) - ansyes(tname); - else - ansno(tname); - - #undef N - #undef M - #undef K - #undef L -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ1.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ1.cdv deleted file mode 100644 index c87edef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ1.cdv +++ /dev/null @@ -1,190 +0,0 @@ -/* TEMPL1 -TESTING template CLAUSE */ - -#include -#include -#include - -static void templ111(); -static void templ121(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib, ic, ja, jb, jc, k; - -int main(int an, char **as) -{ - printf("=== START OF TEMPL1 ======================\n"); - /* TEMPLATE A1[BLOCK] ALIGN B1[i] WITH A1[i + 4] - ALIGN C1[i] WITH A1[2*i + 4] */ - templ111(); - /* TEMPLATE A1[BLOCK] ALIGN B1[][i] WITH A1[i] - ALIGN C1[i][] WITH A1[2*i + 1] */ - templ121(); - printf("=== END OF TEMPL1 ========================\n"); - return 0; -} - -/* ---------------------------------------------TEMPL111*/ -/* TEMPLATE A1[BLOCK] ALIGN B1[i] WITH A1[i + 4] - ALIGN C1[i] WITH A1[2*i + 4] */ -void templ111() -{ - #define AN1 14 - #define BN1 8 - #define CN1 4 - int k1i = 1, k2i = 0, li = 4; - int kc1i = 2, kc2i = 0, lci = 4; - char tname[] = "templ111 "; - - #pragma dvm template[AN1] distribute[block] - void *A1; - #pragma dvm array align([i] with A1[k1i * i + li]) - int B1[BN1]; - #pragma dvm array align([i] with A1[kc1i * i + lci]) - int C1[CN1]; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - - #pragma dvm parallel([i] on C1[i]) - for (i = 0; i < CN1; i++) - C1[i] = i; - - #pragma dvm parallel([i] on A1[i]) private(ib, erri, ic) - for (i = 0; i < AN1; i++) - { - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN1)) - { - ib = (i-li)/k1i; - if (B1[ib] != (ib)) - erri = i; - } - if (((i-lci) == (((i-lci)/kc1i) * kc1i)) && - (((i-lci)/kc1i) >= 0) && - (((i-lci)/kc1i) < CN1)) - { - ic = (i-lci)/kc1i; - if (C1[ic] != (ic)) - erri = i; - } - } - - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef BN1 - #undef CN1 -} - -/* ---------------------------------------------TEMPL121*/ -/* TEMPLATE A1[BLOCK] ALIGN B1[][i] WITH A1[i] - ALIGN C1[i][] WITH A1[2*i + 1] */ -void templ121() -{ - int AN1 = 9; - int BN1 = 8; - int BN2 = 8; - int CN1 = 4; - int CN2 = 4; - - int k1i = 1, k2i = 0, li = 0; - int kc1i = 2, kc2i = 0, lci = 1; - - char tname[] = "templ121 "; - - #pragma dvm template[AN1] distribute[block] - void *A1; - #pragma dvm array - int (*B2)[BN2]; - #pragma dvm array - int (*C2)[CN2]; - - B2 = malloc(sizeof(int[BN1][BN2])); - C2 = malloc(sizeof(int[CN1][CN2])); - #pragma dvm realign(B2[][i] with A1[k1i * i + li]) - #pragma dvm realign(C2[i][] with A1[kc1i * i + lci]) - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i][j] on B2[i][j]) - for (i = 0; i < BN1; i++) - for(j = 0; j < BN2; j++) - B2[i][j] = i*NL + j; - - #pragma dvm parallel([i][j] on C2[i][j]) - for (i = 0; i < CN1; i++) - for(j = 0; j < CN2; j++) - C2[i][j] = i*NL + j; - - - #pragma dvm parallel([i] on A1[i]) private(j, ib, jb, erri, jc, ic, k) - for (i = 0; i < AN1; i++) - { - for (j = 0; j < BN1; j++) - { - if (((i-li) == (((i-li)/k1i) * k1i)) && - (((i-li)/k1i) >= 0) && - (((i-li)/k1i) < BN2)) - { - ib = j; - jb = (i-li)/k1i; - if (B2[ib][jb] != ib*NL + jb) - erri = i*NL/10 + j; - } - } - for (k = 0; k < CN2; k++) - { - if (((i-lci) == (((i-lci)/kc1i) * kc1i)) && - (((i-lci)/kc1i) >= 0) && - (((i-lci)/kc1i) < CN1)) - { - jc = k; - ic = (i-lci)/kc1i; - if (C2[ic][jc] != (ic*NL + jc)) - erri = i*NL/10 + j; - } - } - } - } - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(B2); - free(C2); -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ2.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ2.cdv deleted file mode 100644 index c2ca18b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ2.cdv +++ /dev/null @@ -1,198 +0,0 @@ -/* TEMPL2 -TESTING template CLAUSE */ - -#include -#include -#include - -static void templ211(); -static void templ221(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib, ic, ja, jb, jc, k; - -int main(int an, char **as) -{ - printf("=== START OF TEMPL2 ======================\n"); - /* TEMPLATE A2[BLOCK][BLOCK] ALIGN B1[i] WITH A2[1][i] - ALIGN C2[i][j] WITH A2[2*i+2][j] */ - templ211(); - /* TEMPLATE A2[BLOCK][BLOCK] ALIGN B1[i][j] WITH A2[i+4][j+4] - ALIGN C2[i][j] WITH A2[i+1][j+1] */ - templ221(); - printf("=== END OF TEMPL2 ========================\n"); - return 0; -} - -/* ---------------------------------------------TEMPL211*/ -/* TEMPLATE A2[BLOCK][BLOCK] ALIGN B1[i] WITH A2[1][i] - ALIGN C2[i][j] WITH A2[2*i+2][j] */ -void templ211() -{ - #define AN1 14 - #define AN2 14 - #define BN1 8 - #define CN1 4 - #define CN2 4 - - int k1i = 0, k2i = 0, li = 1, k1j = 1, k2j = 0, lj = 0; - int kc1i = 2, kc2i = 0, lci = 2, kc1j = 0, kc2j = 1, lcj = 0; - char tname[] = "templ211 "; - - #pragma dvm template[AN1][AN2] distribute[block][block] - void *A2; - #pragma dvm array align([i] with A2[1][i]) - int B1[BN1]; - #pragma dvm array align([i][j] with A2[kc1i * i + lci][kc2j * j + lcj]) - int C2[CN1][CN1]; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([i] on B1[i]) - for (i = 0; i < BN1; i++) - B1[i] = i; - - #pragma dvm parallel([j][i] on C2[i][j]) - for (j = 0; j < CN2; j++) - for (i = 0; i < CN1; i++) - C2[i][j] = (i*NL+j); - - #pragma dvm parallel([j][i] on A2[j][i]) private(ib, erri, ic, jc) - for (j = 0; j < AN2; j++) - for (i = 0; i < AN1; i++) - { - if (i == 0) - { - if (j < BN1) - { - ib = j; - if (B1[ib] != (ib)) - erri = i; - } - } - if (((i-lci) == (((i-lci)/kc1i) * kc1i)) && - ((j-lcj) == (((j-lcj)/kc2j) * kc2j)) && - (((i-lci)/kc1i) >= 0) && - (((j-lcj)/kc2j) >= 0) && - (((i-lci)/kc1i) < CN1) && - (((j-lcj)/kc2j) < CN2)) - { - ic = (i-lci)/kc1i; - jc = (j-lcj)/kc2j; - if (C2[ic][jc] != (ic*NL+jc)) - erri = i; - } - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef BN1 - #undef CN1 - #undef CN2 -} - -/* ---------------------------------------------TEMPL221*/ -/* TEMPLATE A2[BLOCK][BLOCK] ALIGN B1[i][j] WITH A2[i+4][j+4] - ALIGN C2[i][j] WITH A2[i+1][j+1] */ -void templ221() -{ - int AN1 = 14, AN2 = 14, CN1 = 4, CN2 = 4, BN1 = 8, BN2 = 8; - - int k1i = 1, k2i = 0, li = 4, k1j = 0, k2j = 1, lj = 4; - int kc1i = 1, kc2i = 0, lci = 1, kc1j = 0, kc2j = 1, lcj = 1; - - char tname[] = "templ221 "; - - #pragma dvm template[AN1][AN2] distribute[block][block] - void *A2; - #pragma dvm array - int (*B2)[BN2]; - #pragma dvm array - int (*C2)[CN2]; - - B2 = malloc(sizeof(int[BN1][BN2])); - C2 = malloc(sizeof(int[CN1][CN2])); - #pragma dvm realign(B2[i][j] with A2[k1i * i + li][k2j * j + lj]) - #pragma dvm realign(C2[i][j] with A2[kc1i * i + lci][kc2j * j + lcj]) - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([j][i] on B2[i][j]) - for (j = 0; j < BN2; j++) - for (i = 0; i < BN1; i++) - B2[i][j] = i*NL + j; - - #pragma dvm parallel([j][i] on C2[i][j]) - for (j = 0; j < CN2; j++) - for (i = 0; i < CN1; i++) - C2[i][j] = i*NL + j; - - - #pragma dvm parallel([j][i] on A2[i][j]) private(ib, ic, erri, jb, jc) - for (j = 0; j < AN2; j++) - for (i = 0; i < AN1; i++) - { - if (((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) * k2j)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2)) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - if (B2[ib][jb] != (ib*NL + jb)) - erri = i; - } - if (((i-lci) == (((i-lci)/kc1i) * kc1i)) && - ((j-lcj) == (((j-lcj)/kc2j) * kc2j)) && - (((i-lci)/kc1i) >= 0) && - (((j-lcj)/kc2j) >= 0) && - (((i-lci)/kc1i) < CN1) && - (((j-lcj)/kc2j) < CN2)) - { - ic = (i-lci)/kc1i; - jc = (j-lcj)/kc2j; - if (C2[ic][jc] != (ic*NL+jc)) - erri = i; - } - } - } - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(B2); - free(C2); -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ4.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ4.cdv deleted file mode 100644 index d8afac8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/C/TEMPLATE/templ4.cdv +++ /dev/null @@ -1,265 +0,0 @@ -/* TEMPL4 -TESTING template CLAUSE */ - -#include -#include -#include - -static void templ441(); -static void templ442(); - -static void ansyes(const char tname[]); -static void ansno(const char tname[]); - -static int NL = 1000; -static int ER = 10000; -static int erri, i, j, ia, ib, ic, ja, jb, jc, k, m, n, mb, nb, mc, nc; - -int main(int an, char **as) -{ - printf("=== START OF TEMPL4 ======================\n"); - /* TEMPLATE A4[BLOCK][BLOCK][BLOCK][BLOCK] - ALIGN B4[i][j][k][l] WITH A4[i+2][j][k][l+3] - ALIGN C2[i][j] WITH A4[i+2][2][3][l+3] */ - templ441(); - /* TEMPLATE A4[BLOCK][BLOCK][BLOCK][BLOCK] - ALIGN B4[i][j][k][l] WITH A4[l][i][j][k] - ALIGN C4[i][j][k][l] WITH A4[i+2][j][k][l+3] */ - templ442(); - printf("=== END OF TEMPL4 ========================\n"); - return 0; -} - -/* ---------------------------------------------TEMPL441*/ -/* TEMPLATE A4[BLOCK][BLOCK][BLOCK][BLOCK] - ALIGN B4[i][j][k][l] WITH A4[i+2][j][k][l+3] - ALIGN C2[i][j] WITH A4[i+2][2][3][l+3] */ -void templ441() -{ - #define AN1 7 - #define AN2 7 - #define AN3 7 - #define AN4 7 - #define BN1 2 - #define BN2 2 - #define BN3 2 - #define BN4 2 - #define CN1 4 - #define CN2 4 - - int k1i = 1, k2i = 0, k3i = 0, k4i = 0, li = 2; - int k1j = 0, k2j = 1, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 0, k3n = 1, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 0, k4m = 1, lm = 3; - int kc1i = 1, kc2i = 0, kc3i = 0, kc4i = 0, lci = 2; - int kc1j = 0, kc2j = 0, kc3j = 0, kc4j = 0, lcj = 2; - int kc1n = 0, kc2n = 0, kc3n = 0, kc4n = 0, lcn = 3; - int kc1m = 0, kc2m = 1, kc3m = 0, kc4m = 0, lcm = 3; - char tname[] = "templ441 "; - - #pragma dvm template[AN1][AN2][AN3][AN4] distribute[block][block][block][block] - void *A4; - #pragma dvm array align([i][j][n][m] with A4[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm]) - int B4[BN1][BN2][BN3][BN4]; - #pragma dvm array align([i][j] with A4[kc1i*i+lci][lcj][lcn][kc2m*j+lcm]) - int C2[CN1][CN2]; - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([m][n][j][i] on B4[i][j][n][m]) - for (m = 0; m < BN4; m++) - for (n = 0; n < BN3; n++) - for (j = 0; j < BN2; j++) - for (i = 0; i < BN1; i++) - B4[i][j][n][m] = (i*NL/10+j*NL/100+n*NL/1000+m); - - #pragma dvm parallel([j][i] on C2[i][j]) - for (j = 0; j < CN2; j++) - for (i = 0; i < CN1; i++) - C2[i][j] = (i*NL+j); - - #pragma dvm parallel([m][n][j][i] on A4[i][j][n][m]) private(ib, jb, nb, mb, ic, jc, erri) - for (m = 0; m < AN4; m++) - for (n = 0; n < AN3; n++) - for (j = 0; j < AN2; j++) - for (i = 0; i < AN1; i++) - { - if (((i-li) == (((i-li)/k1i) * k1i)) && - ((j-lj) == (((j-lj)/k2j) *k2j)) && - ((n-ln) == (((n-ln)/k3n) * k3n)) && - ((m-lm) == (((m-lm)/k4m) *k4m)) && - (((i-li)/k1i) >= 0) && - (((j-lj)/k2j) >= 0) && - (((n-ln)/k3n) >= 0) && - (((m-lm)/k4m) >= 0) && - (((i-li)/k1i) < BN1) && - (((j-lj)/k2j) < BN2) && - (((n-ln)/k3n) < BN3) && - (((m-lm)/k4m) < BN4)) - { - ib = (i-li)/k1i; - jb = (j-lj)/k2j; - nb = (n-ln)/k3n; - mb = (m-lm)/k4m; - if (B4[ib][jb][nb][mb] != (ib*NL/10+jb*NL/100+nb*NL/1000+mb)) - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m; - } - if ((j == lcj) && (n == lcn) && - ((i-lci) == (((i-lci)/kc1i) * kc1i)) && - ((m-lcm) == (((m-lcm)/kc2m) *kc2m)) && - (((i-lci)/kc1i) >= 0) && - (((m-lcm)/kc2m) >= 0) && - (((i-lci)/kc1i) < CN1) && - (((m-lcm)/kc2m) < CN2)) - { - ic = (i-lci)/kc1i; - jc = (m-lcm)/kc2m; - if (C2[ic][jc] != (ic*NL+jc)) - erri = i; - } - } - } - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - #undef AN1 - #undef AN2 - #undef AN3 - #undef AN4 - #undef BN1 - #undef BN2 - #undef BN3 - #undef BN4 - #undef CN1 - #undef CN2 -} - -/* ---------------------------------------------TEMPL442*/ -/* TEMPLATE A4[BLOCK][BLOCK][BLOCK][BLOCK] - ALIGN B4[i][j][k][l] WITH A4[l][i][j][k] - ALIGN C4[i][j][k][l] WITH A4[i+2][j][k][l+3] */ -void templ442() -{ - int AN1 = 7, AN2 = 7, AN3 = 7, AN4 = 7; - int BN1 = 2, BN2 = 2, BN3 = 2, BN4 = 2; - int CN1 = 4, CN2 = 4, CN3 = 4, CN4 = 4; - - int k1i = 0, k2i = 0, k3i = 0, k4i = 1, li = 0; - int k1j = 1, k2j = 0, k3j = 0, k4j = 0, lj = 0; - int k1n = 0, k2n = 1, k3n = 0, k4n = 0, ln = 0; - int k1m = 0, k2m = 0, k3m = 1, k4m = 0, lm = 0; - int kc1i = 1, kc2i = 0, kc3i = 0, kc4i = 0, lci = 2; - int kc1j = 0, kc2j = 1, kc3j = 0, kc4j = 0, lcj = 0; - int kc1n = 0, kc2n = 0, kc3n = 1, kc4n = 0, lcn = 0; - int kc1m = 0, kc2m = 0, kc3m = 0, kc4m = 1, lcm = 3; - - char tname[] = "templ442 "; - - #pragma dvm template[AN1][AN2][AN3][AN4] distribute[block][block][block][block] - void *A4; - #pragma dvm array - int (*B4)[BN2][BN3][BN4]; - #pragma dvm array - int (*C4)[CN2][CN3][CN4]; - - B4 = malloc(sizeof(int[BN1][BN2][BN3][BN4])); - C4 = malloc(sizeof(int[CN1][CN2][CN3][CN4])); - #pragma dvm realign(B4[i][j][n][m] with A4[k4i*m+li][k1j*i+lj][k2n*j+ln][k3m*n+lm]) - #pragma dvm realign(C4[i][j][n][m] with A4[kc1i*i+lci][kc2j*j+lcj][ kc3n*n+lcn][kc4m*m+lcm]) - - erri = ER; - #pragma dvm actual(erri) - - #pragma dvm region - { - #pragma dvm parallel([m][n][j][i] on B4[i][j][n][m]) - for (m = 0; m < BN4; m++) - for (n = 0; n < BN3; n++) - for (j = 0; j < BN2; j++) - for (i = 0; i < BN1; i++) - B4[i][j][n][m] = (i*NL/10+j*NL/100+n*NL/1000+m); - - #pragma dvm parallel([m][n][j][i] on C4[i][j][n][m]) - for (m = 0; m < CN4; m++) - for (n = 0; n < CN3; n++) - for (j = 0; j < CN2; j++) - for (i = 0; i < CN1; i++) - C4[i][j][n][m] = (i*NL/10+j*NL/100+n*NL/1000+m); - - #pragma dvm parallel([m][n][j][i] on A4[i][j][n][m]) private(ib, jb, nb, mb, ic, jc, nc, mc, erri) - for (m = 0; m < AN4; m++) - for (n = 0; n < AN3; n++) - for (j = 0; j < AN2; j++) - for (i = 0; i < AN1; i++) - { - if (((i-li) == (((i-li)/k4i) * k4i)) && - ((j-lj) == (((j-lj)/k1j) *k1j)) && - ((n-ln) == (((n-ln)/k2n) * k2n)) && - ((m-lm) == (((m-lm)/k3m) *k3m)) && - (((i-li)/k4i) >= 0) && - (((j-lj)/k1j) >= 0) && - (((n-ln)/k2n) >= 0) && - (((m-lm)/k3m) >= 0) && - (((i-li)/k4i) < BN4) && - (((j-lj)/k1j) < BN1) && - (((n-ln)/k2n) < BN2) && - (((m-lm)/k3m) < BN3)) - { - mb = (i-li)/k4i; - ib = (j-lj)/k1j; - jb = (n-ln)/k2n; - nb = (m-lm)/k3m; - if (B4[ib][jb][nb][mb] != (ib*NL/10+jb*NL/100+nb*NL/1000+mb)) - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m; - } - if ( - ((i-lci) == (((i-lci)/kc1i) * kc1i)) && - ((j-lcj) == (((j-lcj)/kc2j) * kc2j)) && - ((n-lcn) == (((n-lcn)/kc3n) * kc3n)) && - ((m-lcm) == (((m-lcm)/kc4m) *kc4m)) && - (((i-lci)/kc1i) >= 0) && - (((j-lcj)/kc2j) >= 0) && - (((n-lcn)/kc3n) >= 0) && - (((m-lcm)/kc2m) >= 0) && - (((i-lci)/kc1i) < CN1) && - (((j-lcj)/kc2j) < CN2) && - (((n-lcn)/kc3n) < CN3) && - (((m-lcm)/kc2m) < CN2)) - { - ic = (i-lci)/kc1i; - jc = (j-lcj)/kc2j; - nc = (n-lcn)/kc3n; - mc = (m-lcm)/kc4m; - if (C4[ic][jc][nc][mc] != (ic*NL/10+jc*NL/100+nc*NL/1000+mc)) - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m; - } - } - } - - #pragma dvm get_actual(erri) - - if (erri == ER) - ansyes(tname); - else - ansno(tname); - - free(B4); - free(C4); -} - -void ansyes(const char name[]) -{ - printf("%s - complete\n", name); -} - -void ansno(const char name[]) -{ - printf("%s - ***error\n", name); -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr11.fdv deleted file mode 100644 index a9124cb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr11.fdv +++ /dev/null @@ -1,591 +0,0 @@ - program ACR11 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR11========================' -C -------------------------------------------------- - call acr1101 -C -------------------------------------------------- - call acr1102 -C -------------------------------------------------- - call acr1103 -C ------------------------------------------------- - call acr1104 -C ------------------------------------------------- - call acr1105 -C ------------------------------------------------- - call acr1106 -C -------------------------------------------------- - call acr1107 -C -------------------------------------------------- - call acr1108 -C -------------------------------------------------- - call acr1109 -C ------------------------------------------------- - call acr1110 -C ------------------------------------------------- - -C - print *,'=== END OF ACR11 ========================= ' - end -C ---------------------------------------------ACR1101 - subroutine ACR1101 - integer,parameter :: N = 8, NL=1000 - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop -!dvm$ distribute A(BLOCK) - - tname='ACR1101' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - - do i=2,N-1 - C(i) = C(i-1)+C(i+1) - enddo -!dvm$ actual (nloop, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(1:1)),stage(iloop) - do i=2,N-1 - A(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ---------------------------------------------ACR1102 - subroutine ACR1102 - integer,parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:),C(:) - integer nloop - -!dvm$ distribute A(BLOCK) - - tname='ACR1102' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=1,N-1 - C(i) = C(i)+C(i+1) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(0:1)),stage(iloop) - do i=1,N-1 - A(i) = A(i)+A(i+1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -----------------------------------------ACR1103 - subroutine acr1103 - integer,parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) - - tname='ACR1103' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N - C(i) = C(i)+ C(i-1) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on A(i),across(A(1:0)),stage(iloop) - do i=2,N - A(i) =A(i)+ A(i-1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - - - - -C -------------------------------------------ACR1104 - - subroutine ACR1104 - integer,parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(2:2) - - tname='ACR1104' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=3,N-2 - C(i) = C(i-1)+C(i+1)+C(i+2)+C(i-2) - enddo -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(2:2)),stage(iloop) - do i=3,N-2 - A(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=3,N-2 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1105 - - subroutine ACR1105 - integer,parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:),C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(2:2) - - tname='ACR1105' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N-2 - C(i) = C(i+1)+C(i+2) - enddo -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(0:2)),stage(iloop) - do i=2,N-2 - A(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-2 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -------------------------------------------ACR1106 - - subroutine ACR1106 - integer,parameter :: N = 16, NL=1000 - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(2:2) - - tname='ACR1106' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=3,N - C(i) = C(i-1)+C(i-2) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on A(i),across(A(2:0)),stage(iloop) - do i=3,N - A(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=3,N - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C -------------------------------------------ACR1107 - - subroutine acr1107 - integer,parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(3:3) - - tname='ACR1107' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=4,N-3 - C(i) = C(i-1)+C(i+1)+C(i+2)+C(i-2)+C(i-3)+C(i+3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(3:3)),stage(iloop) - do i=4,N-3 - A(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2)+A(i-3)+A(i+3) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=4,N-3 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1108 - - subroutine acr1108 - integer,parameter :: N = 24, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(3:3) - - tname='ACR1108' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N-3 - C(i) = C(i+1)+C(i+2)+C(i+3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on A(i),across(A(0:3)),stage(iloop) - do i=2,N-3 - A(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-3 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1109 - - subroutine acr1109 - integer,parameter :: N = 24, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(3:3) - - tname='ACR1109' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - - do i=4,N - C(i) = C(i-1)+C(i-2)+C(i-3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(3:0)),stage(iloop) - do i=4,N - A(i) = A(i-1)+A(i-2)+A(i-3) - - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=4,N - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C --------------------------------------------acr1110 - - subroutine acr1110 - integer,parameter :: N = 60, NL=1000 - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(BLOCK) -!dvm$ shadow A(11:11) - - tname='ACR1110' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=12,N-11 - C(i) = C(i-9)+C(i+9)+C(i+10)+C(i-10)+C(i-11)+C(i+11) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on A(i),across(A(11:11)),stage(iloop) - do i=12,N-11 - A(i) = A(i-9)+A(i+9)+A(i+10)+A(i-10)+A(i-11)+A(i+11) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=12,N-11 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer:: AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr12.fdv deleted file mode 100644 index 1b9949f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr12.fdv +++ /dev/null @@ -1,587 +0,0 @@ - program ACR12 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR12========================' -C -------------------------------------------------- - call acr1201 -C -------------------------------------------------- - call acr1202 -C -------------------------------------------------- - call acr1203 -C ------------------------------------------------- - call acr1204 -C ------------------------------------------------- - call acr1205 -C ------------------------------------------------- - call acr1206 -C -------------------------------------------------- - call acr1207 -C -------------------------------------------------- - call acr1208 -C -------------------------------------------------- - call acr1209 -C ------------------------------------------------- - call acr1210 -C ------------------------------------------------- - -C - print *,'=== END OF ACR12 ========================= ' - end -C ---------------------------------------------ACR1201 - subroutine acr1201 - - integer, parameter :: N = 8, NL=1000 - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) - - tname='ACR1201' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - - do i=2,N-1 - C(i) = C(i-1)+C(i+1) - enddo -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on A(i),across(A(1:1)),stage(iloop) - do i=2,N-1 - A(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ---------------------------------------------ACR1202 - subroutine acr1202 - integer, parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) - - tname='ACR1202' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=1,N-1 - C(i) = C(i)+C(i+1) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(0:1)),stage(iloop) - do i=1,N-1 - A(i) = A(i)+A(i+1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -----------------------------------------ACR1203 - subroutine acr1203 - integer, parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) - - tname='ACR1203' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N - C(i) =C(i)+ C(i-1) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(1:0)),stage(iloop) - do i=2,N - A(i) =A(i)+ A(i-1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-1 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -------------------------------------------ACR1204 - - subroutine acr1204 - integer, parameter :: N = 16, NL=1000 - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(2:2) - - tname='ACR1204' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=3,N-2 - C(i) = C(i-1)+C(i+1)+C(i+2)+C(i-2) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(2:2)),stage(iloop) - do i=3,N-2 - A(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=3,N-2 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1205 - - subroutine acr1205 - integer, parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:),C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(2:2) - - tname='ACR1205' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N-2 - C(i) = C(i+1)+C(i+2) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(0:2)),stage(iloop) - do i=2,N-2 - A(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-2 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -------------------------------------------ACR1206 - - subroutine acr1206 - integer, parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop -!dvm$ distribute A(*) -!dvm$ shadow A(2:2) - - tname='ACR1206' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=3,N - C(i) = C(i-1)+C(i-2) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(2:0)),stage(iloop) - do i=3,N - A(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=3,N - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C -------------------------------------------ACR1207 - - subroutine acr1207 - integer, parameter :: N = 16, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(3:3) - - tname='ACR1207' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=4,N-3 - C(i) = C(i-1)+C(i+1)+C(i+2)+C(i-2)+C(i-3)+C(i+3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(3:3)),stage(iloop) - do i=4,N-3 - A(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2)+A(i-3)+A(i+3) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=4,N-3 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1208 - - subroutine acr1208 - integer, parameter :: N = 24, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(3:3) - - tname='ACR1208' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=2,N-3 - C(i) = C(i+1)+C(i+2)+C(i+3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(0:3)),stage(iloop) - do i=2,N-3 - A(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=2,N-3 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR1209 - - subroutine acr1209 - integer, parameter :: N = 24, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(3:3) - - tname='ACR1209' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - - do i=4,N - C(i) = C(i-1)+C(i-2)+C(i-3) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(3:0)),stage(iloop) - do i=4,N - A(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=4,N - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C --------------------------------------------ACR1210 - - subroutine acr1210 - integer, parameter :: N = 50, NL=1000 - - character*7 tname - integer,allocatable:: A(:), C(:) - integer nloop - -!dvm$ distribute A(*) -!dvm$ shadow A(11:11) - - tname='ACR1210' - allocate (A(N), C(N)) - nloop=NL - - do iloop=0,2 - NNL=NL - call serial1(C,N,NNL) - do i=12,N-11 - C(i) = C(i-9)+C(i+9)+C(i+10)+C(i-10)+C(i-11)+C(i+11) - enddo - -!dvm$ actual (nloop, C) -!dvm$ region - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on A(i),across(A(11:11)),stage(iloop) - do i=12,N-11 - A(i) = A(i-9)+A(i+9)+A(i+10)+A(i-10)+A(i-11)+A(i+11) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=12,N-11 - if (A(i).ne. C(i)) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual (nloop) - enddo - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr21.fdv deleted file mode 100644 index b243e99..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr21.fdv +++ /dev/null @@ -1,977 +0,0 @@ - program ACR21 - -c TESTING OF THE ACROSS CLAUSE. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR21========================' -C -------------------------------------------------- - call acr2101 -C -------------------------------------------------- - call acr2102 -C -------------------------------------------------- - call acr2103 -C ------------------------------------------------- - call acr2104 -C ------------------------------------------------- - call acr2105 -C ------------------------------------------------- - call acr2106 -C -------------------------------------------------- - call acr2107 -C -------------------------------------------------- - call acr2108 -C -------------------------------------------------- - call acr2109 -C ------------------------------------------------- - call acr2110 -C ------------------------------------------------- - call acr2111 -C ------------------------------------------------- - call acr2112 -C ------------------------------------------------- - call acr2113 -C ------------------------------------------------- - call acr2114 -C ------------------------------------------------- - call acr2115 -C ------------------------------------------------- - print *,'=== END OF ACR21 ========================= ' - end -C ---------------------------------------------ACR2101 - subroutine ACR2101 - - integer,parameter :: N = 16, M=16, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='ACR2101' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(1:1,1:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi,nloopj) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ---------------------------------------------ACR2102 - subroutine ACR2102 - integer,parameter :: N = 16,M=16, NL=1000 - - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='ACR2102' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual(nloopi,nloopj) -!dvm$ region -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:0)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -----------------------------------------ACR2103 - subroutine acr2103 - integer,parameter :: N = 16,M=16, NL=1000 - - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) - - tname='ACR2103' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i-1,j)+C(i,j+1) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C(:,:)) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(1:0,0:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C ------------------------------------------ACR2104 - subroutine acr2104 - integer,parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow A(1:1,0:1) - tname='ACR2104' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j)+C(i,j+1) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C ------------------------------------------ACR2105 - subroutine acr2105 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow A(0:1,1:1) - - tname='ACR2105' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i,j-1)+C(i+1,j) - enddo - enddo -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,1:0)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i,j-1)+A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -------------------------------------------ACR2106 - - subroutine acr2106 - integer,parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A - - tname='ACR2106' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i-2,j)+C(i,j-2) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,2:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i-2,j)+A(i,j-2) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2107 - - subroutine acr2107 - - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A - - tname='ACR2107' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i+2,j)+C(i,j+2)+C(i,j-2) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:2,2:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) =A(i+2,j)+A(i,j+2)+A(i,j-2) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2108 - - subroutine acr2108 - integer,parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A - - tname='ACR2108' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i-1,j)+C(i,j-1)+C(i-2,j)+C(i+2,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,2:0)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i-1,j)+A(i,j-1)+A(i-2,j)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2109 - - subroutine acr2109 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(2:2,0:2) :: A - - tname='ACR2109' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j+2)+ C(i+1,j)+C(i+2,j) - enddo - enddo - - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,0:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j+2)+ A(i+1,j)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C -------------------------------------------ACR2110 - - subroutine acr2110 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3) :: A - - tname='ACR2110' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i+1,j)+C(i,j+2)+C(i+3,j)+C(i,j-3)+ - * C(i-2,j)+C(i,j-1) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:3,3:3)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i+1,j)+A(i,j+2)+A(i+3,j)+A(i,j-3)+ - * A(i-2,j)+A(i,j-1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=4,M-3 - do i=4,N-3 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C -------------------------------------------ACR2111 - - subroutine ACR2111 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3) :: A - - tname='ACR2111' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j)+C(i,j+1) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:0,0:1)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C --------------------------------------------ACR2112 - - subroutine acr2112 - integer,parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3) :: A - - tname='ACR2112' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j)+C(i+1,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:0)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j)+A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2113 - - subroutine acr2113 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:0) :: A - - tname='ACR2113' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i,j-3)+C(i+3,j)+C(i-3,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:3,3:0)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i,j-3)+A(i+3,j)+A(i-3,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=4,M-3 - do i=4,N-3 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2114 - - subroutine acr2114 - integer,parameter :: N = 16,M=16, NL=1000 - integer,allocatable:: A(:,:), C(:,:) - character*7 tname - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(3:0,3:3) :: A - - tname='ACR2114' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i-3,j)+C(i,j+3) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:0,3:3)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i-3,j)+A(i,j+3) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=4,M-3 - do i=4,N-3 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2115 - - subroutine acr2115 - integer,parameter :: N = 59,M=59, NL=1000 - character*7 tname - integer,allocatable:: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11) :: A - - tname='ACR2115' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=12,N-11 - do j=12,M-11 - C(i,j) =C(i+11,j)+C(i,j+10)+C(i+9,j)+ - *C(i,j-11)+C(i-10,j)+C(i,j-9) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj) -!dvm$ region - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(11:11,11:11)),stage(iloop) - do j=12,M-11 - do i=12,N-11 - A(i,j) = A(i+11,j)+A(i,j+10)+A(i+9,j)+ - *A(i,j-11)+A(i-10,j)+A(i,j-9) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=12,M-11 - do i=12,N-11 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr22.fdv deleted file mode 100644 index 8c0a6d6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr22.fdv +++ /dev/null @@ -1,995 +0,0 @@ - program ACR22 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR22========================' -C -------------------------------------------------- - call acr2201 -C -------------------------------------------------- - call acr2202 -C -------------------------------------------------- - call acr2203 -C ------------------------------------------------- - call acr2204 -C ------------------------------------------------- - call acr2205 -C ------------------------------------------------- - call acr2206 -C -------------------------------------------------- - call acr2207 -C -------------------------------------------------- - call acr2208 -C -------------------------------------------------- - call acr2209 -C ------------------------------------------------- - call acr2210 -C ------------------------------------------------- - call acr2211 -C ------------------------------------------------- - call acr2212 -C ------------------------------------------------- - call acr2213 -C ------------------------------------------------- - call acr2214 -C ------------------------------------------------- - call acr2215 -C ------------------------------------------------- - print *,'=== END OF ACR22 ========================= ' - end -C ---------------------------------------------ACR2201 - subroutine ACR2201 - - integer, parameter :: N = 16,M=16, NL=1000 - - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj - -!dvm$ distribute A(*,BLOCK) - tname='ACR2201' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1) - enddo - enddo - -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(1:1,1:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ---------------------------------------------ACR2202 - subroutine ACR2202 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) - tname='ACR2202' - - do iloop=0,2 - allocate (A(N,M), C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:0)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - deallocate (A, C) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C -----------------------------------------ACR2203 - subroutine acr2203 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) - tname='ACR2203' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i-1,j)+C(i,j+1) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(1:0,0:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi,nloopj) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C ------------------------------------------ACR2204 - subroutine acr2204 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow A(1:1,0:1) - tname='ACR2204' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i+1,j)+C(i,j+1) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region in (C) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:1)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i+1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C ------------------------------------------ACR2205 - subroutine acr2205 - - integer, parameter :: N = 16,M=16, NL=1000 - - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow A(0:1,1:1) - - tname='ACR2205' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - do i=2,N-1 - do j=2,M-1 - C(i,j) = C(i,j-1)+C(i+1,j) - enddo - enddo -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,1:0)),stage(iloop) - do j=2,M-1 - do i=2,N-1 - A(i,j) = A(i,j-1)+A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=2,M-1 - do i=2,N-1 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end - -C -------------------------------------------ACR2206 - - subroutine acr2206 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow(2:2,2:2) :: A - tname='ACR2206' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i-2,j)+C(i,j-2) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,2:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i-2,j)+A(i,j-2) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2207 - - subroutine acr2207 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow(2:2,2:2) :: A - tname='ACR2207' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i+2,j)+C(i,j+2)+C(i,j-2) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi) -!dvm$ region - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:2,2:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) =A(i+2,j)+A(i,j+2)+A(i,j-2) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2208 - - subroutine acr2208 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow(2:2,2:2) :: A - tname='ACR2208' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i-1,j)+C(i,j-1)+C(i-2,j)+C(i+2,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,2:0)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i-1,j)+A(i,j-1)+A(i-2,j)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C -------------------------------------------ACR2209 - - subroutine acr2209 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow(2:2,0:2) :: A - - tname='ACR2209' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j+2)+ C(i+1,j)+C(i+2,j) - enddo - enddo - nloopi=NL - nloopj=NL -!dvm$ actual (nloopi) -!dvm$ region inout (C) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(2:2,0:2)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j+2)+ A(i+1,j)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2210 - - subroutine acr2210 - integer, parameter :: N = 16,M=16, NL=1000 - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow(3:3,3:3) :: A - - tname='ACR2210' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i+1,j)+C(i,j+2)+C(i+3,j)+C(i,j-3)+ - * C(i-2,j)+C(i,j-1) - enddo - enddo - nloopi=NL - nloopj=NL - -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:3,3:3)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i+1,j)+A(i,j+2)+A(i+3,j)+A(i,j-3)+ - * A(i-2,j)+A(i,j-1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j = 4,M-3 - do i= 4,N-3 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C -------------------------------------------ACR2211 - - subroutine ACR2211 - integer, parameter :: N = 16,M=16, NL=1000 - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow(3:3,0:3) :: A - - tname='ACR2211' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j)+C(i,j+1) - enddo - enddo - nloopi=NL - nloopj=NL - -!dvm$ actual (nloopi) -!dvm$ region - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:0,0:1)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2212 - - subroutine acr2212 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow(0:3,3:3) :: A - - tname='ACR2212' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=3,N-2 - do j=3,M-2 - C(i,j) =C(i,j)+C(i+1,j) - enddo - enddo - nloopi=NL - nloopj=NL - -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(0:1,0:0)),stage(iloop) - do j=3,M-2 - do i=3,N-2 - A(i,j) = A(i,j)+A(i+1,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=3,M-2 - do i=3,N-2 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2213 - - subroutine acr2213 - integer, parameter :: N = 16,M=16, NL=1000 - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow(3:3,3:0) :: A - - tname='ACR2213' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i,j-3)+C(i+3,j)+C(i-3,j) - enddo - enddo - nloopi=NL - nloopj=NL - -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:3,3:0)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i,j-3)+A(i+3,j)+A(i-3,j) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=4,M-3 - do i=4,N-3 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2214 - - subroutine acr2214 - integer, parameter :: N = 16,M=16, NL=1000 - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(BLOCK,*) -!dvm$ shadow(3:0,3:3) :: A - - tname='ACR2214' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=4,N-3 - do j=4,M-3 - C(i,j) =C(i-3,j)+C(i,j+3) - enddo - enddo - nloopi=NL - nloopj=NL - - -!dvm$ actual (nloopi,nloopj) -!dvm$ region - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(3:0,3:3)),stage(iloop) - do j=4,M-3 - do i=4,N-3 - A(i,j) = A(i-3,j)+A(i,j+3) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=4,M-3 - do i=4,N-3 - if (A(i,j).ne.c(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C --------------------------------------------ACR2215 - - subroutine acr2215 - integer, parameter :: N = 58,M=58, NL=1000 - - character*7 tname - integer, allocatable :: A(:,:), C(:,:) - integer nloopi,nloopj -!dvm$ distribute A(*,BLOCK) -!dvm$ shadow(11:11,11:11) :: A - tname='ACR2215' - allocate (A(N,M), C(N,M)) - - do iloop=0,2 - NNL=NL - call serial2(C,N,M,NNL) - do i=12,N-11 - do j=12,M-11 - C(i,j) =C(i+11,j)+C(i,j+10)+C(i+9,j)+ - *C(i,j-11)+C(i-10,j)+C(i,j-9) - enddo - enddo - nloopi=NL - nloopj=NL - -!dvm$ actual (nloopi,nloopj,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (j,i) on A(i,j) - do j=1,M - do i=1,N - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j),across(A(11:11,11:11)),stage(iloop) - do j=12,M-11 - do i=12,N-11 - A(i,j) = A(i+11,j)+A(i,j+10)+A(i+9,j)+ - *A(i,j-11)+A(i-10,j)+A(i,j-9) - enddo - enddo - -!dvm$ parallel (j,i) on A(i,j), reduction( min( nloopi),min(nloopj)) - do j=12,M-11 - do i=12,N-11 - if (A(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr31.fdv deleted file mode 100644 index 33185ef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr31.fdv +++ /dev/null @@ -1,781 +0,0 @@ - program ACR31 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR31========================' -C -------------------------------------------------- - call acr3101 -C -------------------------------------------------- - call acr3102 -C -------------------------------------------------- - call acr3103 -C ------------------------------------------------- - call acr3104 -C ------------------------------------------------- - call acr3105 -C ------------------------------------------------- - call acr3106 -C -------------------------------------------------- - call acr3107 -C -------------------------------------------------- - call acr3108 -C---------------------------------------------------- - call acr3109 -C---------------------------------------------------- - -C -C - print *,'=== END OF ACR31 ========================= ' - end -C ---------------------------------------------ACR3101 - subroutine acr3101 - - integer, parameter :: N = 16,M=8,K=8, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - tname='ACR3101' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - C(i,j,ii) = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ parallel (ii,j,i) on A(i,j,ii),across(A(1:1,1:1,1:1)), -!dvm$*stage(iloop) - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - A(i,j,ii) = A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3102 - subroutine acr3102 - - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3102' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii)=C(i+2,j,ii) +C(i,j-2,ii) + - * C(i,j,ii-1) +C(i-1,j,ii) + - * C(i+1,j,ii) +C(i,j-1,ii) + - * C(i,j+2,ii) +C(i,j,ii+2) - - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region in (C) - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(1:2,2:2,1:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii)=A(i+2,j,ii) +A(i,j-2,ii) + - * A(i,j,ii-1) +A(i-1,j,ii) + - * A(i+1,j,ii) +A(i,j-1,ii) + - * A(i,j+2,ii) +A(i,j,ii+2) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3103 - subroutine acr3103 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3103' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i,j-2,ii)+ C(i,j-1,ii)+C(i+1,j,ii)+ - * C(i,j+1,ii)+C(i,j,ii+1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:2,2:2,0:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i,j-2,ii)+ A(i,j-1,ii)+A(i+1,j,ii)+ - * A(i,j+1,ii)+A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3104 - subroutine acr3104 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3104' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j,ii-2)+ - *C(i-2,j,ii)+ C(i,j-2,ii)+C(i-1,j,ii)+C(i,j-1,ii)+ - *C(i,j,ii-1)+C(i+1,j,ii) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii) -!dvm$ region - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(2:2,2:0,2:0)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j,ii-2)+ - *A(i-2,j,ii)+ A(i,j-2,ii)+A(i-1,j,ii)+A(i,j-1,ii)+ - *A(i,j,ii-1)+A(i+1,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3105 - subroutine acr3105 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A - tname='ACR3105' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i,j-2,ii)+C(i,j-1,ii)+C(i+1,j,ii)+C(i,j+1,ii)+ - * C(i,j,ii+1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region in (C) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:2,2:2,0:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i,j-2,ii)+A(i,j-1,ii)+A(i+1,j,ii)+A(i,j+1,ii)+ - * A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C --------------------------------------------ACR3106 - subroutine acr3106 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3) :: A - tname='ACR3106' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i,j,ii+3)+ - * C(i-3,j,ii)+C(i,j-3,ii)+C(i,j,ii-3)+ - * C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i-2,j,ii)+C(i,j-2,ii)+C(i,j,ii-2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+ - * C(i-1,j,ii)+C(i,j-1,ii)+C(i,j,ii-1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(3:3,3:3,3:3)), -!dvm$*stage(iloop) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i,j,ii+3)+ - * A(i-3,j,ii)+A(i,j-3,ii)+A(i,j,ii-3)+ - * A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i-2,j,ii)+A(i,j-2,ii)+A(i,j,ii-2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+ - * A(i-1,j,ii)+A(i,j-1,ii)+A(i,j,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(A,C) - end - - -C --------------------------------------------ACR3107 - subroutine acr3107 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3,3:0) :: A - tname='ACR3107' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i-3,j,ii)+ - * C(i,j,ii-3)+C(i+2,j,ii)+C(i,j+2,ii)+ - * C(i-2,j,ii)+C(i,j,ii-2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i+1,j,ii)+ - * C(i,j+1,ii)+C(i-1,j,ii)+C(i,j,ii-1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(3:3,0:3,3:0)), -!dvm$*stage(iloop) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i-3,j,ii)+ - * A(i,j,ii-3)+A(i+2,j,ii)+A(i,j+2,ii)+ - * a(i-2,j,ii)+A(i,j,ii-2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i+1,j,ii)+ - * A(i,j+1,ii)+A(i-1,j,ii)+A(i,j,ii-1) - enddo - enddo - enddo -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C --------------------------------------------ACR3108 - subroutine acr3108 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A - tname='ACR3108' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - - do i=1,N-3 - do j=1,M-3 - do ii=1,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i,j,ii+3)+ - * C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:3,0:3,0:3)), -!dvm$*stage(iloop) - do ii=1,K-3 - do j=1,M-3 - do i=1,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i,j,ii+3)+ - * A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C --------------------------------------------ACR3109 - subroutine acr3109 - integer, parameter :: N = 58,M=58,K=58, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11) :: A - tname='ACR3109' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - C(i,j,ii) = C(i+11,j,ii)+C(i,j+11,ii)+C(i,j,ii+11)+ - * C(i-11,j,ii)+C(i,j-11,ii)+C(i,j,ii-11)+ - * C(i+10,j,ii)+C(i,j+10,ii)+C(i,j,ii+10)+ - * C(i-10,j,ii)+C(i,j-10,ii)+C(i,j,ii-10)+ - * C(i-9,j,ii) +C(i,j-9,ii) +C(i,j,ii-9)+ - * C(i+9,j,ii) +C(i,j+9,ii) +C(i,j,ii+9) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(11:11,11:11,11:11)), -!dvm$*stage(iloop) - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - A(i,j,ii) = A(i+11,j,ii)+A(i,j+11,ii)+A(i,j,ii+11)+ - * A(i-11,j,ii)+A(i,j-11,ii)+A(i,j,ii-11)+ - * A(i+10,j,ii)+A(i,j+10,ii)+A(i,j,ii+10)+ - * A(i-10,j,ii)+A(i,j-10,ii)+A(i,j,ii-10)+ - * A(i-9,j,ii)+A(i,j-9,ii)+A(i,j,ii-9)+ - * A(i+9,j,ii)+A(i,j+9,ii)+A(i,j,ii+9) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr32.fdv deleted file mode 100644 index 82a6abe..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr32.fdv +++ /dev/null @@ -1,772 +0,0 @@ - program ACR32 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR32========================' -C -------------------------------------------------- - call acr3201 -C -------------------------------------------------- - call acr3202 -C -------------------------------------------------- - call acr3203 -C ------------------------------------------------- - call acr3204 -C ------------------------------------------------- - call acr3205 -C ------------------------------------------------- - call acr3206 -C -------------------------------------------------- - call acr3207 -C -------------------------------------------------- - call acr3208 -C---------------------------------------------------- - call acr3209 -C---------------------------------------------------- - -C -C - print *,'=== END OF ACR32 ========================= ' - end -C ---------------------------------------------ACR3201 - subroutine acr3201 - integer, parameter :: N = 16,M=8,K=8, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(*,BLOCK,BLOCK) - tname='ACR3201' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - C(i,j,ii) = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii),across(A(1:1,1:1,1:1)), -!dvm$*stage(iloop) - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - A(i,j,ii)=A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3202 - subroutine acr3202 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3202' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii)=C(i+2,j,ii)+C(i,j-2,ii) + - * C(i,j,ii-1)+C(i-1,j,ii) + - * C(i+1,j,ii)+C(i,j-1,ii) + - * C(i,j+2,ii)+C(i,j,ii+2) - - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(1:2,2:2,1:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii)=A(i+2,j,ii)+A(i,j-2,ii) + - * A(i,j,ii-1)+A(i-1,j,ii) + - * A(i+1,j,ii)+A(i,j-1,ii) + - * A(i,j+2,ii)+A(i,j,ii+2) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3203 - subroutine acr3203 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3203' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i,j-2,ii)+ C(i,j-1,ii)+C(i+1,j,ii)+ - * C(i,j+1,ii)+C(i,j,ii+1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii) -!dvm$ region in (C) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:2,2:2,0:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i,j-2,ii)+ A(i,j-1,ii)+A(i+1,j,ii)+ - * A(i,j+1,ii)+A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3204 - subroutine acr3204 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A - tname='ACR3204' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j,ii-2)+ - *C(i-2,j,ii)+ C(i,j-2,ii)+C(i-1,j,ii)+C(i,j-1,ii)+ - *C(i,j,ii-1)+C(i+1,j,ii) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(2:2,2:0,2:0)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j,ii-2)+ - *A(i-2,j,ii)+ A(i,j-2,ii)+A(i-1,j,ii)+A(i,j-1,ii)+ - *A(i,j,ii-1)+A(i+1,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end -C ---------------------------------------------ACR3205 - subroutine acr3205 - integer, parameter :: N = 16,M=10,K=10, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A - tname='ACR3205' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - C(i,j,ii) =C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i,j-2,ii)+C(i,j-1,ii)+C(i+1,j,ii)+C(i,j+1,ii)+ - * C(i,j,ii+1) - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:2,2:2,0:2)), -!dvm$*stage(iloop) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii) =A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i,j-2,ii)+A(i,j-1,ii)+A(i+1,j,ii)+A(i,j+1,ii)+ - * A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C --------------------------------------------ACR3206 - subroutine acr3206 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ shadow(3:3,3:3,3:3) :: A - tname='ACR3206' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i,j,ii+3)+ - * C(i-3,j,ii)+C(i,j-3,ii)+C(i,j,ii-3)+ - * C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i-2,j,ii)+C(i,j-2,ii)+C(i,j,ii-2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+ - * C(i-1,j,ii)+C(i,j-1,ii)+C(i,j,ii-1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C) - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(3:3,3:3,3:3)), -!dvm$*stage(iloop) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i,j,ii+3)+ - * A(i-3,j,ii)+A(i,j-3,ii)+A(i,j,ii-3)+ - * A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i-2,j,ii)+A(i,j-2,ii)+A(i,j,ii-2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+ - * A(i-1,j,ii)+A(i,j-1,ii)+A(i,j,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - - -C --------------------------------------------ACR3207 - subroutine acr3207 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3,3:0) :: A - tname='ACR3207' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i-3,j,ii)+ - * C(i,j,ii-3)+C(i+2,j,ii)+C(i,j+2,ii)+ - * C(i-2,j,ii)+C(i,j,ii-2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i+1,j,ii)+ - * C(i,j+1,ii)+C(i-1,j,ii)+C(i,j,ii-1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(3:3,0:3,3:0)), -!dvm$*stage(iloop) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i-3,j,ii)+ - * A(i,j,ii-3)+A(i+2,j,ii)+A(i,j+2,ii)+ - * a(i-2,j,ii)+A(i,j,ii-2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i+1,j,ii)+ - * A(i,j+1,ii)+A(i-1,j,ii)+A(i,j,ii-1) - enddo - enddo - enddo -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - - -C --------------------------------------------ACR3208 - subroutine acr3208 - integer, parameter :: N = 16,M=16,K=16, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A - tname='ACR3208' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=1,N-3 - do j=1,M-3 - do ii=1,K-3 - C(i,j,ii) = C(i+3,j,ii)+C(i,j+3,ii)+C(i,j,ii+3)+ - * C(i+2,j,ii)+C(i,j+2,ii)+C(i,j,ii+2)+ - * C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(0:3,0:3,0:3)), -!dvm$*stage(iloop) - do ii=1,K-3 - do j=1,M-3 - do i=1,N-3 - A(i,j,ii) = A(i+3,j,ii)+A(i,j+3,ii)+A(i,j,ii+3)+ - * A(i+2,j,ii)+A(i,j+2,ii)+A(i,j,ii+2)+ - * A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C --------------------------------------------ACR3209 - subroutine acr3209 - integer, parameter :: N = 58,M=58,K=58, NL=1000 - integer,allocatable :: A(:,:,:), C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ shadow(11:11,11:11,11:11) :: A - tname='ACR3209' - allocate (A(N,M,K), C(N,M,K)) - - do iloop=0,2 - NNL=NL - call serial3(C,N,M,K,NNL) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - C(i,j,ii) = C(i+11,j,ii)+C(i,j+11,ii)+C(i,j,ii+11)+ - * C(i-11,j,ii)+C(i,j-11,ii)+C(i,j,ii-11)+ - * C(i+10,j,ii)+C(i,j+10,ii)+C(i,j,ii+10)+ - * C(i-10,j,ii)+C(i,j-10,ii)+C(i,j,ii-10)+ - * C(i-9,j,ii) +C(i,j-9,ii) +C(i,j,ii-9)+ - * C(i+9,j,ii) +C(i,j+9,ii) +C(i,j,ii+9) - enddo - enddo - enddo - - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual (nloopi,nloopj,nloopii,C) -!dvm$ region inout (C),out (A) - - -!dvm$ parallel (ii,j,i) on A(i,j,ii) - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*across(A(11:11,11:11,11:11)), -!dvm$*stage(iloop) - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - A(i,j,ii) = A(i+11,j,ii)+A(i,j+11,ii)+A(i,j,ii+11)+ - * A(i-11,j,ii)+A(i,j-11,ii)+A(i,j,ii-11)+ - * A(i+10,j,ii)+A(i,j+10,ii)+A(i,j,ii+10)+ - * A(i-10,j,ii)+A(i,j-10,ii)+A(i,j,ii-10)+ - * A(i-9,j,ii)+A(i,j-9,ii)+A(i,j,ii-9)+ - * A(i+9,j,ii)+A(i,j+9,ii)+A(i,j,ii+9) - enddo - enddo - enddo - -!dvm$ parallel (ii,j,i) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, C) - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr41.fdv deleted file mode 100644 index 938a38a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr41.fdv +++ /dev/null @@ -1,887 +0,0 @@ - program ACR41 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR41========================' -C -------------------------------------------------- - call acr4101 -C -------------------------------------------------- - call acr4102 -C -------------------------------------------------- - call acr4103 -C ------------------------------------------------- - call acr4104 -C ------------------------------------------------- - call acr4105 -C ------------------------------------------------- - call acr4106 -C -------------------------------------------------- - call acr4107 -C -------------------------------------------------- - call acr4108 -C---------------------------------------------------- -c call acr4109 -C---------------------------------------------------- - -C -C - print *,'=== END OF ACR41 ========================= ' - end -C ---------------------------------------------ACR4101 - subroutine ACR4101 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4101' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - C(i,j,ii,jj)= - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in(C,B),out (A) - - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(1:1,1:1,1:1,1:1)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - A(i,j,ii,jj)= - * A(i+1,j,ii,jj)+A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B, C) - end -C ---------------------------------------------ACR4102 - subroutine ACR4102 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4102' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+2)+ - * C(i-1,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-1)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii,jj+1)+ C(i,j-1,ii,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region - - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj),across(A(1:2,2:2,2:1,1:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+2)+ - * A(i-1,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-1)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii,jj+1)+ A(i,j-1,ii,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -----------------------------------------ACR4103 - subroutine ACR4103 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4103' - allocate (B(N,M,K,L), C(N,M,K,L), A(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i,j,ii,jj-2)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii-1,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:0,2:2,2:0,2:0)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i,j,ii,jj-2)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii-1,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A ,B, C) - end -C ------------------------------------------ACR4104 - subroutine ACR4104 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4104' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i+2,j,ii,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i+1,j,ii,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,2:0,0:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i+2,j,ii,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i+1,j,ii,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate ( A, B, C) - end -C ------------------------------------------ACR4105 - subroutine ACR4105 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4105' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj)= - * C(i+2,j,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j,ii+1,jj)+ - * C(i,j,ii,jj+1)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,0:2,2:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj)= - * A(i+2,j,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j,ii+1,jj)+ - * A(i,j,ii,jj+1)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C --------------------------------------------ACR4106 - subroutine ACR4106 - integer, parameter :: N = 32,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4106' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i-3,j,ii,jj)+ C(i,j-3,ii,jj)+ - * C(i,j,ii-3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj+2)+ - * C(i-2,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(3:3,3:3,3:3,3:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i-3,j,ii,jj)+ A(i,j-3,ii,jj)+ - * A(i,j,ii-3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj+2)+ - * A(i-2,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4107 - subroutine ACR4107 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4107' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i,j-3,ii,jj)+ C(i+2,j,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i,j-2,ii,jj)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region - - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,3:3,0:3,0:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i,j-3,ii,jj)+ A(i+2,j,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i,j-2,ii,jj)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4108 - subroutine ACR4108 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4108' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,0:3,0:3,3:0)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4109 - subroutine ACR4109 - integer, parameter :: N = 48,M=48,K=48,L=48, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4109' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - C(i,j,ii,jj) = - * C(i+11,j,ii,jj)+ C(i,j+11,ii,jj)+ - * C(i,j,ii+11,jj)+ C(i,j,ii,jj+11)+ - * C(i-11,j,ii,jj)+ C(i,j-11,ii,jj)+ - * C(i,j,ii-11,jj)+ C(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(11:11,11:11,11:11,11:11)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - A(i,j,ii,jj) = - * A(i+11,j,ii,jj)+ A(i,j+11,ii,jj)+ - * A(i,j,ii+11,jj)+ A(i,j,ii,jj+11)+ - * A(i-11,j,ii,jj)+ A(i,j-11,ii,jj)+ - * A(i,j,ii-11,jj)+ A(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate ( A, B, C) - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr42.fdv deleted file mode 100644 index 81acd7a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr42.fdv +++ /dev/null @@ -1,881 +0,0 @@ - program ACR42 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR42========================' -C -------------------------------------------------- - call acr4201 -C -------------------------------------------------- - call acr4202 -C -------------------------------------------------- - call acr4203 -C ------------------------------------------------- - call acr4204 -C ------------------------------------------------- - call acr4205 -C ------------------------------------------------- - call acr4206 -C -------------------------------------------------- - call acr4207 -C -------------------------------------------------- - call acr4208 -C---------------------------------------------------- - call acr4209 -C---------------------------------------------------- - -C -C - print *,'=== END OF ACR42 ========================= ' - end -C ---------------------------------------------ACR4201 - subroutine ACR4201 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4201' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - C(i,j,ii,jj)= - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*across(A(1:1,1:1,1:1,1:1)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - A(i,j,ii,jj)= - * A(i+1,j,ii,jj)+A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ---------------------------------------------ACR4202 - subroutine ACR4202 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4202' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+2)+ - * C(i-1,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-1)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii,jj+1)+ C(i,j-1,ii,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),across(A(1:2,2:2,2:1,1:2)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - A(i,j,ii,jj) = - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+2)+ - * A(i-1,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-1)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii,jj+1)+ A(i,j-1,ii,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -----------------------------------------ACR4203 - subroutine ACR4203 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4203' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i,j,ii,jj-2)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii-1,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out( A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:0,2:2,2:0,2:0)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i,j,ii,jj-2)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii-1,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ------------------------------------------ACR4204 - subroutine ACR4204 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4204' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i+2,j,ii,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i+1,j,ii,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,2:0,0:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i+2,j,ii,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i+1,j,ii,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ------------------------------------------ACR4205 - subroutine ACR4205 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4205' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj)= - * C(i+2,j,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j,ii+1,jj)+ - * C(i,j,ii,jj+1)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,0:2,2:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj)= - * A(i+2,j,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j,ii+1,jj)+ - * A(i,j,ii,jj+1)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C --------------------------------------------ACR4206 - subroutine ACR4206 - integer, parameter :: N = 32,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4206' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i-3,j,ii,jj)+ C(i,j-3,ii,jj)+ - * C(i,j,ii-3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj+2)+ - * C(i-2,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(3:3,3:3,3:3,3:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i-3,j,ii,jj)+ A(i,j-3,ii,jj)+ - * A(i,j,ii-3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj+2)+ - * A(i-2,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4207 - subroutine ACR4207 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4207' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i,j-3,ii,jj)+ C(i+2,j,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i,j-2,ii,jj)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,3:3,0:3,0:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i,j-3,ii,jj)+ A(i+2,j,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i,j-2,ii,jj)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4208 - subroutine ACR4208 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4208' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,0:3,0:3,3:0)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4209 - subroutine ACR4209 - integer, parameter :: N = 48,M=48,K=48,L=48, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4209' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - C(i,j,ii,jj) = - * C(i+11,j,ii,jj)+ C(i,j+11,ii,jj)+ - * C(i,j,ii+11,jj)+ C(i,j,ii,jj+11)+ - * C(i-11,j,ii,jj)+ C(i,j-11,ii,jj)+ - * C(i,j,ii-11,jj)+ C(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(11:11,11:11,11:11,11:11)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - A(i,j,ii,jj) = - * A(i+11,j,ii,jj)+ A(i,j+11,ii,jj)+ - * A(i,j,ii+11,jj)+ A(i,j,ii,jj+11)+ - * A(i-11,j,ii,jj)+ A(i,j-11,ii,jj)+ - * A(i,j,ii-11,jj)+ A(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr43.fdv deleted file mode 100644 index fbec076..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/acr43.fdv +++ /dev/null @@ -1,883 +0,0 @@ - program ACR43 - -c TESTING OF THE ACROSS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT -c FLOW-DEP-LENGTH ON BOTH SIDES - - print *,'===START OF ACR43========================' -C -------------------------------------------------- - call acr4301 -C -------------------------------------------------- - call acr4302 -C -------------------------------------------------- - call acr4303 -C ------------------------------------------------- - call acr4304 -C ------------------------------------------------- - call acr4305 -C ------------------------------------------------- - call acr4306 -C -------------------------------------------------- - call acr4307 -C -------------------------------------------------- - call acr4308 -C---------------------------------------------------- - call acr4309 -C---------------------------------------------------- - -C -C - print *,'=== END OF ACR43 ========================= ' - end -C ---------------------------------------------ACR4301 - subroutine ACR4301 - integer, parameter :: N = 16,M=8,K=8,L=8, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4301' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - C(i,j,ii,jj)= - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*across(A(1:1,1:1,1:1,1:1)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - A(i,j,ii,jj)= - * A(i+1,j,ii,jj)+A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=2,L-1 - do ii=2,K-1 - do j=2,M-1 - do i=2,N-1 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ---------------------------------------------ACR4302 - subroutine ACR4302 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4302' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+2)+ - * C(i-1,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-1)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii,jj+1)+ C(i,j-1,ii,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in( C),out( A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj),across(A(1:2,2:2,2:1,1:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+2)+ - * A(i-1,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-1)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii,jj+1)+ A(i,j-1,ii,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -----------------------------------------ACR4303 - subroutine ACR4303 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4303' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i,j,ii,jj-2)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii-1,jj)+ - * C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:0,2:2,2:0,2:0)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i,j,ii,jj-2)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii-1,jj)+ - * A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ------------------------------------------ACR4304 - subroutine ACR4304 - integer, parameter :: N = 16,M=10,K=10,L=10, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4304' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj) = C(i+2,j,ii,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii-2,jj)+ - * C(i+1,j,ii,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,2:0,0:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj) = A(i+2,j,ii,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii-2,jj)+ - * A(i+1,j,ii,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ------------------------------------------ACR4305 - subroutine ACR4305 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4305' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - C(i,j,ii,jj)= - * C(i+2,j,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i-2,j,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j,ii+1,jj)+ - * C(i,j,ii,jj+1)+ C(i-1,j,ii,jj)+ - * C(i,j-1,ii,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(2:2,2:0,0:2,2:2)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - A(i,j,ii,jj)= - * A(i+2,j,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i-2,j,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j,ii+1,jj)+ - * A(i,j,ii,jj+1)+ A(i-1,j,ii,jj)+ - * A(i,j-1,ii,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=3,L-2 - do ii=3,K-2 - do j=3,M-2 - do i=3,N-2 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C --------------------------------------------ACR4306 - subroutine ACR4306 - integer, parameter :: N = 32,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4306' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i-3,j,ii,jj)+ C(i,j-3,ii,jj)+ - * C(i,j,ii-3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj+2)+ - * C(i-2,j,ii,jj)+ C(i,j-2,ii,jj)+ - * C(i,j,ii-2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i-1,j,ii,jj)+ C(i,j-1,ii,jj)+ - * C(i,j,ii-1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(3:3,3:3,3:3,3:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i-3,j,ii,jj)+ A(i,j-3,ii,jj)+ - * A(i,j,ii-3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj+2)+ - * A(i-2,j,ii,jj)+ A(i,j-2,ii,jj)+ - * A(i,j,ii-2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i-1,j,ii,jj)+ A(i,j-1,ii,jj)+ - * A(i,j,ii-1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4307 - subroutine ACR4307 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4307' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj+3)+ - * C(i,j-3,ii,jj)+ C(i+2,j,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j,ii+2,jj)+ - * C(i,j,ii,jj+2)+ C(i,j-2,ii,jj)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj+1)+ - * C(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C),out (A) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,3:3,0:3,0:3)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj+3)+ - * A(i,j-3,ii,jj)+ A(i+2,j,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j,ii+2,jj)+ - * A(i,j,ii,jj+2)+ A(i,j-2,ii,jj)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj+1)+ - * A(i,j-1,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4308 - subroutine ACR4308 - integer, parameter :: N = 16,M=16,K=16,L=16, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4308' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - C(i,j,ii,jj) = - * C(i+3,j,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j,ii+3,jj)+ C(i,j,ii,jj-3)+ - * C(i+2,j,ii,jj)+ C(i,j+2,ii,jj)+ - * C(i,j,ii+2,jj)+ C(i,j,ii,jj-2)+ - * C(i+1,j,ii,jj)+ C(i,j+1,ii,jj)+ - * C(i,j,ii+1,jj)+ C(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(0:3,0:3,0:3,3:0)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - A(i,j,ii,jj) = - * A(i+3,j,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j,ii+3,jj)+ A(i,j,ii,jj-3)+ - * A(i+2,j,ii,jj)+ A(i,j+2,ii,jj)+ - * A(i,j,ii+2,jj)+ A(i,j,ii,jj-2)+ - * A(i+1,j,ii,jj)+ A(i,j+1,ii,jj)+ - * A(i,j,ii+1,jj)+ A(i,j,ii,jj-1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=4,L-3 - do ii=4,K-3 - do j=4,M-3 - do i=4,N-3 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C -------------------------------------------ACR4309 - subroutine ACR4309 - integer, parameter :: N = 58,M=58,K=58,L=58, NL=1000 - integer, allocatable :: A(:,:,:,:), B(:,:,:,:), C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - tname='ACR4309' - allocate (B(N,M,K,L), A(N,M,K,L), C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - C(i,j,ii,jj) = - * C(i+11,j,ii,jj)+ C(i,j+11,ii,jj)+ - * C(i,j,ii+11,jj)+ C(i,j,ii,jj+11)+ - * C(i-11,j,ii,jj)+ C(i,j-11,ii,jj)+ - * C(i,j,ii-11,jj)+ C(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual (nloopi,nloopj,nloopii,nloopjj,C) -!dvm$ region in (C) - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj) - do jj=1,L - do ii=1,K - do j=1,M - do i=1,N - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*across(A(11:11,11:11,11:11,11:11)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - A(i,j,ii,jj) = - * A(i+11,j,ii,jj)+ A(i,j+11,ii,jj)+ - * A(i,j,ii+11,jj)+ A(i,j,ii,jj+11)+ - * A(i-11,j,ii,jj)+ A(i,j-11,ii,jj)+ - * A(i,j,ii-11,jj)+ A(i,j,ii,jj-11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (jj,ii,j,i) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do jj=12,L-11 - do ii=12,K-11 - do j=12,M-11 - do i=12,N-11 - if (A(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A, B, C) - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/settings deleted file mode 100644 index fd6919c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ACROSS/settings +++ /dev/null @@ -1 +0,0 @@ -ALLOW_MULTIDEV=0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align11.fdv deleted file mode 100644 index d33c1f1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align11.fdv +++ /dev/null @@ -1,441 +0,0 @@ - program ALIGN11 - -c TESTING align CLAUSE . - - print *,'===START OF align11========================' -C -------------------------------------------------- -c 111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] normal - call align111 -C -------------------------------------------------- -c 1111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] small array - call align1111 -C -------------------------------------------------- -c 1112 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[2*i+1] small array - call align1112 -C -------------------------------------------------- -c 112 ALIGN arrB[i] WITH arrA[i+4] shift along i - call align112 -C -------------------------------------------------- -c 113 ALIGN arrB[i] WITH arrA[-i+9] reverse on i -c call align113 -C -------------------------------------------------- -c 114 ALIGN arrB[i] WITH arrA[2*i+8] stretching along i - call align114 -C -------------------------------------------------- -c 115 ALIGN arrB[*] WITH arrA[*] - call align115 -C -------------------------------------------------- -C -C - print *,'=== END OF align11 ========================= ' - end - -C ----------------------------------------------------align111 -c 111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] normal - subroutine align111 - integer, parameter :: AN1=8,BN1=8,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=0 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align111' - allocate (A1(AN1),B1(BN1)) - erri= ER -c call stralign111 - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - end -C ----------------------------------------------------align1111 -c 1111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] small array - subroutine align1111 - integer, parameter :: AN1=5,BN1=2,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=0 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align1111' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align1112 -c 1112 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[2*i+1] small array - subroutine align1112 - integer, parameter :: AN1=5,BN1=2,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=1 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align1112' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align112 -c 112 ALIGN arrB[i] WITH arrA[i+4] shift along i - subroutine align112 - integer, parameter :: AN1=8,BN1=4,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=4 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align112' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align113 -c 113 ALIGN arrB[i] WITH arrA[-i+9] reverse on i - subroutine align113 - integer, parameter :: AN1=8,BN1=8,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=-1,k2i=0,li=9 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align113' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align114 -c 114 ALIGN arrB[i] WITH arrA[2*i+8] stretching along i - subroutine align114 - integer, parameter :: AN1=24,BN1=8,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=8 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - - tname='align114' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1),inout(erri) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align115 -c 115 ALIGN arrB[*] WITH arrA[*] - subroutine align115 - integer, parameter :: AN1=24,BN1=8,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[*] WITH arrA[*] - integer, parameter :: k1i=0,k2i=0,li=0 - character*9 tname - integer,allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(*) WITH A1(*) - - tname='align115' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ),private(j) - do i=1,AN1 - do j=1,BN1 - if (B1(j) .eq.(j)) then - else - erri = min(erri,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align12.fdv deleted file mode 100644 index cd9610b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align12.fdv +++ /dev/null @@ -1,233 +0,0 @@ - program ALIGN12 - -c TESTING align CLAUSE . - - print *,'===START OF align12========================' -C -------------------------------------------------- -c 121 arrA1[BLOCK] arrB2[][] ALIGN arrB[][i] WITH arrA[i] matrix compression: -c column on vector element - call align121 -C ------------------------------------------------- -c 122 ALIGN arrB[i][ ] WITH arrA[2*i+1] matrix compression: -c line on vector element - call align122 -C ------------------------------------------------- -c 123 ALIGN arrB[][ ] WITH arrA[] - call align123 -C ------------------------------------------------- -C -C - print *,'=== END OF align12 ========================= ' - end - -C ----------------------------------------------------align121 -c 121 arrA1[BLOCK] arrB2[][] ALIGN arrB[][i] WITH arrA[i] matrix compression: -c column on vector element - subroutine align121 - integer, parameter :: AN1=8,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB(*,i) WITH arrA[k1i*i+li] - integer, parameter :: k1i=1,k2i=0,li=0 - character*9 tname - integer, allocatable :: A1(:),B2(:,:) - integer s,cs,erri,i,j,ib,jb -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B2(*,i) WITH A1(k1i*i+li) - - tname='align121' - allocate (A1(AN1),B2(BN1,BN2)) - erri= ER -c call stralign121 - NNL=NL - s=0 - -!dvm$ actual(erri, s) -!dvm$ region local(A1,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i) on A1(i), private(ib,jb,j) - do i=1,AN1 - A1(i) = i - do j=1,BN1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN2) )then - ib = j - jb = (i-li)/k1i - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL+j - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s,cs - endif - deallocate (B2,A1) - - end -C ----------------------------------------------------align122 -c 122 ALIGN arrB[i][ ] WITH arrA[2*i+1] matrix compression: -c line on vector element - subroutine align122 - integer, parameter :: AN1=16,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB(i,*) WITH arrA[k1i*i+li] - integer, parameter :: k1i=2,k2i=0,li=1 - character*9 tname - integer, allocatable :: A1(:),B2(:,:) - integer s,cs,erri,i,j,ib,jb -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B2(i,*) WITH A1(k1i*i+li) - - - tname='align122' - allocate (A1(AN1),B2(BN1,BN2)) - erri= ER -c call stralign122 - NNL=NL - s=0 - -!dvm$ actual(erri, s) -!dvm$ region local(A1,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i) on A1(i), private(ib,jb,j) - do i=1,AN1 - A1(i) = i - do j=1,BN2 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) )then - jb = j - ib = (i-li)/k1i - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL+j - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s,cs - endif - deallocate (B2,A1) - end -C ----------------------------------------------------align123 -c 123 ALIGN arrB[][ ] WITH arrA[] - subroutine align123 - integer, parameter :: AN1=16,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB(*,*) WITH arrA[*] - integer, parameter :: k1i=0,k2i=0,li=0 - character*9 tname - integer, allocatable :: A1(:),B2(:,:) - integer s,erri,i,j,ib,jb -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B2(*,*) WITH A1(*) - - - tname='align123' - allocate (A1(AN1),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri )), private(ib,jb) - do i=1,AN1 - do ib=1,BN1 - do jb=1,BN2 - if (B2(ib,jb) .eq.(ib*NL+jb)) then - else - erri = min(erri,ib*NL/10+jb) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - - if ((erri .eq.ER) - * ) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri - endif - deallocate (B2,A1) - - end -C ------------------------------------------------------------ - - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align21.fdv deleted file mode 100644 index 095d59e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align21.fdv +++ /dev/null @@ -1,299 +0,0 @@ - program ALIGN21 - -c TESTING align CLAUSE . -c arrA2[BLOCK][ BLOCK] arrB1[] - print *,'===START OF align21========================' -C -------------------------------------------------- -c 211 ALIGN arrB[i] WITH arrA[1][i] vector arrB on section -* (the first line of arrA) - call align211 -C ------------------------------------------------- -c 212 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - call align212 -C ------------------------------------------------- -c 213 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - call align213 -C ------------------------------------------------- -c 214 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - call align214 -C ------------------------------------------------- -C -C - print *,'=== END OF align21 ========================= ' - end - -C ----------------------------------------------------align211 -c 211 arrA2[BLOCK][ BLOCK] arrB1[] ALIGN arrB[i] WITH arrA[1][i]vector arrB on section -* (the first line of arrA) - subroutine align211 - integer, parameter :: AN1=8,AN2=8,BN1=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(1,i) - integer, parameter :: k1i=0,k2i=0,li=1,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B1(:) - integer erri,i,j,ia,ja,ib,jb -cdvm$ distribute A2(BLOCK,BLOCK) -cdvm$ ALIGN B1(i) WITH A2(1,i) - - - tname='align211' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -*dvm$ parallel (i,j) on A2(i,j), private (ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((i .eq. 1) ) then - if ( - * (j .le. BN1) - * ) then - ib = j - B1(ib) = ib - endif - endif - enddo - enddo - -*dvm$ parallel (i) on B1(i),reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=1 - ja=i - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - end -C ----------------------------------------------------align212 -c 212 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - subroutine align212 - integer, parameter :: AN1=14,AN2=3,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,lj) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=2 - character*9 tname - integer, allocatable :: A2(:,:),B1(:) - integer erri - -cdvm$ distribute A2(BLOCK,BLOCK) -cdvm$ ALIGN B1(i) WITH A2(k1i*i+li,lj) - - tname='align212' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -*dvm$ parallel (i,j) on A2(i,j), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((j .eq. lj) .and. - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) - * ) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - enddo - -*dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i*i+li - ja=lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align213 -c 213 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - subroutine align213 - integer, parameter :: AN1=8,AN2=8,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[][k1j * i + lj] - integer, parameter :: k1i=0,k2i=0,li=0,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B1(:) - integer s,cs,erri,i,j,ia,ja,ib,jb - -cdvm$ distribute A2(BLOCK,BLOCK) -cdvm$ ALIGN B1(i) WITH A2(*,k1j * i + lj) - - - tname='align213' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -*dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN1) )then - ib = (j-lj)/k1j - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -*dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = ((1 + BN1)* BN1/ 2) -c write (*,*) erri,s,cs - - if ((erri .eq.ER) .and. - * (s .eq.cs )) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align214 -c 214 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - subroutine align214 - integer, parameter :: AN1=28,AN2=8,BN1=5,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,*) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B1(:) - integer s,erri,i,j,ia,ja,ib,jb - -cdvm$ distribute A2(BLOCK,BLOCK) -cdvm$ ALIGN B1(i) WITH A2(k1i*i+li,*) - - - tname='align214' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -*dvm$ parallel (i,j) on A2(i,j), reduction( min( erri )), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) )then - ib = (i-li)/k1i - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -*dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - - if ((erri .eq.ER) .and. - * (s .eq. ((1 + BN1)* BN1/ 2))) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s - endif - deallocate (B1,A2) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align22.fdv deleted file mode 100644 index a3309c3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align22.fdv +++ /dev/null @@ -1,598 +0,0 @@ - program ALIGN22 - -c TESTING align CLAUSE . - - print *,'===START OF align22========================' -C -------------------------------------------------- -c 221 arrA2[BLOCK][ BLOCK] arrB2[][] ALIGN arrB[i][j] WITH arrA[i][j] normal - call align221 -C ------------------------------------------------- -c 222 ALIGN arrB[i][j] WITH arrA[i][2*j] stretching along j - call align222 -C ------------------------------------------------- -c 223 ALIGN arrB[i][j] WITH arrA[i+4][j] shift along i - call align223 -C ------------------------------------------------- -c 224 ALIGN arrB[i][j] WITH arrA[-i+9][j] reverse on i -c call align224 -C ------------------------------------------------- -c 225 ALIGN arrB[i][j] WITH arrA[i+4][j+4]shift along i and j - call align225 - call align2251 -C ------------------------------------------------- -c 226 ALIGN arrB[i][j] WITH arrA[j][i] rotation - call align226 -C ------------------------------------------------- -c 227 ALIGN arrB[i][j] WITH arrA[j+1][i] rotation and shift - call align227 -C ------------------------------------------------- -C -C - print *,'=== END OF align22 ========================= ' - end - -C ----------------------------------------------------align221 -c 221 arrA2[BLOCK][ BLOCK] arrB2[][] ALIGN arrB[i][j] WITH arrA[i][j] normal - subroutine align221 - integer, parameter :: AN1=8,AN2=8,BN1=8,BN2=8,NL=1000,ER=10000 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(i,j) - - - tname='align221' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - B2(i,j) = i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=i - ja=j - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - - -C ----------------------------------------------------align222 -c 222 ALIGN arrB[i][j] WITH arrA[i][2*j] stretching along j - subroutine align222 - integer, parameter :: AN1=8,AN2=8,BN1=8,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=2,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) - - tname='align222' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - -C ----------------------------------------------------align223 -c 223 ALIGN arrB[i][j] WITH arrA[i+4][j] shift along i - subroutine align223 - integer, parameter :: AN1=8,AN2=8,BN1=4,BN2=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) - - - tname='align223' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - -C ----------------------------------------------------align224 -c 224 ALIGN arrB[i][j] WITH arrA[-i+9][j] reverse on i - subroutine align224 - integer, parameter :: AN1=8,AN2=8,BN1=8,BN2=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=-1,k2i=0,li=9,k1j=0,k2j=1,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) - - - tname='align224' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) - -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - -C ----------------------------------------------------align225 -c 225 ALIGN arrB[i][j] WITH arrA[i+4][j+4]shift along i and j - subroutine align225 - integer, parameter :: AN1=8,AN2=8,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=4 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) - - - tname='align225' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end -C ----------------------------------------------------align2251 -c 2251 ALIGN arrB[i][j] WITH arrA[i+1][2*j]shift along i and j - subroutine align2251 - integer, parameter :: AN1=3,AN2=4,BN1=2,BN2=2,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=1,k1j=0,k2j=2,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) - - - tname='align2251' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end -C ----------------------------------------------------align226 -c 226 ALIGN arrB[i][j] WITH arrA[j][i] rotation - subroutine align226 - integer, parameter :: AN1=4,AN2=4,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][k1j * i + lj] - integer, parameter :: k1i=0,k2i=1,li=0,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k2i * j + li,k1j * i + lj) - - - tname='align226' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN2) .and. - * (((j-lj)/k1j) .le. BN1)) then - ib = (j-lj)/k1j - jb = (i-li)/k2i - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k2i * j + li - ja=k1j * i + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - - -C ----------------------------------------------------align227 -c 227 ALIGN arrB[i][j] WITH arrA[j+1][i] rotation and shift - subroutine align227 - integer, parameter :: AN1=8,AN2=8,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][k1j * i + lj] - integer, parameter :: k1i=0,k2i=1,li=1,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B2(:,:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k2i * j + li,k1j * i + lj) - - tname='align227' - allocate (A2(AN1,AN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN2) .and. - * (((j-lj)/k1j) .le. BN1)) then - ib = (j-lj)/k1j - jb = (i-li)/k2i - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri )), private(ia,ja) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - ia=k2i * j + li - ja=k1j * i + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A2) - end - - -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align24.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align24.fdv deleted file mode 100644 index aeb4d43..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align24.fdv +++ /dev/null @@ -1,536 +0,0 @@ - program ALIGN24 - -c TESTING align CLAUSE . - - print *,'===START OF align24========================' -C -------------------------------------------------- -c call forcat -C -------------------------------------------------- -c 241 arrA2[BLOCK][ BLOCK] arrB4[ ][ ][ ][ ] ALIGN arrB[i][j][][] WITH arrA[i][j] -c matrix compression - call align241 -C ------------------------------------------------- -c 242 ALIGN arrB[ ][ j][][i] WITH arrA[i+4][ 2*j] matrix compression - call align2421 - call align2422 -C ------------------------------------------------- -c 243 ALIGN arrB[ ][ ][i][] WITH arrA[1][i] matrix compression -c and replication !! - call align243 -C ------------------------------------------------- - print *,'=== END OF align24 ========================' - end - -C ----------------------------------------------------align241 -c 241 arrA2[BLOCK][ BLOCK] arrB4[ ][ ][ ][ ] ALIGN arrB[i][j][][] WITH arrA[i][j] -c matrix compression - - subroutine align241 - integer, parameter :: AN1=5,AN2=5,BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][][] WITH arrA[k1i*i+li][k2j*j+lj] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,*,*) WITH A2(k1i * i + li,k2j * j + lj) - - - tname='align241' - allocate (A2(AN1,AN2), B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,n,m,nb,mb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL/10 + j - do n=1,BN3 - do m=1,BN4 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = n - mb = m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s,cs - print *,B4 - endif - deallocate (B4,A2) - end - -C ----------------------------------------------------align242 -c 242 ALIGN arrB[ ][ j][][i] WITH arrA[i+4][ 2*j] matrix compression - - subroutine align242 - - integer, parameter :: AN1=3,AN2=4,BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[][j][][i] WITH arrA[k1i*i+li][k2j*j+lj] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=1 - integer, parameter :: k1j=0,k2j=2,k3j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B4(*,j,*,i) WITH A2(k1i * i + li,k2j * j + lj) - - tname='align242' - allocate (A2(AN1,AN2), B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,n,m,nb,mb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL/10 + j - do n=1,BN1 - do m=1,BN3 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN4) .and. - * (((j-lj)/k2j) .le. BN2) - * ) then - mb = (i-li)/k1i - jb = (j-lj)/k2j - ib = n - nb = m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A2) - - end - -C ----------------------------------------------------align2421 -c 2421 ALIGN arrB[ ][ i][][j] WITH arrA[j+4][ 2*i] matrix compression - - subroutine align2421 - integer, parameter :: AN1=12,AN2=9,BN1=4,BN2=4,BN3=4,BN4=4 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[][i][][j] WITH arrA[k2i*j+li][k1j*i+lj] - integer, parameter :: k1i=0,k2i=1,k3i=0,li=4 - integer, parameter :: k1j=2,k2j=0,k3j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B4(*,i,*,j) WITH A2(k2i * j + li,k1j * i + lj) - - tname='align2421' - allocate (A2(AN1,AN2), B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,nb,mb,n,m) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL/10 + j - do n=1,BN1 - do m=1,BN3 - if ( - * ((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN4) .and. - * (((j-lj)/k1j) .le. BN2) - * ) then - mb = (i-li)/k2i - jb = (j-lj)/k1j - ib = n - nb = m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A2) - - end - -C ----------------------------------------------------align2422 -c 2422 ALIGN arrB[ ][ i][][j] WITH arrA[j+1][ 2*i] matrix compression - - subroutine align2422 - integer, parameter :: AN1=3,AN2=4,BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[][i][][j] WITH arrA[k2i*j+li][k1j*i+lj] - integer, parameter :: k1i=0,k2i=1,k3i=0,li=1 - integer, parameter :: k1j=2,k2j=0,k3j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B4(*,i,*,j) WITH A2(k2i * j + li,k1j * i + lj) - - - tname='align2422' - allocate (A2(AN1,AN2), B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,nb,mb,n,m) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL/10 + j - do n=1,BN1 - do m=1,BN3 - if ( - * ((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN4) .and. - * (((j-lj)/k1j) .le. BN2) - * ) then - mb = (i-li)/k2i - jb = (j-lj)/k1j - ib = n - nb = m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B4,A2) - - end - -C ----------------------------------------------------align243 -c 243 ALIGN arrB[ ][ ][i][] WITH arrA[1][i] matrix compression -c and replication !! - - subroutine align243 - integer, parameter :: AN1=3,AN2=4,BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: PN=2,NL=10000,ER=100000 - -c parameters for ALIGN arrB[][ ][i][ ] WITH arrA[li][k1j*i+lj] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=1 - integer, parameter :: k1j=1,k2j=0,k3j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B4(*,*,i,*) WITH A2(li,k1j * i + lj) - - - tname='align243' - allocate (A2(AN1,AN2), B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,nb,mb,n,m,k) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL/10 + j - if (i .eq. (li)) then - do n=1,BN1 - do m=1,BN2 - do k=1,BN4 - if ( - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN3) - * ) then - mb = k - jb = m - ib = n - nb = ((j-lj)/k1j) - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - endif - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B4,A2) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align32.fdv deleted file mode 100644 index 7190467..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align32.fdv +++ /dev/null @@ -1,390 +0,0 @@ - program ALIGN32 - -c TESTING align CLAUSE . - - print *,'===START OF align32========================' -C -------------------------------------------------- -c 321 arrA3[BLOCK][ BLOCK] [ BLOCK] arrB2[][] ALIGN arrB[i][j] WITH arrA[i][j][1] -c matrix on section - call align321 -C ------------------------------------------------- -c 322 ALIGN arrB[i][j] WITH arrA[j][i][5] matrix on section with rotation - call align322 -C ------------------------------------------------- -c 323 ALIGN arrB[i][j] WITH arrA[j][1][2*i] matrix on section with -c rotation and stretching - call align323 -C ------------------------------------------------- -c 324 ALIGN arrB[i][j] WITH arrA[][i][j] matrix replication - call align324 -C ------------------------------------------------- - print *,'=== END OF align32 ========================' - end - -C ----------------------------------------------------align321 -c 321 arrA3[BLOCK][ BLOCK] [ BLOCK] arrB2[][] ALIGN arrB[i][j] WITH arrA[i][j][1] -c matrix on section - - subroutine align321 - integer, parameter :: AN1=5,AN2=5,AN3=5,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj][ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=1 - character*9 tname - integer, allocatable :: A3(:,:,:),B2(:,:) - integer s,cs,erri,i,j,n,ia,ja,na,ib,jb,nb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A3(k1i * i + li,k2j * j + lj,ln) - - tname='align321' - allocate (A3(AN1,AN2,AN3), B2(BN1,BN2)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - if ( (n .eq. ln ) .and. - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL/10 + jb*NL/100 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ), -!dvm$* private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL/10 + j*NL/100)) then - else - erri = min(erri,i*NL/10 + j*NL/100) - endif - ia=k1i * i + li - ja=k2j * j + lj - na = ln - if (A3(ia,ja,na) .eq.(ia*NL/10 + ja*NL/100 + na)) then - else - erri = min(erri,ia*NL/10 + ja*NL/100 + na) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL/10 + j*NL/100 - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs - endif - deallocate (B2,A3) - - end - -C ----------------------------------------------------align322 -c 322 ALIGN arrB[i][j] WITH arrA[j][i][5] matrix on section with rotation - - subroutine align322 - integer, parameter :: AN1=5,AN2=5,AN3=5,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][k1j * i + lj][ln] - integer, parameter :: k1i=0,k2i=1,k3i=0,li=0 - integer, parameter :: k1j=1,k2j=0,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=5 - character*9 tname - integer, allocatable :: A3(:,:,:),B2(:,:) - integer s,cs,erri,i,j,n,ia,ja,na,ib,jb,nb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A3(k2i * j + li,k1j * i + lj,ln) - - - tname='align322' - allocate (A3(AN1,AN2,AN3), B2(BN1,BN2)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - if ( (n .eq. ln ) .and. - * ((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN2) .and. - * (((j-lj)/k1j) .le. BN1) - * ) then - ib = (j-lj)/k1j - jb = (i-li)/k2i - B2(ib,jb) = ib*NL/10 + jb*NL/100 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ), -!dvm$* private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL/10 + j*NL/100)) then - else - erri = min(erri,i*NL/10 + j*NL/100) - endif - ia=k2i * j + li - ja=k1j * i + lj - na = ln - if (A3(ia,ja,na) .eq.(ia*NL/10 + ja*NL/100 + na)) then - else - erri = min(erri,ia*NL/10 + ja*NL/100 + na) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL/10 + j*NL/100 - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A3) - - end - -C ----------------------------------------------------align323 -c 323 ALIGN arrB[i][j] WITH arrA[j][1][2*i] matrix on section with -c rotation and stretching - subroutine align323 - integer, parameter :: AN1=5,AN2=2,AN3=8,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][lj][k1n * i + ln] - integer, parameter :: k1i=0,k2i=1,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=0,k3j=0,lj=1 - integer, parameter :: k1n=2,k2n=0,k3n=0,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B2(:,:) - integer s,cs,erri,i,j,n,ia,ja,na,ib,jb,nb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A3(k2i * j + li,lj,k1n * i + ln) - - tname='align323' - allocate (A3(AN1,AN2,AN3), B2(BN1,BN2)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =0 - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - if ( (j .eq. lj ) .and. - * ((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((n-ln) .eq.(((n-ln)/k1n) *k1n)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((n-ln)/k1n) .gt. 0) .and. - * (((i-li)/k2i) .le. BN2) .and. - * (((n-ln)/k1n) .le. BN1) - * ) then - ib = (n-ln)/k1n - jb = (i-li)/k2i - B2(ib,jb) = ib*NL/10 + jb*NL/100 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ), -!dvm$* private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL/10 + j*NL/100)) then - else - erri = min(erri,i*NL/10 + j*NL/100) - endif - ia=k2i * j + li - ja=lj - na = k1n * i + ln - if (A3(ia,ja,na) .eq.(ia*NL/10 + ja*NL/100 + na)) then - else - erri = min(erri,ia*NL/10 + ja*NL/100 + na) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL/10 + j*NL/100 - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs - endif - deallocate (B2,A3) - - end -C ----------------------------------------------------align324 -c 324 ALIGN arrB[i][j] WITH arrA[][i][j] matrix replication - subroutine align324 - integer, parameter :: AN1=4,AN2=6,AN3=6,BN1=4,BN2=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[*,k1j * i + lj,k2n * j + ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=1,k2j=0,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=1,k3n=0,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B2(:,:) - integer s,cs,erri,i,j,n,ia,ja,na,ib,jb,nb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A3(*,k1j * i + lj,k2n * j + ln) - - - tname='align324' - allocate (A3(AN1,AN2,AN3), B2(BN1,BN2)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B2) -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =i*NL/10 + j*NL/100 - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ), -!dvm$* private(ib,jb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - if ( - * ((j-lj) .eq.(((j-lj)/k1j) * k1j)) .and. - * ((n-ln) .eq.(((n-ln)/k2n) *k2n)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((n-ln)/k2n) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN1) .and. - * (((n-ln)/k2n) .le. BN2) - * ) then - jb = (n-ln)/k2n - ib = (j-lj)/k1j - if (B2(ib,jb) .eq.(ib*NL/10 + jb*NL/100)) then - else - erri = ib*NL/10 + jb*NL/100 - endif - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j) on B2(i,j), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - s = s + B2(i,j) - if (B2(i,j) .eq.(i*NL/10 + j*NL/100)) then - else - erri = min(erri,i*NL/10 + j*NL/100) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - cs = cs + i*NL/10 + j*NL/100 - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B2,A3) - - end -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align33.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align33.fdv deleted file mode 100644 index 945671d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align33.fdv +++ /dev/null @@ -1,120 +0,0 @@ - program ALIGN33 - -c TESTING align CLAUSE . - - print *,'===START OF align33========================' -C -------------------------------------------------- -c 331 arrA3[BLOCK][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][k] WITH arrA[i][ j][k] normal - call align331 -C ------------------------------------------------- -C - print *,'=== END OF align33 ========================= ' - end - -C ----------------------------------------------------align331 -c 331 arrA3[BLOCK][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][n] WITH arrA[i][ j][n] normal - - subroutine align331 - integer, parameter :: AN1=5,AN2=5,AN3=5,BN1=2,BN2=2,BN3=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) - - tname='align331' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - s=0 - m=-1 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =0 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on B3(i,j,n), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000))then - else - erri = min(erri, i*NL/10 + j*NL/100+ n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000 - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align44.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align44.fdv deleted file mode 100644 index d8f2f75..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/align44.fdv +++ /dev/null @@ -1,926 +0,0 @@ - program ALIGN44 - -c TESTING align CLAUSE . - - print *,'===START OF align44========================' -C -------------------------------------------------- -c 441 arrA4[BLOCK][BLOCK] [BLOCK] [BLOCK] arrB4[][][][] -c ALIGN arrB[i][j][k][l] WITH arrA[i][ j][k][l] normal - call align441 -C ------------------------------------------------- -c 442 ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] rotation - call align442 -C ------------------------------------------------- -c 443 ALIGN arrB[i][j][k][l] WITH arrA[i][2* j][k][3*l] stretching - call align443 -C ------------------------------------------------- -c 444 ALIGN arrB[i][j][k][l] WITH arrA[i+2][ j][k][ l+3] shift - call align444 -C ------------------------------------------------- -c 445 ALIGN arrB[i][j][k][l] WITH arrA[i][ j][-k+8][- l+8] reverse -c call align445 -C ------------------------------------------------- -c 446 ALIGN arrB[i][j][ ][l] WITH arrA[i][ j][2][ l] -c compression and replication - call align446 -C ------------------------------------------------- -c 447 ALIGN arrB[][j][k][i] WITH arrA[i][ j][ ][ k] -c compression and replication - call align447 -C ------------------------------------------------- -c 448 ALIGN arrB[][i][j][] WITH arrA[i][ j][1][3] -c compression and replication - call align448 -C ------------------------------------------------- -C - print *,'=== END OF align44 ========================= ' - end - -C ----------------------------------------------------align441 -c 441 arrA4[BLOCK][BLOCK] [BLOCK] [BLOCK] arrB4[][][][] -c ALIGN arrB[i][j][n][m] WITH arrA[i][ j][n][m] normal - - subroutine align441 - integer, parameter :: AN1=5,AN2=5,AN3=5,AN4=5 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA[k1i*i+li][k2j*j+lj] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - - - tname='align441' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align442 -c 442 ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] rotation - - subroutine align442 - integer, parameter :: AN1=4,AN2=4,AN3=4,AN4=4 - integer, parameter :: BN1=4,BN2=4,BN3=4,BN4=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k4i*n+li,k1j*i+lj,k2n*j+ln,k3m*n+lm) - integer, parameter :: k1i=0,k2i=0,k3i=0,k4i=1,li=0 - integer, parameter :: k1j=1,k2j=0,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=1,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=1,k4m=0,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k4i*m+li,k1j*i+lj,k2n*j+ln,k3m*n+lm) - - - tname='align442' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k4i) * k4i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * ((n-ln) .eq.(((n-ln)/k2n) * k2n)) .and. - * ((m-lm) .eq.(((m-lm)/k3m) *k3m)) .and. - * (((i-li)/k4i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((n-ln)/k2n) .gt. 0) .and. - * (((m-lm)/k3m) .gt. 0) .and. - * (((i-li)/k4i) .le. BN4) .and. - * (((j-lj)/k1j) .le. BN1) .and. - * (((n-ln)/k2n) .le. BN2) .and. - * (((m-lm)/k3m) .le. BN3) - * ) then - mb = (i-li)/k4i - ib = (j-lj)/k1j - jb = (n-ln)/k2n - nb = (m-lm)/k3m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align443 -c 443 ALIGN arrB[i][j][k][l] WITH arrA[i][2* j][k][3*l] stretching - - subroutine align443 - integer, parameter :: AN1=3,AN2=4,AN3=3,AN4=6 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=3,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - - tname='align443' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align444 -c 444 ALIGN arrB[i][j][k][l] WITH arrA[i+2][ j][k][ l+3] shift - - subroutine align444 - integer, parameter :: AN1=4,AN2=4,AN3=3,AN4=6 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - - - tname='align444' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s = 0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align445 -c 445 ALIGN arrB[i][j][k][l] WITH arrA[i][ j][-k+4][- l+3] reverse - - subroutine align445 - integer, parameter :: AN1=4,AN2=4,AN3=8,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,k4n=0,ln=4 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=-1,lm=3 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - - - tname='align445' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align446 -c 446 ALIGN arrB[i][j][ ][l] WITH arrA[i][ j][2][ l] -c compression and replication !! - - subroutine align446 - integer, parameter :: AN1=4,AN2=4,AN3=4,AN4=4 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][*][m] WITH arrA4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=2 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,*,m) WITH A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - - - tname='align446' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(k,ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if (n .eq. ln ) then - do k = 1,BN3 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = k - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------align447 -c 447 ALIGN arrB[][j][k][i] WITH arrA[i][ j][ ][ k] -c compression and replication !! - - subroutine align447 - integer, parameter :: AN1=4,AN2=4,AN3=4,AN4=4 - integer, parameter :: BN1=4,BN2=4,BN3=4,BN4=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[*][j][n][i] WITH arrA4(k1i*i+li,k2j*j+lj,*,k3m*n+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=1,k4m=0,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(*,j,n,i) WITH A4(k1i*i+li,k2j*j+lj,*,k3m*n+lm) - - tname='align447' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(k,ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - do k = 1,BN1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((m-lm) .eq.(((m-lm)/k3m) *k3m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((m-lm)/k3m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN4) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((m-lm)/k3m) .le. BN3) - * ) then - mb = (i-li)/k1i - jb = (j-lj)/k2j - ib = k - nb = (m-lm)/k3m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s,cs - print *,B4 - endif - deallocate (B4,A4) - - end -C ----------------------------------------------------align448 -c 448 ALIGN arrB[][i][j][] WITH arrA[i][ j][1][3] -c compression and replication - - subroutine align448 - integer, parameter :: AN1=4,AN2=4,AN3=4,AN4=4 - integer, parameter :: BN1=4,BN2=4,BN3=4,BN4=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[*][i][j][*] WITH arrA4(k1i*i+li,k2j*j+lj,ln,lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=1 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=0,lm=3 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(*,i,j,*) WITH A4(k1i*i+li,k2j*j+lj,ln,lm) - - tname='align448' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(k,l,ib,jb,nb,mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ((n .eq. ln ) .and. (m .eq. lm)) then - do k = 1,BN1 - do l = 1,BN4 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN2) .and. - * (((j-lj)/k2j) .le. BN3) - * ) then - jb = (i-li)/k1i - nb = (j-lj)/k2j - ib = k - mb = l - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B4 - endif - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignfloat11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignfloat11.fdv deleted file mode 100644 index ac8850f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignfloat11.fdv +++ /dev/null @@ -1,449 +0,0 @@ - program ALIGNFLOAT11 - -c TESTING align CLAUSE . - - print *,'===START OF alignfloat11========================' -C -------------------------------------------------- -c 111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] normal - call align111 -C -------------------------------------------------- -c 1111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] small array - call align1111 -C -------------------------------------------------- -c 1112 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[2*i+1] small array - call align1112 -C -------------------------------------------------- -c 112 ALIGN arrB[i] WITH arrA[i+4] shift along i - call align112 -C -------------------------------------------------- -c 113 ALIGN arrB[i] WITH arrA[-i+9] reverse on i -c call align113 -C -------------------------------------------------- -c 114 ALIGN arrB[i] WITH arrA[2*i+8] stretching along i - call align114 -C -------------------------------------------------- -c 115 ALIGN arrB[*] WITH arrA[*] - call align115 -C -------------------------------------------------- -C -C - print *,'=== END OF alignfloat11 ========================= ' - end - -C ----------------------------------------------------align111 -c 111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] normal - subroutine align111 - integer, parameter :: AN1=8,BN1=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=0 - character*9 tname - integer, allocatable :: A1(:) - real, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align111' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align1111 -c 1111 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[i] small array - subroutine align1111 - integer, parameter :: AN1=5,BN1=2,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=0 - character*9 tname - real, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align1111' - allocate (A1(AN1),B1(BN1)) - erri= ER -c call stralign1111 - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align1112 -c 1112 arrA1[BLOCK] arrB1[ ] ALIGN arrB[i] WITH arrA[2*i+1] small array - subroutine align1112 - integer, parameter :: AN1=5,BN1=2,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=1 - character*9 tname - complex, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align1112' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align112 -c 112 ALIGN arrB[i] WITH arrA[i+4] shift along i - subroutine align112 - integer, parameter :: AN1=8,BN1=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=4 - character*9 tname - real, allocatable :: B1(:) - complex, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align112' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align113 -c 113 ALIGN arrB[i] WITH arrA[-i+9] reverse on i - subroutine align113 - integer, parameter :: AN1=8,BN1=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=-1,k2i=0,li=9 - character*9 tname - real, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align113' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align114 -c 114 ALIGN arrB[i] WITH arrA[2*i+8] stretching along i - subroutine align114 - integer, parameter :: AN1=24,BN1=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=8 - character*9 tname - integer, allocatable :: A1(:) - complex, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) - - tname='align114' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ----------------------------------------------------align115 -c 115 ALIGN arrB[*] WITH arrA[*] - subroutine align115 - integer, parameter :: AN1=24,BN1=8,NL=1000,ER=10000 -c parameters for ALIGN arrB[*] WITH arrA[*] - integer, parameter :: k1i=0,k2i=0,li=0 - character*9 tname - integer, allocatable :: A1(:) - real, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(*) WITH A1(*) - - tname='align115' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction(min(erri)), private(j) - do i=1,AN1 - do j=1,BN1 - if (B1(j) .eq.(j)) then - else - erri = min(erri,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus21.fdv deleted file mode 100644 index 95d8a09..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus21.fdv +++ /dev/null @@ -1,569 +0,0 @@ - program ALIGNPLUS21 - -c TESTING align CLAUSE . -c arrA2[*][ BLOCK] arrB1[] -c or arrA2[ BLOCK][*] arrB1[] - print *, '===START OF alignplus21==================' -C -------------------------------------------------- -c 211 ALIGN arrB[i] WITH arrA[1][i] vector arrB on section -* (the first line of arrA) - call align211 -C ------------------------------------------------- -c 212 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - call align212 -C ------------------------------------------------- -c 213 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - call align213 -C ------------------------------------------------- -c 214 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - call align214 -C -------------------------------------------------- -c 215 ALIGN arrB[i] WITH arrA[1][i] vector arrB on section -* (the first line of arrA) - call align215 -C ------------------------------------------------- -c 216 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - call align216 -C ------------------------------------------------- -c 217 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - call align217 -C ------------------------------------------------- -c 218 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - call align218 -C ------------------------------------------------- - print *, '=== END OF alignplus21 ==================' -C -C - end - -C ----------------------------------------------------align211 -c 211 arrA2[*][ BLOCK] arrB1[] ALIGN arrB[i] WITH arrA[1][i]vector arrB on section -* (the first line of arrA) - subroutine align211 - integer, parameter :: AN1=8,AN2=8,BN1=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(1,i) - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(*,BLOCK) -!dvm$ ALIGN B1(i) WITH A2(1,i) - - tname='align211' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((i .eq. 1) ) then - if ( - * (j .le. BN1) - * ) then - ib = j - B1(ib) = ib - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=1 - ja=i - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = i*NL/10+j - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align212 -c 212 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - subroutine align212 - integer, parameter :: AN1=14,AN2=3,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,lj) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=2 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer :: erri, i - -!dvm$ distribute A2(*,BLOCK) -!dvm$ ALIGN B1(i) WITH A2(k1i*i+li,lj) - - tname='align212' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((j .eq. lj) .and. - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) - * ) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i*i+li - ja=lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align213 -c 213 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - subroutine align213 - integer, parameter :: AN1=8,AN2=8,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[][k1j * i + lj] - integer, parameter :: k1i=0,k2i=0,li=0,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer s,cs,erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(*,BLOCK) -!dvm$ ALIGN B1(i) WITH A2(*,k1j * i + lj) - - tname='align213' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN1) )then - ib = (j-lj)/k1j - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = ((1 + BN1)* BN1/ 2) -c write (*,*) erri,s,cs - - if ((erri .eq.ER) .and. - * (s .eq.cs )) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align214 -c 214 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - subroutine align214 - integer, parameter :: AN1=28,AN2=8,BN1=5,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,*) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer s,erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(*,BLOCK) -!dvm$ ALIGN B1(i) WITH A2(k1i*i+li,*) - - tname='align214' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri )), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) )then - ib = (i-li)/k1i - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - if ((erri .eq.ER) .and. - * (s .eq. ((1 + BN1)* BN1/ 2))) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s - endif - deallocate(B1,A2) - end -C ----------------------------------------------------align215 -c 215 arrA2[*][ BLOCK] arrB1[] ALIGN arrB[i] WITH arrA[1][i]vector arrB on section -* (the first line of arrA) - subroutine align215 - integer, parameter :: AN1=8,AN2=8,BN1=4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(1,i) - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,*) -!dvm$ ALIGN B1(i) WITH A2(1,i) - - tname='align215' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((i .eq. 1) ) then - if ( - * (j .le. BN1) - * ) then - ib = j - B1(ib) = ib - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=1 - ja=i - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align216 -c 216 ALIGN arrB[i] WITH arrA[2*i+2][2] vector arrB on section -* (the second column of arrA) with stretching and shift - subroutine align216 - integer, parameter :: AN1=14,AN2=3,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,lj) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=2 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer :: erri, i - -!dvm$ distribute A2(BLOCK,*) -!dvm$ ALIGN B1(i) WITH A2(k1i*i+li,lj) - - tname='align216' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =0 - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ((j .eq. lj) .and. - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) - * ) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ) ), private(ia,ja) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - ia=k1i*i+li - ja=lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align217 -c 217 ALIGN arrB[i] WITH arrA[][i] vector replication on every line of arrA - subroutine align217 - integer, parameter :: AN1=8,AN2=8,BN1=6,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[][k1j * i + lj] - integer, parameter :: k1i=0,k2i=0,li=0,k1j=1,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer s,cs,erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,*) -!dvm$ ALIGN B1(i) WITH A2(*,k1j * i + lj) - - tname='align217' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN1) )then - ib = (j-lj)/k1j - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = ((1 + BN1)* BN1/ 2) - if ((erri .eq.ER) .and. - * (s .eq.cs )) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A2) - - end -C ----------------------------------------------------align218 -c 218 ALIGN arrB[i] WITH arrA[2*i+2][ ] vector arrB on replication on -* every column of arrA with stretching and shift - subroutine align218 - integer, parameter :: AN1=28,AN2=8,BN1=5,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(k1i*i+li,*) - integer, parameter :: k1i=2,k2i=0,li=2,k1j=0,k2j=0,lj=0 - character*9 tname - integer, allocatable :: A2(:,:), B1(:) - integer s,erri,i,j,ia,ja,ib,jb - -!dvm$ distribute A2(BLOCK,*) -!dvm$ ALIGN B1(i) WITH A2(k1i*i+li,*) - - tname='align218' - allocate (A2(AN1,AN2),B1(BN1)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A2,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri )), private(ib) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) )then - ib = (i-li)/k1i - if (B1(ib) .eq.(ib)) then - else - erri = min(erri,ib) - endif - endif - enddo - enddo - -!dvm$ parallel (i) on B1(i), reduction( min( erri ),sum(s) ) - do i=1,BN1 - s = s + B1(i) - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - if ((erri .eq.ER) .and. - * (s .eq. ((1 + BN1)* BN1/ 2))) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri,s - endif - deallocate (B1,A2) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus33.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus33.fdv deleted file mode 100644 index 4a1c6e8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/ALIGN/alignplus33.fdv +++ /dev/null @@ -1,478 +0,0 @@ - program ALIGNPLUS33 - -c TESTING align CLAUSE . - - print *, '====START OF alignplus33================' -c -------------------------------------------------- -c 331 arrA3[*][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][k] WITH arrA[i][ j][k] normal - call align331 -C -------------------------------------------------- -c 332 arrA3[*][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 3][i] - call align332 -c -------------------------------------------------- -c 333 arrA3[BLOCK][*] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][k] WITH arrA[i+4][2*j+1][3*k+1] -C call align333 -C -------------------------------------------------- -c 334 arrA3[BLOCK][BLOCK] [*] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 7][2*i-1] - call align334 -C -------------------------------------------------- -c 335 arrA3[BLOCK][*] [BLOCK] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 1][i] - call align335 -C ------------------------------------------------- - print *, '==== END OF alignplus33 ================' -C - end - -C ----------------------------------------------------align331 -c 331 arrA3[*][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][n] WITH arrA[i][ j][n] normal - - subroutine align331 - integer, parameter :: AN1=5,AN2=5,AN3=5,BN1=2,BN2=2,BN3=2 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -cdvm$ distribute A3(*,BLOCK,BLOCK) -cdvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) - - tname='align331' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - s=0 - m=-1 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B3) -*dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =0 - enddo - enddo - enddo - -*dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo - -*dvm$ parallel (i,j,n) on B3(i,j,n), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000 - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------align332 -c 332 arrA3[*][BLOCK] [BLOCK] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 3][i] normal - - subroutine align332 - integer, parameter :: AN1=4,AN2=4,AN3=4,BN1=2,BN2=2,BN3=2 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[*][i][*] WITH arrA[*][lj][k1n*i+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=0,k3j=0,lj=3 - integer, parameter :: k1n=1,k2n=0,k3n=0,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,k,l,ia,ja,na,ma,ib,jb,nb,mb, - * Avalue,Bvalue - -cdvm$ distribute A3(*,BLOCK,BLOCK) -cdvm$ ALIGN B3(*,i,*) WITH A3(*,lj,k1n*i+ln) - - tname='align332' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -*dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(k,l,ib,jb,nb), -!dvm$& reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000 - if ((j .eq. lj ) ) then - do k = 1,BN1 - do l = 1,BN3 - if ( - * ((n-ln) .eq.(((n-ln)/k1n) * k1n)) .and. - * (((n-ln)/k1n) .gt. 0) .and. - * (((n-ln)/k1n) .le. BN2) - * ) then - ib = k - jb = ((n-ln)/k1n) - nb = l - if (B3(ib,jb,nb).eq. - * (ib*NL/10+jb*NL/100+nb*NL/1000))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000) - endif - endif - enddo - enddo - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - cs=0 - s=0 - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------align333 -c 333 arrA3[BLOCK][*] [BLOCK] arrB3[][][] -c ALIGN arrB[i][j][k] WITH arrA[i+4][2*j+1][3*k+1] - - subroutine align333 - integer, parameter :: AN1=8,AN2=8,AN3=13,BN1=4,BN2=3,BN3=4 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=4 - integer, parameter :: k1j=0,k2j=2,k3j=0,lj=1 - integer, parameter :: k1n=0,k2n=0,k3n=3,ln=1 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -cdvm$ distribute A3(BLOCK,*,BLOCK) -cdvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) - - tname='align333' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - s=0 - -!dvm$ actual(erri,s) -!dvm$ region local(A3,B3) -*dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =0 - enddo - enddo - enddo - -*dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo - -*dvm$ parallel (i,j,n) on B3(i,j,n), reduction( min( erri ),sum(s) ) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri,s) - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000 - enddo - enddo - enddo - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------align334 -c 334 arrA3[BLOCK][BLOCK] [*] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 7][2*i-1] - - subroutine align334 - integer, parameter :: AN1=5,AN2=7,AN3=9,BN1=4,BN2=3,BN3=5 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[*][i][*] WITH arrA[*][lj][k1n*i+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=0,k3j=0,lj=7 - integer, parameter :: k1n=2,k2n=0,k3n=0,ln=-1 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,k,l,ia,ja,na,ma,ib,jb,nb,mb, - * Avalue,Bvalue - -cdvm$ distribute A3(BLOCK,BLOCK,*) -cdvm$ ALIGN B3(*,i,*) WITH A3(*,lj,k1n*i+ln) - - tname='align334' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -*dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(k,l,ib,jb,nb), -!dvm$& reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000 - if ((j .eq. lj ) ) then - do k = 1,BN1 - do l = 1,BN3 - if ( - * ((n-ln) .eq.(((n-ln)/k1n) * k1n)) .and. - * (((n-ln)/k1n) .gt. 0) .and. - * (((n-ln)/k1n) .le. BN2) - * ) then - ib = k - jb = ((n-ln)/k1n) - nb = l - if (B3(ib,jb,nb).eq. - * (ib*NL/10+jb*NL/100+nb*NL/1000))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000) - endif - endif - enddo - enddo - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - cs=0 - s=0 - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------align335 -c 335 arrA3[BLOCK][*] [BLOCK] arrB3[][][] -c ALIGN arrB[*][i][*] WITH arrA[*][ 1][i] - - subroutine align335 - integer, parameter :: AN1=5,AN2=7,AN3=9,BN1=4,BN2=3,BN3=5 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for ALIGN arrB[*][i][*] WITH arrA[*][lj][k1n*i+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=0,k3j=0,lj=1 - integer, parameter :: k1n=1,k2n=0,k3n=0,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,k,l,ia,ja,na,ma,ib,jb,nb,mb, - * Avalue,Bvalue - -cdvm$ distribute A3(BLOCK,*,BLOCK) -cdvm$ ALIGN B3(*,i,*) WITH A3(*,lj,k1n*i+ln) - - tname='align335' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -*dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(k,l,ib,jb,nb), -!dvm$& reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000 - if ((j .eq. lj ) ) then - do k = 1,BN1 - do l = 1,BN3 - if ( - * ((n-ln) .eq.(((n-ln)/k1n) * k1n)) .and. - * (((n-ln)/k1n) .gt. 0) .and. - * (((n-ln)/k1n) .le. BN2) - * ) then - ib = k - jb = ((n-ln)/k1n) - nb = l - if (B3(ib,jb,nb).eq. - * (ib*NL/10+jb*NL/100+nb*NL/1000))then - else - erri = min(erri,i*NL/10 + j*NL/100+ n*NL/1000) - endif - endif - enddo - enddo - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - cs=0 - s=0 - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri,s,cs -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons01234.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons01234.fdv deleted file mode 100644 index b72b0b2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons01234.fdv +++ /dev/null @@ -1,4834 +0,0 @@ - program CONS01234 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING DISTRIBUTION WITH NO BLOCKS. - - print *,'===START OF CONS01234========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons0101 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons0102 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons0103 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons0104 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons0105 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons0106 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons0107 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons0108 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons0109 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons0110 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons0111 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons0112 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons0113 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons0114 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons0115 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons0116 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons0201 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons0202 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons0203 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons0204 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons0205 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons0206 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons0207 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons0208 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons0209 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons0210 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons0211 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons0212 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons0213 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons0214 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons0215 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons0216 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons0301 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons0302 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons0303 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons0304 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons0305 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons0306 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons0307 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons0308 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons0309 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons0310 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons0311 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons0312 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons0313 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons0314 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons0315 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons0316 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons0401 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons0402 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons0403 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons0404 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons0405 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons0406 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons0407 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons0408 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons0409 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons0410 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons0411 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons0412 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons0413 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons0414 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons0415 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons0416 -C -------------------------------------------------- -C - print *,'=== END OF CONS01234 ========================= ' - end -C ---------------------------------------------cons0101 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS0101 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N),C(N)) - tname='CONS0101' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0102 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS0102 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N),W(N),C(N)) - tname='CONS0102' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0103 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0103 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ DISTRIBUTE ( * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N),W(N),C(N)) - tname='CONS0103' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!DVM$ PARALLEL (I) ON A(I), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0104 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0104 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N),C(N)) - tname='CONS0104' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0105 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS0105 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N),C(N,N)) - tname='CONS0105' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0106 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS0106 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N),W(N,N),C(N,N)) - tname='CONS0106' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(W(I,:)) - DO I = 1, N - DO J = 1, N - W(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0107 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0107 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ DISTRIBUTE ( * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N),W(N,N),C(N,N)) - tname='CONS0107' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J), CONSISTENT(W(I,:)) - DO I = 1, N - DO J = 1, N - W(I,J) = A(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0108 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0108 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N),C(N,N)) - tname='CONS0108' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0109 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS0109 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N),C(N,N,N)) - tname='CONS0109' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0110 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS0110 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0110' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(W(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - W(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0111 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0111 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ DISTRIBUTE ( * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0111' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J,K), CONSISTENT(W(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - W(I,J,K) = A(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0112 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0112 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N),C(N,N,N)) - tname='CONS0112' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0113 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS0113 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0113' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0114 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS0114 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0114' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(W(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - W(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0115 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0115 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ DISTRIBUTE ( * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0115' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J,K,L), CONSISTENT(W(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - W(I,J,K,L)=A(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0116 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0116 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( * ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0116' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0201 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS0201 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS0201' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0202 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS0202 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N),W(N),C(N)) - tname='CONS0202' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0203 -C consistent arrays with 1 dimensions - subroutine CONS0203 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ DISTRIBUTE ( *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N),W(N),C(N)) - tname='CONS0203' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0204 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0204 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS0204' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0205 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS0205 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS0205' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0206 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS0206 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0206' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0207 -C consistent arrays with 2 dimensions - subroutine CONS0207 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ DISTRIBUTE ( *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0207' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0208 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0208 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS0208' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0209 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS0209 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS0209' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0210 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS0210 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0210' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0211 -C consistent arrays with 3 dimensions - subroutine CONS0211 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ DISTRIBUTE ( *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0211' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = A(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0212 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0212 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS0212' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0213 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS0213 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0213' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0214 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS0214 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0214' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0215 -C consistent arrays with 4 dimensions - subroutine CONS0215 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ DISTRIBUTE ( *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0215' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=A(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0216 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0216 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0216' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0301 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS0301 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS0301' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0302 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS0302 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS0302' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0303 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0303 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS0303' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0304 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0304 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS0304' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0305 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS0305 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS0305' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0306 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS0306 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0306' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0307 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0307 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0307' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0308 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0308 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS0308' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0309 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS0309 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS0309' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0310 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS0310 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0310' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0311 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0311 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0311' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0312 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0312 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS0312' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0313 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS0313 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0313' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0314 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS0314 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0314' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0315 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0315 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0315' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0316 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0316 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0316' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0401 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS0401 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS0401' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0402 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS0402 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS0402' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0403 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0403 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS0403' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0404 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0404 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS0404' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0405 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS0405 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS0405' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0406 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS0406 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0406' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0407 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0407 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS0407' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0408 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0408 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS0408' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0409 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS0409 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS0409' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0410 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS0410 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0410' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0411 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0411 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS0411' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0412 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0412 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS0412' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0413 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS0413 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0413' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons0414 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS0414 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0414' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons0415 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS0415 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ DISTRIBUTE ( *, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS0415' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons0416 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS0416 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS0416' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons11.fdv deleted file mode 100644 index fea541c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons11.fdv +++ /dev/null @@ -1,1113 +0,0 @@ - program CONS11 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING ( BLOCK ) DISTRIBUTION. - - print *,'===START OF CONS11========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1101 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1102 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1103 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1104 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1105 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1106 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1107 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1108 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1109 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1110 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1111 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1112 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1113 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1114 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1115 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1116 -C -------------------------------------------------- - -C - print *,'=== END OF CONS11 ========================= ' - end -C ---------------------------------------------cons1101 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1101 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N),C(N)) - tname='CONS1101' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1102 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1102 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N),W(N),C(N)) - tname='CONS1102' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1103 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1103 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N),W(N),C(N)) - tname='CONS1103' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!DVM$ PARALLEL (I) ON A(I), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1104 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1104 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N),C(N)) - tname='CONS1104' - DO I = 1, N - C(I) = I - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1105 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1105 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N),C(N,N)) - tname='CONS1105' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1106 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1106 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N),W(N,N),C(N,N)) - tname='CONS1106' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(W(I,:)) - DO I = 1, N - DO J = 1, N - W(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1107 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1107 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N),W(N,N),C(N,N)) - tname='CONS1107' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J), CONSISTENT(W(I,:)) - DO I = 1, N - DO J = 1, N - W(I,J) = A(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1108 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1108 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N),C(N,N)) - tname='CONS1108' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J), CONSISTENT(V(I,:)) - DO I = 1, N - DO J = 1, N - V(I,J) = B(I) + (N - 1) * J - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1109 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1109 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N),C(N,N,N)) - tname='CONS1109' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1110 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1110 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1110' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(W(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - W(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1111 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1111 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1111' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J,K), CONSISTENT(W(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - W(I,J,K) = A(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1112 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1112 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N),C(N,N,N)) - tname='CONS1112' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K), CONSISTENT(V(I,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - V(I,J,K) = B(I) + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1113 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1113 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1113' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1114 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1114 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1114' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(W(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - W(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1115 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1115 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:),A(:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N),A(N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1115' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON A(I) - DO I = 1, N - A(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON A(I), private(J,K,L), CONSISTENT(W(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - W(I,J,K,L)=A(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1116 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1116 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1116' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (I) ON B(I) - DO I = 1, N - B(I) = I - ENDDO -!DVM$ PARALLEL (I) ON B(I), private(J,K,L), CONSISTENT(V(I,:,:,:)) - DO I = 1, N - DO J = 1, N - DO K = 1, N - DO L = 1, N - V(I,J,K,L)=B(I)+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (I) ON B(I), REDUCTION(MIN(ERROR)) - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons1234.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons1234.fdv deleted file mode 100644 index 2adb18e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons1234.fdv +++ /dev/null @@ -1,11332 +0,0 @@ - program CONS1234 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING DISTRIBUTION WITH ONE BLOCK. - - print *,'===START OF CONS1234========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1201 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1202 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1203 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1204 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1205 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1206 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1207 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1208 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1209 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1210 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1211 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1212 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1213 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1214 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1215 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1216 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1217 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1218 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1219 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1220 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1221 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1222 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1223 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1224 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1225 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1226 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1227 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1228 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1229 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1230 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1231 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1232 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1301 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1302 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1303 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1304 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1305 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1306 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1307 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1308 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1309 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1310 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1311 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1312 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1313 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1314 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1315 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1316 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1317 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1318 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1319 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1320 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1321 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1322 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1323 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1324 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1325 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1326 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1327 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1328 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1329 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1330 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1331 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1332 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1333 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1334 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1335 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1336 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1337 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1338 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1339 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1340 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1341 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1342 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1343 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1344 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1345 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1346 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1347 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1348 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1401 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1402 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1403 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1404 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1405 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1406 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1407 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1408 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1409 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1410 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1411 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1412 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1413 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1414 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1415 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1416 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1417 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1418 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1419 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1420 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1421 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1422 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1423 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1424 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1425 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1426 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1427 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1428 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1429 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1430 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1431 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1432 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1433 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1434 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1435 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1436 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1437 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1438 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1439 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1440 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1441 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1442 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1443 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1444 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1445 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1446 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1447 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1448 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons1449 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons1450 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons1451 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons1452 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons1453 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons1454 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons1455 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons1456 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons1457 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons1458 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons1459 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons1460 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons1461 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons1462 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons1463 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons1464 -C -------------------------------------------------- -C - print *,'=== END OF CONS1234 ========================= ' - end -C ---------------------------------------------cons1201 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1201 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS1201' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1202 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1202 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N),W(N),C(N)) - tname='CONS1202' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1203 -C consistent arrays with 1 dimensions - subroutine CONS1203 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N),W(N),C(N)) - tname='CONS1203' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1204 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1204 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS1204' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1205 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1205 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS1205' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1206 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1206 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1206' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1207 -C consistent arrays with 2 dimensions - subroutine CONS1207 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1207' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1208 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1208 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS1208' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1209 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1209 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS1209' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1210 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1210 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1210' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1211 -C consistent arrays with 3 dimensions - subroutine CONS1211 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1211' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = A(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1212 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1212 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS1212' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1213 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1213 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1213' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1214 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1214 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1214' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1215 -C consistent arrays with 4 dimensions - subroutine CONS1215 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1215' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=A(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1216 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1216 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1216' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1217 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1217 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS1217' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1218 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1218 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N),W(N),C(N)) - tname='CONS1218' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1219 -C consistent arrays with 1 dimensions - subroutine CONS1219 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N),W(N),C(N)) - tname='CONS1219' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1220 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1220 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS1220' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1221 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1221 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS1221' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1222 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1222 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1222' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1223 -C consistent arrays with 2 dimensions - subroutine CONS1223 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1223' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1224 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1224 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS1224' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1225 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1225 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS1225' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1226 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1226 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1226' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1227 -C consistent arrays with 3 dimensions - subroutine CONS1227 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1227' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = A(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1228 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1228 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS1228' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1229 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1229 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1229' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1230 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1230 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1230' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1231 -C consistent arrays with 4 dimensions - subroutine CONS1231 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1231' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=A(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1232 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1232 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1232' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1301 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1301 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1301' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1302 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1302 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS1302' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1303 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1303 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS1303' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1304 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1304 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1304' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1305 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1305 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1305' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1306 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1306 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1306' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1307 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1307 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1307' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1308 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1308 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1308' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1309 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1309 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1309' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1310 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1310 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1310' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1311 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1311 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1311' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1312 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1312 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1312' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1313 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1313 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1313' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1314 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1314 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1314' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1315 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1315 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1315' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1316 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1316 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1316' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1317 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1317 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1317' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1318 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1318 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS1318' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1319 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1319 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS1319' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1320 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1320 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1320' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1321 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1321 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1321' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1322 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1322 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1322' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1323 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1323 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1323' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1324 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1324 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1324' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1325 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1325 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1325' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1326 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1326 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1326' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1327 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1327 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1327' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1328 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1328 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1328' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1329 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1329 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1329' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1330 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1330 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1330' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1331 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1331 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1331' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1332 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1332 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1332' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1333 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1333 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1333' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1334 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1334 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS1334' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1335 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1335 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS1335' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1336 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1336 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS1336' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1337 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1337 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1337' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1338 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1338 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1338' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1339 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1339 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1339' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1340 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1340 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS1340' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1341 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1341 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1341' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1342 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1342 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1342' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1343 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1343 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1343' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1344 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1344 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1344' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1345 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1345 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1345' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1346 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1346 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1346' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1347 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1347 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1347' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1348 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1348 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1348' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1401 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1401 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1401' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1402 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1402 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1402' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1403 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1403 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1403' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1404 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1404 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1404' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1405 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1405 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1405' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1406 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1406 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1406' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1407 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1407 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1407' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1408 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1408 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1408' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1409 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1409 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1409' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1410 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1410 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1410' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1411 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1411 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1411' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1412 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1412 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1412' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1413 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1413 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1413' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1414 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1414 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1414' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1415 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1415 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1415' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1416 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1416 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1416' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1417 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1417 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1417' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1418 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1418 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1418' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1419 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1419 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1419' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1420 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1420 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1420' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1421 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1421 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1421' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1422 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1422 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1422' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1423 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1423 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1423' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1424 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1424 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1424' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1425 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1425 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1425' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1426 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1426 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1426' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1427 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1427 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1427' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1428 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1428 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1428' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1429 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1429 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1429' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1430 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1430 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1430' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1431 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1431 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1431' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1432 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1432 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1432' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1433 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1433 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1433' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1434 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1434 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1434' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1435 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1435 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1435' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1436 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1436 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1436' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1437 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1437 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1437' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1438 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1438 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1438' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1439 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1439 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1439' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1440 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1440 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1440' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1441 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1441 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1441' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1442 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1442 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1442' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1443 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1443 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1443' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1444 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1444 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1444' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1445 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1445 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1445' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1446 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1446 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1446' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1447 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1447 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1447' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1448 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1448 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1448' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1449 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS1449 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1449' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1450 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS1450 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1450' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1451 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1451 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS1451' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1452 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1452 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS1452' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1453 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS1453 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1453' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1454 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS1454 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1454' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1455 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1455 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS1455' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1456 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1456 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS1456' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1457 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS1457 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1457' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1458 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS1458 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1458' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1459 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1459 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS1459' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1460 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1460 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS1460' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1461 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS1461 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1461' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons1462 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS1462 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1462' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons1463 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS1463 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS1463' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons1464 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS1464 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS1464' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=(I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons22.fdv deleted file mode 100644 index 3449556..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons22.fdv +++ /dev/null @@ -1,1185 +0,0 @@ - program CONS22 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING ( BLOCK, BLOCK ) DISTRIBUTION. - - print *,'===START OF CONS22========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2201 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2202 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2203 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2204 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2205 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2206 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2207 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2208 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2209 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2210 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2211 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2212 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2213 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2214 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2215 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2216 -C -------------------------------------------------- - -C - print *,'=== END OF CONS22 ========================= ' - end -C ---------------------------------------------cons2201 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2201 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS2201' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2202 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2202 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N),W(N),C(N)) - tname='CONS2202' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2203 -C consistent arrays with 1 dimensions - subroutine CONS2203 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N),W(N),C(N)) - tname='CONS2203' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2204 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2204 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N),C(N)) - tname='CONS2204' - DO I = 1, N - C(I) = I + (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2205 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2205 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS2205' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2206 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2206 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2206' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2207 -C consistent arrays with 2 dimensions - subroutine CONS2207 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2207' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2208 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2208 - INTEGER,PARAMETER:: N=16, ER=10000 - integer,allocatable:: B(:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N),C(N,N)) - tname='CONS2208' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2209 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2209 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS2209' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2210 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2210 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2210' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2211 -C consistent arrays with 3 dimensions - subroutine CONS2211 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2211' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K), CONSISTENT(W(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - W(I,J,K) = A(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2212 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2212 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N),C(N,N,N)) - tname='CONS2212' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K), CONSISTENT(V(I,J,:)) - DO J = 1, N - DO I = 1, N - DO K = 1, N - V(I,J,K) = B(I,J) + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2213 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2213 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2213' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2214 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2214 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2214' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2215 -C consistent arrays with 4 dimensions - subroutine CONS2215 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:),A(:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N),A(N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2215' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J) - DO J = 1, N - DO I = 1, N - A(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J), private(K,L), CONSISTENT(W(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - W(I,J,K,L)=A(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2216 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2216 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2216' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (J,I) ON B(I,J) - DO J = 1, N - DO I = 1, N - B(I,J) = I+(N-1)*J - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J), private(K,L), CONSISTENT(V(I,J,:,:)) - DO J = 1, N - DO I = 1, N - DO L = 1, N - DO K = 1, N - V(I,J,K,L)=B(I,J)+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (J,I) ON B(I,J), REDUCTION(MIN(ERROR)) - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons234.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons234.fdv deleted file mode 100644 index c5d2cba..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons234.fdv +++ /dev/null @@ -1,11628 +0,0 @@ - program CONS234 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING DISTRIBUTION WITH TWO BLOCKS. - - print *,'===START OF CONS234========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2301 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2302 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2303 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2304 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2305 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2306 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2307 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2308 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2309 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2310 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2311 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2312 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2313 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2314 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2315 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2316 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2317 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2318 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2319 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2320 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2321 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2322 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2323 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2324 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2325 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2326 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2327 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2328 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2329 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2330 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2331 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2332 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2333 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2334 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2335 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2336 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2337 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2338 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2339 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2340 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2341 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2342 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2343 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2344 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2345 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2346 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2347 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2348 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2401 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2402 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2403 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2404 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2405 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2406 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2407 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2408 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2409 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2410 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2411 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2412 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2413 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2414 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2415 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2416 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2417 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2418 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2419 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2420 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2421 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2422 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2423 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2424 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2425 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2426 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2427 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2428 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2429 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2430 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2431 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2432 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2433 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2434 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2435 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2436 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2437 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2438 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2439 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2440 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2441 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2442 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2443 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2444 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2445 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2446 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2447 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2448 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2449 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2450 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2451 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2452 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2453 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2454 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2455 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2456 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2457 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2458 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2459 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2460 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2461 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2462 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2463 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2464 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2465 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2466 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2467 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2468 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2469 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2470 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2471 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2472 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2473 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2474 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2475 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2476 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2477 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2478 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2479 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2480 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons2481 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons2482 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons2483 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons2484 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons2485 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons2486 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons2487 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons2488 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons2489 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons2490 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons2491 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons2492 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons2493 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons2494 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons2495 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons2496 -C -------------------------------------------------- -C - print *,'=== END OF CONS234 ========================= ' - end -C ---------------------------------------------cons2301 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2301 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2301' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2302 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2302 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS2302' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2303 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2303 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS2303' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2304 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2304 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2304' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2305 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2305 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2305' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2306 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2306 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2306' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2307 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2307 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2307' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2308 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2308 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2308' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2309 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2309 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2309' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2310 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2310 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2310' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2311 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2311 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2311' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2312 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2312 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2312' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2313 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2313 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2313' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2314 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2314 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2314' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2315 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2315 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2315' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2316 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2316 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2316' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2317 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2317 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2317' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2318 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2318 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS2318' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2319 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2319 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS2319' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2320 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2320 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2320' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2321 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2321 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2321' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2322 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2322 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2322' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2323 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2323 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2323' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2324 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2324 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2324' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2325 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2325 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2325' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2326 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2326 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2326' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2327 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2327 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2327' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2328 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2328 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2328' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2329 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2329 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2329' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2330 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2330 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2330' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2331 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2331 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2331' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2332 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2332 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2332' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2333 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2333 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2333' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2334 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2334 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS2334' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2335 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2335 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS2335' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2336 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2336 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS2336' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2337 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2337 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2337' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2338 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2338 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2338' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2339 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2339 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2339' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2340 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2340 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS2340' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2341 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2341 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2341' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2342 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2342 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2342' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2343 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2343 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2343' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2344 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2344 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2344' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2345 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2345 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2345' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2346 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2346 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2346' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2347 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2347 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2347' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2348 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2348 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2348' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2401 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2401 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2401' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2402 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2402 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2402' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2403 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2403 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2403' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2404 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2404 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2404' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2405 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2405 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2405' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2406 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2406 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2406' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2407 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2407 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2407' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2408 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2408 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2408' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2409 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2409 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2409' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2410 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2410 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2410' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2411 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2411 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2411' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2412 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2412 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2412' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2413 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2413 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2413' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2414 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2414 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2414' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2415 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2415 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2415' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2416 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2416 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2416' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2417 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2417 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2417' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2418 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2418 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2418' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2419 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2419 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2419' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2420 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2420 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2420' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2421 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2421 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2421' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2422 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2422 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2422' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2423 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2423 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2423' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2424 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2424 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2424' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2425 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2425 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2425' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2426 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2426 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2426' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2427 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2427 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2427' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2428 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2428 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2428' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2429 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2429 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2429' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2430 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2430 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2430' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2431 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2431 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2431' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2432 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2432 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2432' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2433 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2433 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2433' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2434 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2434 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2434' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2435 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2435 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2435' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2436 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2436 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2436' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2437 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2437 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2437' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2438 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2438 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2438' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2439 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2439 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2439' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2440 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2440 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2440' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2441 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2441 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2441' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2442 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2442 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2442' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2443 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2443 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2443' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2444 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2444 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2444' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2445 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2445 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2445' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2446 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2446 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2446' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2447 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2447 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2447' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2448 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2448 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2448' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2449 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2449 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2449' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2450 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2450 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2450' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2451 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2451 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2451' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2452 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2452 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2452' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2453 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2453 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2453' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2454 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2454 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2454' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2455 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2455 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2455' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2456 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2456 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2456' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2457 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2457 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2457' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2458 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2458 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2458' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2459 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2459 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2459' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2460 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2460 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2460' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2461 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2461 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2461' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2462 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2462 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2462' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2463 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2463 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2463' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2464 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2464 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2464' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2465 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2465 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2465' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2466 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2466 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2466' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2467 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2467 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2467' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2468 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2468 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2468' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2469 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2469 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2469' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2470 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2470 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2470' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2471 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2471 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2471' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2472 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2472 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2472' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2473 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2473 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2473' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2474 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2474 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2474' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2475 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2475 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2475' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2476 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2476 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2476' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2477 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2477 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2477' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2478 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2478 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2478' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2479 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2479 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2479' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2480 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2480 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2480' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2481 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS2481 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2481' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2482 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS2482 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2482' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2483 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2483 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS2483' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2484 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2484 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS2484' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2485 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS2485 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2485' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2486 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS2486 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2486' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2487 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2487 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS2487' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2488 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2488 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS2488' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2489 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS2489 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2489' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2490 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS2490 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2490' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2491 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2491 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS2491' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2492 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2492 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS2492' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2493 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS2493 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2493' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons2494 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS2494 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2494' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons2495 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS2495 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS2495' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons2496 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS2496 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS2496' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons33.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons33.fdv deleted file mode 100644 index 99554bd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons33.fdv +++ /dev/null @@ -1,1261 +0,0 @@ - program CONS33 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING ( BLOCK, BLOCK, BLOCK ) DISTRIBUTION. - - print *,'===START OF CONS33========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons3301 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons3302 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons3303 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons3304 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons3305 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons3306 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons3307 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons3308 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons3309 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons3310 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons3311 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons3312 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons3313 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons3314 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons3315 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons3316 -C -------------------------------------------------- - -C - print *,'=== END OF CONS33 ========================= ' - end -C ---------------------------------------------cons3301 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS3301 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS3301' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3302 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS3302 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N),W(N),C(N)) - tname='CONS3302' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3303 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3303 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N),W(N),C(N)) - tname='CONS3303' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3304 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3304 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N),C(N)) - tname='CONS3304' - DO I = 1, N - C(I) = I + (N - 1) + (N - 1) * (N - 1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3305 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS3305 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS3305' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3306 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS3306 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3306' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3307 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3307 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3307' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3308 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3308 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N),C(N,N)) - tname='CONS3308' - DO J = 1, N - DO I = 1, N - C(I,J) = I + (N - 1) * J + (N - 1) * (N - 1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3309 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS3309 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3309' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3310 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS3310 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3310' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3311 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3311 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3311' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3312 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3312 - INTEGER,PARAMETER:: N=16, ER=100000 - integer,allocatable:: B(:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3312' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K) = I + (N - 1) * J + (N - 1) * (N - 1) * K - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3313 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS3313 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3313' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3314 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS3314 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3314' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3315 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3315 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:),A(:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N),A(N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3315' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K), private(L), CONSISTENT(W(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - W(I,J,K,L)=A(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3316 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3316 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3316' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (K,J,I) ON B(I,J,K) - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K) = I+(N-1)*J+(N-1)*(N-1)*K - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), private(L), CONSISTENT(V(I,J,K,:)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - DO L = 1, N - V(I,J,K,L)=B(I,J,K)+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (K,J,I) ON B(I,J,K), REDUCTION(MIN(ERROR)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons34.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons34.fdv deleted file mode 100644 index fe3cc2c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons34.fdv +++ /dev/null @@ -1,5274 +0,0 @@ - program CONS34 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING DISTRIBUTION WITH THREE BLOCKS. - - print *,'===START OF CONS34========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons3401 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons3402 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons3403 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons3404 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons3405 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons3406 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons3407 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons3408 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons3409 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons3410 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons3411 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons3412 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons3413 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons3414 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons3415 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons3416 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons3417 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons3418 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons3419 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons3420 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons3421 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons3422 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons3423 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons3424 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons3425 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons3426 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons3427 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons3428 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons3429 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons3430 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons3431 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons3432 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons3433 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons3434 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons3435 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons3436 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons3437 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons3438 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons3439 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons3440 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons3441 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons3442 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons3443 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons3444 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons3445 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons3446 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons3447 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons3448 -C -------------------------------------------------- - -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons3449 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons3450 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons3451 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons3452 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons3453 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons3454 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons3455 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons3456 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons3457 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons3458 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons3459 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons3460 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons3461 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons3462 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons3463 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons3464 -C -------------------------------------------------- -C - print *,'=== END OF CONS34 ========================= ' - end -C ---------------------------------------------cons3401 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS3401 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3401' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3402 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS3402 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3402' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3403 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3403 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3403' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3404 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3404 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3404' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3405 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS3405 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3405' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3406 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS3406 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3406' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3407 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3407 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3407' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3408 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3408 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3408' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3409 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS3409 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3409' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3410 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS3410 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3410' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3411 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3411 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3411' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3412 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3412 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3412' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3413 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS3413 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3413' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3414 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS3414 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3414' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3415 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3415 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3415' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3416 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3416 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( *, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3416' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3417 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS3417 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3417' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3418 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS3418 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3418' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3419 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3419 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3419' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3420 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3420 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3420' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3421 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS3421 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3421' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3422 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS3422 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3422' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3423 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3423 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3423' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3424 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3424 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3424' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3425 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS3425 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3425' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3426 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS3426 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3426' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3427 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3427 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3427' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3428 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3428 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3428' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3429 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS3429 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3429' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3430 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS3430 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3430' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3431 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3431 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3431' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3432 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3432 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, *, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3432' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3433 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS3433 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3433' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3434 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS3434 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3434' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3435 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3435 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3435' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3436 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3436 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3436' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3437 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS3437 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3437' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3438 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS3438 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3438' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3439 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3439 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3439' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3440 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3440 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3440' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3441 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS3441 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3441' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3442 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS3442 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3442' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3443 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3443 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3443' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3444 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3444 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3444' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3445 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS3445 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3445' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3446 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS3446 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3446' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3447 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3447 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3447' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3448 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3448 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, *, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3448' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3449 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS3449 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3449' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3450 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS3450 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3450' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3451 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3451 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS3451' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3452 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3452 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS3452' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3453 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS3453 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3453' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3454 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS3454 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3454' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3455 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3455 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS3455' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3456 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3456 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS3456' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3457 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS3457 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3457' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3458 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS3458 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3458' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3459 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3459 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS3459' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3460 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3460 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS3460' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3461 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS3461 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3461' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons3462 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS3462 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3462' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons3463 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS3463 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS3463' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons3464 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS3464 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, * ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS3464' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons44.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons44.fdv deleted file mode 100644 index cf27f2e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/CONSISTENT/cons44.fdv +++ /dev/null @@ -1,1333 +0,0 @@ - program CONS44 - -c TESTING OF THE CONSISTENT CLAUSE'. -c CHECKING ( BLOCK, BLOCK, BLOCK, BLOCK ) DISTRIBUTION. - - print *,'===START OF CONS44========================' -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - call cons4401 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - call cons4402 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - call cons4403 -C -------------------------------------------------- -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - call cons4404 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - call cons4405 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - call cons4406 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - call cons4407 -C -------------------------------------------------- -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - call cons4408 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - call cons4409 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - call cons4410 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - call cons4411 -C -------------------------------------------------- -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - call cons4412 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - call cons4413 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - call cons4414 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - call cons4415 -C -------------------------------------------------- -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - call cons4416 -C -------------------------------------------------- - -C - print *,'=== END OF CONS44 ========================= ' - end -C ---------------------------------------------cons4401 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array - subroutine CONS4401 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS4401' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4402 -C consistent arrays with 1 dimensions -C two consistent arrays and one distributed array - subroutine CONS4402 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:),W(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N),W(N),C(N)) - tname='CONS4402' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons4403 -C consistent arrays with 1 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS4403 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:),W(:) - *,C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N),W(N),C(N)) - tname='CONS4403' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!DVM$ PARALLEL (I) ON A(I,1,1,1), CONSISTENT(W(I)) - DO I = 1, N - W(I) = A(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - DO I = 1, N - IF(W(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons4404 -C consistent arrays with 1 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS4404 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:),C(:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N),C(N)) - tname='CONS4404' - DO I = 1, N - C(I)=I+(N-1)+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (I) ON B(I,1,1,1), CONSISTENT(V(I)) - DO I = 1, N - V(I) = B(I,1,1,1) - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO I = 1, N - IF(V(I) .NE. C(I)) THEN - IERR = C(I) - EXIT - ENDIF - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4405 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array - subroutine CONS4405 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS4405' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4406 -C consistent arrays with 2 dimensions -C two consistent arrays and one distributed array - subroutine CONS4406 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:),W(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS4406' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons4407 -C consistent arrays with 2 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS4407 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:),W(:,:) - *,C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N),W(N,N),C(N,N)) - tname='CONS4407' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON A(I,J,1,1), CONSISTENT(W(I,J)) - DO J = 1, N - DO I = 1, N - W(I,J) = A(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - DO J = 1, N - DO I = 1, N - IF(W(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons4408 -C consistent arrays with 2 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS4408 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:),C(:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N),C(N,N)) - tname='CONS4408' - DO J = 1, N - DO I = 1, N - C(I,J)=I+(N-1)*J+(N-1)*(N-1)+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (J,I) ON B(I,J,1,1), CONSISTENT(V(I,J)) - DO J = 1, N - DO I = 1, N - V(I,J) = B(I,J,1,1) - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO J = 1, N - DO I = 1, N - IF(V(I,J) .NE. C(I,J)) THEN - IERR = C(I,J) - EXIT - ENDIF - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4409 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array - subroutine CONS4409 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS4409' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4410 -C consistent arrays with 3 dimensions -C two consistent arrays and one distributed array - subroutine CONS4410 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),W(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS4410' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons4411 -C consistent arrays with 3 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS4411 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:),W(:,:,:) - *,C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N),W(N,N,N),C(N,N,N)) - tname='CONS4411' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON A(I,J,K,1), CONSISTENT(W(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K) = A(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons4412 -C consistent arrays with 3 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS4412 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:),C(:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N),C(N,N,N)) - tname='CONS4412' - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1) - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (K,J,I) ON B(I,J,K,1), CONSISTENT(V(I,J,K)) - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K) = B(I,J,K,1) - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K) .NE. C(I,J,K)) THEN - IERR = C(I,J,K) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4413 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array - subroutine CONS4413 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS4413' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END -C ---------------------------------------------cons4414 -C consistent arrays with 4 dimensions -C two consistent arrays and one distributed array - subroutine CONS4414 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),W(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS4414' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, W, C) - END -C ---------------------------------------------cons4415 -C consistent arrays with 4 dimensions -C two consistent arrays and two distributed arrays - subroutine CONS4415 - INTEGER,PARAMETER:: N=8, ER=10000 - integer,allocatable::B(:,:,:,:),A(:,:,:,:),V(:,:,:,:),W(:,:,:,:) - *,C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: A -!DVM$ CONSISTENT V -!DVM$ CONSISTENT W - allocate (B(N,N,N,N),A(N,N,N,N),V(N,N,N,N),W(N,N,N,N),C(N,N,N,N)) - tname='CONS4415' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - A(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON A(I,J,K,L), CONSISTENT(W(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - W(I,J,K,L)=A(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V, W) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(W(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, A, V, W, C) - END -C ---------------------------------------------cons4416 -C consistent arrays with 4 dimensions -C one consistent array and one distributed array -C big data - subroutine CONS4416 - INTEGER,PARAMETER:: N=16, ER=1000000 - integer,allocatable:: B(:,:,:,:),V(:,:,:,:),C(:,:,:,:) - character*8 tname - INTEGER ERROR,IERR -!DVM$ DISTRIBUTE ( BLOCK, BLOCK, BLOCK, BLOCK ) :: B -!DVM$ CONSISTENT V - allocate (B(N,N,N,N),V(N,N,N,N),C(N,N,N,N)) - tname='CONS4416' - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - C(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ region -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - B(I,J,K,L)=I+(N-1)*J+(N-1)*(N-1)*K+(N-1)*(N-1)*(N-1)*L - ENDDO - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), CONSISTENT(V(I,J,K,L)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - V(I,J,K,L)=B(I,J,K,L) - ENDDO - ENDDO - ENDDO - ENDDO -!dvm$ end region -!dvm$ get_actual (V) - IERR = ER - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - IF(V(I,J,K,L) .NE. C(I,J,K,L)) THEN - IERR = C(I,J,K,L) - EXIT - ENDIF - ENDDO - ENDDO - ENDDO - ENDDO - ERROR = ER -!DVM$ PARALLEL (L,K,J,I) ON B(I,J,K,L), REDUCTION(MIN(ERROR)) - DO L = 1, N - DO K = 1, N - DO J = 1, N - DO I = 1, N - ERROR = MIN(ERROR,IERR) - ENDDO - ENDDO - ENDDO - ENDDO - IF(ERROR .EQ. ER) THEN - call ansyes(tname) - ELSE - call ansno(tname) - ENDIF - deallocate (B, V, C) - END - -C -------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr1.fdv deleted file mode 100644 index bb52d04..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr1.fdv +++ /dev/null @@ -1,350 +0,0 @@ - program DISTR1 - -c TESTING distribute and redistribute CLAUSE . - - print *,'===START OF distr1========================' -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] - call distr11 -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] - call distr12 -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] small array - call distr13 -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array - call distr14 -C -------------------------------------------------- -c 21 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - call distr21 -C -------------------------------------------------- -c 22 DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*] - call distr22 -C -------------------------------------------------- -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][ BLOCK] - call distr23 -C ------------------------------------------------- -C -C - print *,'=== END OF distr1 ========================= ' - end - -C ----------------------------------------------------distr11 -c 11 DISTR arrA1[BLOCK] REDISTR arrA1[*] - subroutine distr11 - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri= ER, i - integer, allocatable :: A1(:) - character(9) :: tname = 'distr11' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ---------------------------------------------distr12 -c 12 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] - subroutine distr12 - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri= ER,i - integer, allocatable :: A1(:) - character(9), parameter :: tname='distr12' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -c !dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ----------------------------------------------------distr13 -c 13 DISTR arrA1[BLOCK] REDISTR arrA1[*] small array - subroutine distr13 - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri= ER,i - integer, allocatable :: A1(:) - character(*), parameter :: tname='distr13 ' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ---------------------------------------------distr14 -c 14 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array - subroutine distr14 - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri=ER,i - integer, allocatable :: A1(:) - character(9) :: tname='distr14' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -c !dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ----------------------------------------------------distr21 -c 21 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - subroutine distr21 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - integer, allocatable :: A2(:,:) - character(9), parameter :: tname='distr21' - -!dvm$ distribute A2(BLOCK,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ----------------------------------------------------distr22 -c 22 DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*] - subroutine distr22 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - integer, allocatable :: A2(:,:) - character(9) :: tname='distr22' - -!dvm$ distribute A2(*,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end - -C ----------------------------------------------------distr23 -c 23 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - subroutine distr23 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - integer, allocatable :: A2(:,:) - character(9) :: tname='distr23' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -c *dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ redistribute A2(*,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr2.fdv deleted file mode 100644 index 35161b5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr2.fdv +++ /dev/null @@ -1,303 +0,0 @@ - program DISTR2 - -c TESTING distr CLAUSE . - - print *,'===START OF distr2========================' -C ------------------------------------------------- -c 24 DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[*][*] - call distr24 -C ------------------------------------------------- -c 32 DISTRIBUTE arrA3[BLOCK][*][ BLOCK] REDISTRIBUTE arrA3[*][BLOCK][BLOCK] - call distr32 -C ------------------------------------------------- -c 33 DISTRIBUTE arrA3[BLOCK][*][ BLOCK] REDISTRIBUTE arrA3[*][BLOCK][*] - call distr33 -C ------------------------------------------------- -c 41 DISTRIBUTE arrA4[*][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - call distr41 -C ------------------------------------------------- -c 42 DISTRIBUTE arrA4[BLOCK][*][BLOCK][*] REDISTRIBUTE arrA4[*][BLOCK][BLOCK][*] - call distr42 -C ------------------------------------------------- -C -C - print *,'=== END OF distr2 ========================= ' - end - - -C ----------------------------------------------------distr24 -c 24 DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[*][*] - subroutine distr24 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,ia,ja,ib,jb - integer, allocatable :: A2(:,:) - character(9) :: tname = 'distr24' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ----------------------------------------------------distr32 -c 32 DISTRIBUTE arrA3[BLOCK] [][ BLOCK] REDISTRIBUTE arrA3[] [BLOCK][BLOCK] - subroutine distr32 - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,ia,ja,na,ib,jb,nb - integer, allocatable :: A3(:,:,:) - character(9) :: tname = 'distr32' - -!dvm$ distribute A3(BLOCK,*,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,BLOCK,BLOCK) -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) .eq.(i*NL/10 + j*NL/100 + n)) then - else - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distr33 -c 33 DISTRIBUTE arrA3[BLOCK] [][ BLOCK] REDISTRIBUTE arrA3[] [BLOCK][BLOCK] - subroutine distr33 - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,ia,ja,na,ib,jb,nb - integer, allocatable :: A3(:,:,:) - character(9) :: tname = 'distr33' - -!dvm$ distribute A3(BLOCK,*,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,BLOCK,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) .eq.(i*NL/10 + j*NL/100 + n)) then - else - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distr41 -c 41 DISTRIBUTE arrA4[*][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - subroutine distr41 - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9) :: tname = 'distr41' - -!dvm$ distribute A4(*,*,BLOCK,BLOCK) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,*,*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - - -C ----------------------------------------------------distr42 -c 42 DISTRIBUTE arrA4[BLOCK][*][BLOCK][*] REDISTRIBUTE arrA4[*][BLOCK][BLOCK][*] - subroutine distr42 - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9) :: tname = 'distr42' - -!dvm$ distribute A4(BLOCK,*,BLOCK,*) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,BLOCK,BLOCK,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr3.fdv deleted file mode 100644 index 4120c7a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr3.fdv +++ /dev/null @@ -1,136 +0,0 @@ - program DISTR3 - -c TESTING distr CLAUSE . - - print *,'===START OF distr3========================' -C ------------------------------------------------- -c 31 DISTRIBUTE arrA3[BLOCK][BLOCK][ BLOCK] REDISTRIBUTE arrA3[*][*][*] - call distr31 -C ------------------------------------------------- -c 43 DISTRIBUTE arrA4[BLOCK][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][*] - call distr43 -C ------------------------------------------------- -C - print *,'=== END OF distr3 ========================= ' - end - - -C ----------------------------------------------------distr31 -c 31 DISTRIBUTE arrA3[BLOCK][BLOCK][ BLOCK] REDISTRIBUTE arrA3[*][*][*] - subroutine distr31 - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri = ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A3(:,:,:) - character(9) :: tname = 'distr31' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) .eq.(i*NL/10 + j*NL/100 + n)) then - else - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distr43 -c 43 DISTRIBUTE arrA4[BLOCK][*][BLOCK][BLOCK] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][*] - subroutine distr43 - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9), parameter :: tname = 'distr43' - -!dvm$ distribute A4(BLOCK,*,BLOCK,BLOCK) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(BLOCK,BLOCK,BLOCK,*) -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr4.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr4.fdv deleted file mode 100644 index 59d7d50..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distr4.fdv +++ /dev/null @@ -1,251 +0,0 @@ - program DISTR4 - -c TESTING distr CLAUSE . - - print *,'===START OF distr4========================' -C ------------------------------------------------- -c 44 DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] - call distr44 -C ------------------------------------------------- -c 45 DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - call distr45 -C ------------------------------------------------- -c 46 DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] -c small array - call distr46 -C ------------------------------------------------- -c 47 DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] -c small array - call distr47 -C ------------------------------------------------- -C - print *,'=== END OF distr4 ========================= ' - end - - -C ----------------------------------------------------distr44 -c 44 DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] - subroutine distr44 - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9), parameter :: tname = 'distr44' - -!dvm$ distribute A4(*,*,*,*) -!dvm$ dynamic A4 - - allocate ( A4(AN1,AN2,AN3,AN4)) - -c *dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ redistribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A4) - - end - -C ----------------------------------------------------distr45 -c 45 DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - subroutine distr45 - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9), parameter :: tname = 'distr45' - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ dynamic A4 - - allocate ( A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,*,*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A4) - - end - -C ----------------------------------------------------distr46 -c 46 DISTRIBUTE arrA4[*][*][*][*] REDISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] - subroutine distr46 - integer, parameter :: AN1=5,AN2=4,AN3=3,AN4=2,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9), parameter :: tname = 'distr46' - -!dvm$ distribute A4(*,*,*,*) -!dvm$ dynamic A4 - - allocate ( A4(AN1,AN2,AN3,AN4)) - -c *dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ redistribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A4) - - end - -C ----------------------------------------------------distr47 -c 47 DISTRIBUTE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - subroutine distr47 - integer, parameter :: AN1=1,AN2=2,AN3=3,AN4=4,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - integer, allocatable :: A4(:,:,:,:) - character(9), parameter :: tname = 'distr47' - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ dynamic A4 - - allocate ( A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,*,*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) .eq.(i*NL/10+j*NL/100+n*NL/1000+m)) then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A4) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distrfloat1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distrfloat1.fdv deleted file mode 100644 index 694873a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR/distrfloat1.fdv +++ /dev/null @@ -1,352 +0,0 @@ - program DISTRFLOAT1 - -c TESTING distribute and redistribute CLAUSE . - - print *, '===START OF distrfloat1==================' -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] - call distrf11 -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] -c call distr12 -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[*] small array - call distrf13 -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array -c call distrf14 -C -------------------------------------------------- -c 21 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - call distrf21 -C -------------------------------------------------- -c 22 DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*] -c call distrf22 -C -------------------------------------------------- -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][ BLOCK] - call distrf23 -C ------------------------------------------------- -C - print *, '=== END OF distrfloat1 ==================' -C - end - -C ----------------------------------------------------distrf11 -c 11 DISTR arrA1[BLOCK] REDISTR arrA1[*] - subroutine distrf11 - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri= ER,i - real, allocatable :: A1(:) - character(10) :: tname = 'distrf11' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ---------------------------------------------distrf12 -c 12 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] - subroutine distrf12 - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri= ER,i - real*8, allocatable :: A1(:) - character(10) :: tname = 'distrf12' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -c *dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ----------------------------------------------------distrf13 -c 13 DISTR arrA1[BLOCK] REDISTR arrA1[*] small array - subroutine distrf13 - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri= ER,i - complex, allocatable :: A1(:) - character(10) :: tname = 'distrf13' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ---------------------------------------------distrf14 -c 14 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[BLOCK] small array - subroutine distrf14 - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri= ER,i - complex*16, allocatable :: A1(:) - character(10), parameter :: tname = 'distrf14' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -c *dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ----------------------------------------------------distrf21 -c 21 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - subroutine distrf21 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i - real, allocatable :: A2(:,:) - character(10), parameter :: tname = 'distrf21' - -!dvm$ distribute A2(BLOCK,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end - -C ----------------------------------------------------distrf22 -c 22 DISTRIBUTE arrA2[*][BLOCK] REDISTRIBUTE arrA2[*][*] - subroutine distrf22 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i - real*8, allocatable :: A2(:,:) - character(10), parameter :: tname = 'distrf22' - -!dvm$ distribute A2(*,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ----------------------------------------------------distrf23 -c 23 DISTRIBUTE arrA2[BLOCK][*] REDISTRIBUTE arrA2[*][ BLOCK] - subroutine distrf23 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i - complex, allocatable :: A2(:,:) - character(10), parameter :: tname = 'distrf23' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -c *dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ redistribute A2(*,BLOCK) - -!dvm$ actual(erri) -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .eq.(i*NL+j)) then - else - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen1.fdv deleted file mode 100644 index c89bf3e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen1.fdv +++ /dev/null @@ -1,979 +0,0 @@ - program DISTRGEN1 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! GEN_BLOCK, BLOCK, * distributions - - integer nproc - number_of_processors()=1 - - print *,'===START OF distrgen1 ========================' - - nproc = number_of_processors() - - if (nproc > 4 ) then ! may be temporary - goto 1 - endif - -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1 [GEN_BLOCK] -c REDISTRIBUTE arrA1[BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrg11 (nproc) -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[BLOCK] - call distrg12 (nproc) -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1 [GEN_BLOCK] -c REDISTRIBUTE arrA1[*] -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrg13 (nproc) -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[*] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[*] - call distrg14 (nproc) -C -------------------------------------------------- -c 15 DISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrg15 (nproc) -C -------------------------------------------------- -c 151 DISTRIBUTE arrA1[GEN_BLOCK] -c with 0 in BS.1 -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrg151 (nproc) -C -------------------------------------------------- -c 152 DISTRIBUTE arrA1[GEN_BLOCK] -c with 0 in BS.2 -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrg152 (nproc) -C -------------------------------------------------- -c 21 DISTRIBUTE arrA2[BLOCK][*] -c REDISTRIBUTE arrA2[*][GEN_BLOCK] - call distrg21 (nproc) -C -------------------------------------------------- -c 22 DISTRIBUTE arrA2[*][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][*] - call distrg22 (nproc) -C -------------------------------------------------- -c 23 DISTRIBUTE arrA2[*][GEN_BLOCK] -c REDISTRIBUTE arrA2[*][*] - call distrg23 (nproc) -C -------------------------------------------------- -c 24 DISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[GEN_BLOCK][*] - call distrg24 (nproc) -C ------------------------------------------------- - - 1 print *,'=== END OF distrgen1 ========================= ' - - end - -C ----------------------------------------------------distrg11 -c 11 DISTRIBUTE arrA1 [GEN_BLOCK] -c REDISTRIBUTE arrA1[BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrg11 (nproc) - integer, parameter :: AN1=16,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/16/) - integer :: BS12(1) = (/16/) - integer :: BS21(2) = (/6,10/) - integer :: BS22(2) = (/8,8/) - integer :: BS31(3) = (/3,7,6/) - integer :: BS32(3) = (/4,5,7/) - integer :: BS41(4) = (/3,4,8,1/) - integer :: BS42(4) = (/4,4,5,3/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrg11 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - - A1 = 5 - -!dvm$ actual(A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + 2 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= (i+7)) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg11 - -C ----------------------------------------------------distrg12 -c 12 DISTRIBUTE arrA1[BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[BLOCK] - - subroutine distrg12 (nproc) - integer nproc - - integer, parameter :: AN1=14,ER=10000 - integer :: erri= ER, i - - integer :: BS1(1) = (/14/) - integer :: BS2(2) = (/6,8/) - integer :: BS3(3) = (/3,5,6/) - integer :: BS4(4) = (/4,3,5,2/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrg12 ' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region inout (A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS1)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS2)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS3)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + 2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - A1(i) = A1(i) - 2 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg12 - -C ----------------------------------------------------distrg13 -c 13 DISTRIBUTE arrA1 [GEN_BLOCK] -c REDISTRIBUTE arrA1[*] -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrg13 (nproc) - integer, parameter :: AN1=24,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/24/) - integer :: BS12(1) = (/24/) - integer :: BS21(2) = (/3,21/) - integer :: BS22(2) = (/17,7/) - integer :: BS31(3) = (/13,1,10/) - integer :: BS32(3) = (/4,12,8/) - integer :: BS41(4) = (/5,7,3,9/) - integer :: BS42(4) = (/10,1,12,1/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrg13 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - - A1 = 3 - -!dvm$ actual(A1) - -!dvm$ region inout(A1(:AN1)) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i)*i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ region inout(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i)*2 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inlocal(A1) -!dvm$ parallel (i) on A1(i), reduction( min(erri) ) - do i=1,AN1 - if (A1(i) /= (i*6)) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg13 - -C ---------------------------------------------distrg14 -c 14 DISTRIBUTE arrA1[*] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[*] - - subroutine distrg14 (nproc) - integer nproc - integer, parameter :: AN1=13,ER=10000 - integer :: erri= ER, i - - integer :: BS1(1) = (/13/) - integer :: BS2(2) = (/6,7/) - integer :: BS3(3) = (/2,1,10/) - integer :: BS4(4) = (/4,3,5,1/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrg14 ' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = 4 - -!dvm$ actual(A1) - -!dvm$ region inout(A1(1:AN1)) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =A1(i)+i - enddo -!dvm$ end region - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS1)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS2)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS3)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS4)) - case default - goto 10 - endselect - -!dvm$ region inout (A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) - 2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - A1(i) = A1(i) - 2 - if (A1(i) /= (i)) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end - -C ---------------------------------------------distrg15 -c 15 DISTRIBUTE arrA1[GEN_BLOCK] different BS1 and BS2 -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrg15 (nproc) - integer, parameter :: AN1=15,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/15/) - integer :: BS12(1) = (/15/) - integer :: BS21(2) = (/5,10/) - integer :: BS22(2) = (/8,7/) - integer :: BS31(3) = (/2,7,6/) - integer :: BS32(3) = (/4,4,7/) - integer :: BS41(4) = (/3,4,7,1/) - integer :: BS42(4) = (/4,4,5,2/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrg15 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - -!dvm$ region inout (A1(1:5), A1(6:AN1)) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i*4 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region in(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*4) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg15 - -C ---------------------------------------------distrg151 -c 151 DISTRIBUTE arrA1[GEN_BLOCK] -c with 0 in BS.1 -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrg151 (nproc) - integer, parameter :: AN1=9,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/9/) ! (/0/) causes RTS err 036.027 - integer :: BS12(1) = (/9/) - integer :: BS21(2) = (/0,9/) - integer :: BS22(2) = (/8,1/) - integer :: BS31(3) = (/2,0,7/) - integer :: BS32(3) = (/3,5,1/) - integer :: BS41(4) = (/3,4,2,0/) - integer :: BS42(4) = (/4,3,1,1/) - - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrg151 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - -!dvm$ region in(A1), out(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i*6 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inlocal (A1(1:AN1)) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*6) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg151 - -C ---------------------------------------------distrg152 -c 152 DISTRIBUTE arrA1[GEN_BLOCK] -c with 0 in BS.2 -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrg152 (nproc) - integer, parameter :: AN1=10,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/10/) - integer :: BS12(1) = (/10/) ! (/0/) causes RTS err 036.027 - integer :: BS21(2) = (/1,9/) - integer :: BS22(2) = (/10,0/) - integer :: BS31(3) = (/2,1,7/) - integer :: BS32(3) = (/3,7,0/) - integer :: BS41(4) = (/3,4,2,1/) - integer :: BS42(4) = (/4,3,0,3/) - - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrg152 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i*2 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrg152 - -C ----------------------------------------------------distrg21 -c 21 DISTRIBUTE arrA2[BLOCK][*] -c REDISTRIBUTE arrA2[*][GEN_BLOCK] - - subroutine distrg21 (nproc) - integer nproc - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER, i - - integer :: BSj1(1) = (/8/) - integer :: BSj2(2) = (/6,2/) - integer :: BSj3(3) = (/2,5,1/) - integer :: BSj4(4) = (/2,3,1,2/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrg21 ' - -!dvm$ distribute A2(BLOCK,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region inout(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - - select case(nproc) - case(1) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg21 - -C ----------------------------------------------------distrg22 -c 22 DISTRIBUTE arrA2[*][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][*] - - subroutine distrg22 (nproc) - integer nproc - integer, parameter :: AN1=7,AN2=12,NL=1000,ER=10000 - integer :: erri= ER, i - - integer :: BSi1(1) = (/7/) - integer :: BSi2(2) = (/6,1/) - integer :: BSi3(3) = (/2,4,1/) - integer :: BSi4(4) = (/2,2,1,2/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg22 ' - -!dvm$ distribute A2(*,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =2*i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),*) - - select case(nproc) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1), * ) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2), * ) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3), * ) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4), * ) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inlocal(A1) -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (2*i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg22 - -C ----------------------------------------------------distr23 -c 23 DISTRIBUTE arrA2[*][GEN_BLOCK] -c REDISTRIBUTE arrA2[*][*] - - subroutine distrg23 (nproc) - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER, i - - integer :: BSj1(1) = (/8/) - integer :: BSj2(2) = (/6,2/) - integer :: BSj3(3) = (/2,2,4/) - integer :: BSj4(4) = (/1,2,2,3/) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrg23 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(*,GEN_BLOCK(BSj)) - - select case(nproc) - case(1) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(*, GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ region in(A2), out(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =3*i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual(erri) - -!dvm$ region in(A2), local(A2) -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (3*i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg23 - -C ----------------------------------------------------distrg24 -c 24 DISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[GEN_BLOCK][*] - subroutine distrg24 (nproc) - integer, parameter :: AN1=6,AN2=24,NL=1000,ER=10000 - - integer :: erri= ER, i - - integer :: BSi1(1) = (/6/) - integer :: BSi2(2) = (/5,1/) - integer :: BSi3(3) = (/2,3,1/) - integer :: BSi4(4) = (/2,1,1,2/) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrg24 ' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BS1),*) - - select case(nproc) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),*) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),*) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),*) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),*) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inout(A2) -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg24 - -C ------------------------------------------------- - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen2.fdv deleted file mode 100644 index 605a696..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen2.fdv +++ /dev/null @@ -1,1036 +0,0 @@ - program DISTRG2 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! GEN_BLOCK, BLOCK, * distributions - - integer PROCESSORS_RANK, PROCESSORS_SIZE - integer psize(2), rank - - PROCESSORS_RANK() = 2 - PROCESSORS_SIZE(i) = 1 - - print *,'===START OF distrgen2========================' - - rank = PROCESSORS_RANK() - - do i=1,rank - psize(i)=PROCESSORS_SIZE(i) - if (psize(i) > 4) then !may be temporary - goto 1 - endif - enddo - -C ------------------------------------------------- -c 25 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] other blocks - call distrg25 (psize) -C ------------------------------------------------- -c 26 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - call distrg26 (psize) -C ------------------------------------------------- -c 27 DISTRIBUTE arrA2[GEN_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - call distrg27 (psize) -C ------------------------------------------------- -c 28 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - call distrg28 (psize) -C ------------------------------------------------- -c 29 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - call distrg29 (psize) -C ------------------------------------------------- -c 210 DISTRIBUTE arrA2[GEN_BLOCK][*] -c REDISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[*][GEN_BLOCK] - call distrg210 (psize) -C ---------------------------------------------------- - - 1 print *,'=== END OF distrgen2 ========================= ' - - end - -C ----------------------------------------------------distrg25 -c 25 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] other blocks - - subroutine distrg25 (psize) - integer psize(2) - - integer, parameter :: AN1=10,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi11=(/10/) - integer, dimension(1) :: BSi12=(/10/) - integer, dimension(2) :: BSi21=(/5,5/) - integer, dimension(2) :: BSi22=(/6,4/) - integer, dimension(3) :: BSi31=(/2,3,5/) - integer, dimension(3) :: BSi32=(/8,1,1/) - integer, dimension(4) :: BSi41=(/2,3,4,1/) - integer, dimension(4) :: BSi42=(/2,1,3,4/) - - integer, dimension(1) :: BSj11=(/12/) - integer, dimension(1) :: BSj12=(/12/) - integer, dimension(2) :: BSj21=(/7,5/) - integer, dimension(2) :: BSj22=(/5,7/) - integer, dimension(3) :: BSj31=(/5,6,1/) - integer, dimension(3) :: BSj32=(/2,6,4/) - integer, dimension(4) :: BSj41=(/1,4,2,5/) - integer, dimension(4) :: BSj42=(/2,4,4,2/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrg25 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - A2 = 1 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j)+ i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .ne.(i*NL+j) + 1) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg25 - -C ----------------------------------------------------distrg26 -c 26 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - - subroutine distrg26 (psize) - integer psize(2) - - integer, parameter :: AN1=16,AN2=16,NL=1000,ER=10000 - integer :: erri= ER,i - - integer, dimension(1) :: BSi11=(/16/) - integer, dimension(1) :: BSi12=(/16/) - integer, dimension(2) :: BSi21=(/5,11/) - integer, dimension(2) :: BSi22=(/10,6/) - integer, dimension(3) :: BSi31=(/6,3,7/) - integer, dimension(3) :: BSi32=(/8,4,4/) - integer, dimension(4) :: BSi41=(/4,3,4,5/) - integer, dimension(4) :: BSi42=(/2,5,3,6/) - - integer, dimension(1) :: BSj11=(/16/) - integer, dimension(1) :: BSj12=(/16/) - integer, dimension(2) :: BSj21=(/7,9/) - integer, dimension(2) :: BSj22=(/10,6/) - integer, dimension(3) :: BSj31=(/5,6,5/) - integer, dimension(3) :: BSj32=(/6,6,4/) - integer, dimension(4) :: BSj41=(/1,8,2,5/) - integer, dimension(4) :: BSj42=(/4,4,4,4/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg26 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region out(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,BLOCK) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + 1 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region in(A2), local(A2) -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) - 1 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg26 - -C ----------------------------------------------------distrg27 -c 27 DISTRIBUTE arrA2[GEN_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - - subroutine distrg27 (psize) - integer psize(2) - - integer, parameter :: AN1=11,AN2=15,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi11=(/11/) - integer, dimension(1) :: BSi12=(/11/) - integer, dimension(2) :: BSi21=(/6,5/) - integer, dimension(2) :: BSi22=(/7,4/) - integer, dimension(3) :: BSi31=(/4,3,4/) - integer, dimension(3) :: BSi32=(/8,2,1/) - integer, dimension(4) :: BSi41=(/3,3,4,1/) - integer, dimension(4) :: BSi42=(/2,2,3,4/) - - integer, dimension(1) :: BSj11=(/15/) - integer, dimension(1) :: BSj12=(/15/) - integer, dimension(2) :: BSj21=(/10,5/) - integer, dimension(2) :: BSj22=(/8,7/) - integer, dimension(3) :: BSj31=(/5,6,4/) - integer, dimension(3) :: BSj32=(/2,7,8/) - integer, dimension(4) :: BSj41=(/4,4,2,5/) - integer, dimension(4) :: BSj42=(/2,3,7,4/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg27 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1),BLOCK) - - select case(psize(1)) - - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),BLOCK) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),BLOCK) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),BLOCK) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),BLOCK) - case default - goto 10 - endselect - - A2 = 5 - -!dvm$ actual(A2) - -!dvm$ region inout (A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j)+ i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj1)) - - select case(psize(2)) - - case(1) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * 2 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),BLOCK) - - select case(psize(1)) - - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),BLOCK) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),BLOCK) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),BLOCK) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region in(A2), local(A2) -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 2 - if (A2(i,j) /= (i*NL+j+5)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg27 - -C ----------------------------------------------------distrg28 -c 28 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - - subroutine distrg28 (psize) - integer psize(2) - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi1=(/8/) - integer, dimension(2) :: BSi2=(/6,2/) - integer, dimension(3) :: BSi3=(/3,3,2/) - integer, dimension(4) :: BSi4=(/2,2,2,2/) - - integer, dimension(1) :: BSj1=(/8/) - integer, dimension(2) :: BSj2=(/4,4/) - integer, dimension(3) :: BSj3=(/5,1,2/) - integer, dimension(4) :: BSj4=(/2,1,2,3/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg28 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj1)) - - select case(psize(2)) - - case(1) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(BLOCK, GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ region out(A2(1:AN1, 1:AN2)) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK, BLOCK) - -!dvm$ region inout(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + 5 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),BLOCK) - - select case(psize(1)) - - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),BLOCK) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),BLOCK) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),BLOCK) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) - 5 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg28 - -C ----------------------------------------------------distrg29 -c 29 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - - subroutine distrg29 (psize) - integer psize(2) - - integer, parameter :: AN1=10,AN2=14,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi11=(/10/) - integer, dimension(1) :: BSi12=(/10/) - integer, dimension(2) :: BSi21=(/5,5/) - integer, dimension(2) :: BSi22=(/6,4/) - integer, dimension(3) :: BSi31=(/2,3,5/) - integer, dimension(3) :: BSi32=(/8,1,1/) - integer, dimension(4) :: BSi41=(/2,3,4,1/) - integer, dimension(4) :: BSi42=(/2,1,3,4/) - - integer, dimension(1) :: BSj11=(/14/) - integer, dimension(1) :: BSj12=(/14/) - integer, dimension(2) :: BSj21=(/7,7/) - integer, dimension(2) :: BSj22=(/5,9/) - integer, dimension(3) :: BSj31=(/5,6,3/) - integer, dimension(3) :: BSj32=(/2,6,6/) - integer, dimension(4) :: BSj41=(/3,4,2,5/) - integer, dimension(4) :: BSj42=(/4,4,5,1/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg29 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1), GEN_BLOCK(BSj1)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region out (A2(1:AN1, 1:4)), out(A2(1:AN1, 5:AN2)) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ region in(A2), out (A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * 3 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 3 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg29 - -C ----------------------------------------------------distrg210 -c 210 DISTRIBUTE arrA2[GEN_BLOCK][*] -c REDISTRIBUTE arrA2[*][*] -c REDISTRIBUTE arrA2[*][GEN_BLOCK] - - subroutine distrg210 (psize) - integer psize(2) - - integer, parameter :: AN1=8,AN2=6,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi1=(/8/) - integer, dimension(2) :: BSi2=(/6,2/) - integer, dimension(3) :: BSi3=(/3,3,2/) - integer, dimension(4) :: BSi4=(/1,2,2,3/) - - integer, dimension(1) :: BSj1=(/6/) - integer, dimension(2) :: BSj2=(/2,4/) - integer, dimension(3) :: BSj3=(/4,1,1/) - integer, dimension(4) :: BSj4=(/2,1,2,1/) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrg210 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1),*) - - select case(psize(1)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),*) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),*) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),*) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),*) - case default - goto 10 - endselect - -!dvm$ region out (A2(1:3, 1:AN2), A2(4:AN1, 1:AN2)) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * 3 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(*,GEN_BLOCK(BSj2)) - - select case(psize(1)) ! it's true - psize(1)) - case(1) -!dvm$ redistribute A2(*,GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(*,GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(*,GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(*,GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inlocal (A2) -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 3 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrg210 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen3.fdv deleted file mode 100644 index b1bb4b7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_GEN/distrgen3.fdv +++ /dev/null @@ -1,2855 +0,0 @@ - program DISTRG3 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! GEN_BLOCK, BLOCK, * distributions - - integer PROCESSORS_RANK, PROCESSORS_SIZE - integer psize(3), rank - - PROCESSORS_RANK() = 3 - PROCESSORS_SIZE(i) = 1 - - print *,'===START OF distrgen3========================' - - rank = PROCESSORS_RANK() - - do i=1,rank - psize(i)=PROCESSORS_SIZE(i) - if (psize(i) > 4) then !may be temporary - goto 1 - endif - enddo -C ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 2 .and. psize(3) == 3) !range 1 2 3 - >.or. - > (psize(1) == 2 .and. psize(2) == 3 .and. psize(3) == 2) !range 2 3 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 1 .and. psize(3) == 4) !range 3 1 4 - >.or. - > (psize(1) == 4 .and. psize(2) == 2 .and. psize(3) == 2)) !range 4 2 2 - >then -! 31 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] other blocks - call distrg31 (psize) - endif -! ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 3 .and. psize(3) == 4) !range 1 3 4 - >.or. - > (psize(1) == 2 .and. psize(2) == 2 .and. psize(3) == 3) !range 2 2 3 - >.or. - > (psize(1) == 3 .and. psize(2) == 4 .and. psize(3) == 1) !range 3 4 1 - >.or. - > (psize(1) == 4 .and. psize(2) == 2 .and. psize(3) == 2)) !range 4 2 2 - >then -! 32 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [BLOCK][BLOCK][BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - call distrg32 (psize) - endif -! ------------------------------------------------- -! 33 DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] allocatable -! DISTRIBUTE arrB3[BLOCK][GEN_BLOCK][GEN_BLOCK] static -! REDISTRIBUTE [GEN_BLOCK][BLOCK][BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - call distrg33 (psize) -! ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 2 .and. psize(3) == 2) !range 1 2 2 - >.or. - > (psize(1) == 2 .and. psize(2) == 4 .and. psize(3) == 2) !range 2 4 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 1 .and. psize(3) == 2) !range 3 1 2 - >.or. - > (psize(1) == 4 .and. psize(2) == 1 .and. psize(3) == 4) !range 4 1 4 - >) then -! 34 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] !static -! REDISTRIBUTE [GEN_BLOCK][*][BLOCK] -! DISTRIBUTE arrB3[GEN_BLOCK][*][BLOCK] !static -! REDISTRIBUTE [BLOCK][GEN_BLOCK][*] - call distrg34 (psize) - endif -! ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 3 .and. psize(3) == 2) !range 1 3 2 - >.or. - > (psize(1) == 2 .and. psize(2) == 2 .and. psize(3) == 4) !range 2 2 4 - >.or. - > (psize(1) == 3 .and. psize(2) == 2 .and. psize(3) == 2) !range 3 2 2 - >.or. - > (psize(1) == 4 .and. psize(2) == 2 .and. psize(3) == 2)) !range 4 2 2 - >then - -! 35 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE arrA2[*][*][*] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - call distrg35 (psize) - endif -! ------------------------------------------------- -! 36 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - call distrg36 (psize) -! ------------------------------------------------- -! 37 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - call distrg37 (psize) -! ------------------------------------------------- -! 38 DISTRIBUTE arrA3 [GEN_BLOCK][*][GEN_BLOCK] -! REDISTRIBUTE [*][GEN_BLOCK][*] -! REDISTRIBUTE[GEN_BLOCK][GEN_BLOCK][*] -! REDISTRIBUTE[*][GEN_BLOCK][GEN_BLOCK] - call distrg38 (psize) -! ------------------------------------------------- -! 39 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][*][*] -! REDISTRIBUTE[GEN_BLOCK][*][GEN_BLOCK] - call distrg39 (psize) -! ------------------------------------------------- -! 310 DISTRIBUTE arrA3 [GEN_BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [*][*][GEN_BLOCK] -! REDISTRIBUTE[*][GEN_BLOCK][BLOCK] - call distrg310 (psize) -! ------------------------------------------------- -! 311 DISTRIBUTE arrA3 [GEN_BLOCK][*][*] -! REDISTRIBUTE [*][*][*] -! REDISTRIBUTE [BLOCK][*][GEN_BLOCK] - call distrg311 (psize) - -! ------------------------------------------------- - - 1 print *,'=== END OF distrgen3 ========================= ' - - end - -! ----------------------------------------------------distrg31 -! 31 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 1 1 -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 2 3 -! range 2 3 2 -! range 3 1 4 -! range 4 2 2 - subroutine distrg31 (psize) - integer psize(3) - - integer, parameter :: AN1=6,AN2=6,AN3=6,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi111=(/6/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/6/) - integer, dimension(1) :: BSk111=(/6/) - - integer, dimension(1) :: BSi11=(/6/) !range 1 2 3 - integer, dimension(1) :: BSi12=(/6/) - integer, dimension(2) :: BSj11=(/5,1/) - integer, dimension(2) :: BSj12=(/2,4/) - integer, dimension(3) :: BSk11=(/1,4,1/) - integer, dimension(3) :: BSk12=(/1,2,3/) - - integer, dimension(2) :: BSi21=(/4,2/) !range 2 3 2 - integer, dimension(2) :: BSi22=(/1,5/) - integer, dimension(3) :: BSj21=(/3,2,1/) - integer, dimension(3) :: BSj22=(/5,1,0/) - integer, dimension(2) :: BSk21=(/2,4/) - integer, dimension(2) :: BSk22=(/5,1/) - - integer, dimension(3) :: BSi31=(/2,2,2/) !range 3 1 4 - integer, dimension(3) :: BSi32=(/3,2,1/) - integer, dimension(1) :: BSj31=(/6/) - integer, dimension(1) :: BSj32=(/6/) - integer, dimension(4) :: BSk31=(/1,2,2,1/) - integer, dimension(4) :: BSk32=(/2,2,1,1/) - - integer, dimension(4) :: BSi41=(/2,1,2,1/) !range 4 2 2 - integer, dimension(4) :: BSi42=(/1,2,1,2/) - integer, dimension(2) :: BSj41=(/5,1/) - integer, dimension(2) :: BSj42=(/2,4/) - integer, dimension(2) :: BSk41=(/4,2/) - integer, dimension(2) :: BSk42=(/6,0/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg31 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ distribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - -!dvm$ region out(A3) -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region in(A3) -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg31 - -! ----------------------------------------------------distrg32 -! 32 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 1 1 -! REDISTRIBUTE [BLOCK][BLOCK][BLOCK] range 1 3 4 -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 2 2 3 -! range 3 4 1 -! range 4 2 2 - subroutine distrg32 (psize) - integer psize(3) - - integer, parameter :: AN1=8,AN2=6,AN3=14,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi111=(/8/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/6/) - integer, dimension(1) :: BSk111=(/14/) - - integer, dimension(1) :: BSi11=(/8/) !range 1 3 4 - integer, dimension(1) :: BSi12=(/8/) - integer, dimension(3) :: BSj11=(/2,4,0/) - integer, dimension(3) :: BSj12=(/3,2,1/) - integer, dimension(4) :: BSk11=(/1,4,3,6/) - integer, dimension(4) :: BSk12=(/5,2,4,3/) - - integer, dimension(2) :: BSi21=(/6,2/) !range 2 2 3 - integer, dimension(2) :: BSi22=(/1,7/) - integer, dimension(2) :: BSj21=(/3,3/) - integer, dimension(2) :: BSj22=(/5,1/) - integer, dimension(3) :: BSk21=(/10,3,1/) - integer, dimension(3) :: BSk22=(/4,8,2/) - - integer, dimension(3) :: BSi31=(/3,2,3/) !range 3 4 1 - integer, dimension(3) :: BSi32=(/2,4,2/) - integer, dimension(4) :: BSj31=(/2,1,1,2/) - integer, dimension(4) :: BSj32=(/1,2,3,0/) - integer, dimension(1) :: BSk31=(/14/) - integer, dimension(1) :: BSk32=(/14/) - - integer, dimension(4) :: BSi41=(/3,2,1,2/) !range 4 2 2 - integer, dimension(4) :: BSi42=(/4,1,2,1/) - integer, dimension(2) :: BSj41=(/5,1/) - integer, dimension(2) :: BSj42=(/2,4/) - integer, dimension(2) :: BSk41=(/7,7/) - integer, dimension(2) :: BSk42=(/6,8/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg32 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ distribute A3(GEN_BLOCK(BSi),GEN_BLOCK(BSj),GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 1 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,BLOCK,BLOCK) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 1 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),GEN_BLOCK(BSj),GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region inlocal(A3) -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 2)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg32 - -! ----------------------------------------------------distrg33 -! 33 DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] allocatable -! DISTRIBUTE arrB3[BLOCK][GEN_BLOCK][GEN_BLOCK] static -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - - subroutine distrg33 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=17,AN3=16,NL=1000,ER=10000 - integer, parameter :: BN1=10,BN2=10,BN3=10 - integer :: erria=ER, errib=ER,i,j,k - - integer, dimension(1) :: BSai11=(/12/) - integer, dimension(1) :: BSai12=(/12/) - integer, dimension(2) :: BSai21=(/3,9/) - integer, dimension(2) :: BSai22=(/11,1/) - integer, dimension(3) :: BSai31=(/4,0,8/) - integer, dimension(3) :: BSai32=(/6,4,2/) - integer, dimension(4) :: BSai41=(/1,2,3,6/) !rem - integer, dimension(4) :: BSai42=(/3,8,0,1/) - - integer, dimension(1) :: BSaj11=(/17/) - integer, dimension(1) :: BSaj12=(/17/) - integer, dimension(2) :: BSaj21=(/3,14/) - integer, dimension(2) :: BSaj22=(/4,13/) - integer, dimension(3) :: BSaj31=(/6,1,10/) - integer, dimension(3) :: BSaj32=(/11,6,0/) - integer, dimension(4) :: BSaj41=(/5,0,11,1/) - integer, dimension(4) :: BSaj42=(/11,3,1,2/) - - integer, dimension(1) :: BSak11=(/16/) - integer, dimension(1) :: BSak12=(/16/) - integer, dimension(2) :: BSak21=(/12,4/) - integer, dimension(2) :: BSak22=(/7,9/) !rem - integer, dimension(3) :: BSak31=(/2,4,10/) - integer, dimension(3) :: BSak32=(/3,1,12/) - integer, dimension(4) :: BSak41=(/6,2,5,3/) - integer, dimension(4) :: BSak42=(/1,7,6,2/) - - - integer, dimension(1) :: BSbi11=(/10/) - integer, dimension(1) :: BSbi12=(/10/) - integer, dimension(2) :: BSbi21=(/3,7/) - integer, dimension(2) :: BSbi22=(/1,9/) - integer, dimension(3) :: BSbi31=(/3,2,5/) - integer, dimension(3) :: BSbi32=(/2,6,2/) - integer, dimension(4) :: BSbi41=(/1,2,5,2/) - integer, dimension(4) :: BSbi42=(/3,1,0,6/) - - integer, dimension(1) :: BSbj11=(/10/) - integer, dimension(1) :: BSbj12=(/10/) - integer, dimension(2) :: BSbj21=(/6,4/) - integer, dimension(2) :: BSbj22=(/7,3/) - integer, dimension(3) :: BSbj31=(/1,5,4/) - integer, dimension(3) :: BSbj32=(/3,1,6/) - integer, dimension(4) :: BSbj41=(/5,0,2,3/) - integer, dimension(4) :: BSbj42=(/2,3,4,1/) - - integer, dimension(1) :: BSbk11=(/10/) - integer, dimension(1) :: BSbk12=(/10/) - integer, dimension(2) :: BSbk21=(/5,5/) - integer, dimension(2) :: BSbk22=(/2,8/) - integer, dimension(3) :: BSbk31=(/1,1,8/) - integer, dimension(3) :: BSbk32=(/3,5,2/) - integer, dimension(4) :: BSbk41=(/1,2,3,4/) - integer, dimension(4) :: BSbk42=(/4,3,2,1/) - - integer, allocatable :: A3(:,:,:) - integer B3(BN1,BN2,BN3) - character(10), parameter :: tname='distrg33 ' - -!dvm$ distribute :: A3 -!dvm$ distribute :: B3 -!dvm$ dynamic A3, B3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSaj1),GEN_BLOCK(BSak1)) -!!!!dvm$ redistribute B3(BLOCK,GEN_BLOCK(BSbj1),GEN_BLOCK(BSbk1)) - - select case(psize(2)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj11),GEN_BLOCK(BSak11)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj11),GEN_BLOCK(BSbk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj11),GEN_BLOCK(BSak21)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj11),GEN_BLOCK(BSbk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj11),GEN_BLOCK(BSak31)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj11),GEN_BLOCK(BSbk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj11),GEN_BLOCK(BSak41)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj11),GEN_BLOCK(BSbk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj21),GEN_BLOCK(BSak11)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj21),GEN_BLOCK(BSbk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj21),GEN_BLOCK(BSak21)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj21),GEN_BLOCK(BSbk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj21),GEN_BLOCK(BSak31)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj21),GEN_BLOCK(BSbk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj21),GEN_BLOCK(BSak41)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj21),GEN_BLOCK(BSbk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj31),GEN_BLOCK(BSak11)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj31),GEN_BLOCK(BSbk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj31),GEN_BLOCK(BSak21)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj31),GEN_BLOCK(BSbk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj31),GEN_BLOCK(BSak31)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj31),GEN_BLOCK(BSbk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj31),GEN_BLOCK(BSak41)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj31),GEN_BLOCK(BSbk41)) - case default - goto 10 - endselect - - case (4) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj41),GEN_BLOCK(BSak11)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj41),GEN_BLOCK(BSbk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj41),GEN_BLOCK(BSak21)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj41),GEN_BLOCK(BSbk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj41),GEN_BLOCK(BSak31)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj41),GEN_BLOCK(BSbk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSaj41),GEN_BLOCK(BSak41)) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj41),GEN_BLOCK(BSbk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region out (A3, B3) -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo - -!dvm$ parallel (i,j,k) on B3(i,j,k) - do i=1,BN1 - do j=1,BN2 - do k=1,BN3 - B3(i,j,k) = (i*NL/10 + j*NL/100 + k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSai2),BLOCK,BLOCK) -!!!!dvm$ redistribute B3(GEN_BLOCK(BSbi2),BLOCK,BLOCK) - - select case(psize(1)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai11),BLOCK,BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi11),BLOCK,BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai21),BLOCK,BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi21),BLOCK,BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai31),BLOCK,BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi31),BLOCK,BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai41),BLOCK,BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi41),BLOCK,BLOCK) - case default - goto 10 - endselect - -!dvm$ region inout (A3, B3) -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ parallel (i,j,k) on B3(i,j,k) - do i=1,BN1 - do j=1,BN2 - do k=1,BN3 - B3(i,j,k) = B3(i,j,k)/ 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSai2),GEN_BLOCK(BSaj2),BLOCK) -!!!!dvm$ redistribute A3(GEN_BLOCK(BSbi2),GEN_BLOCK(BSbj2),BLOCK) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai12),GEN_BLOCK(BSaj12),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi12),GEN_BLOCK(BSbj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai12),GEN_BLOCK(BSaj22),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi12),GEN_BLOCK(BSbj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai12),GEN_BLOCK(BSaj32),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi12),GEN_BLOCK(BSbj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai12),GEN_BLOCK(BSaj42),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi12),GEN_BLOCK(BSbj42),BLOCK) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai22),GEN_BLOCK(BSaj12),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi22),GEN_BLOCK(BSbj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai22),GEN_BLOCK(BSaj22),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi22),GEN_BLOCK(BSbj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai22),GEN_BLOCK(BSaj32),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi22),GEN_BLOCK(BSbj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai22),GEN_BLOCK(BSaj42),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi22),GEN_BLOCK(BSbj42),BLOCK) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai32),GEN_BLOCK(BSaj12),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi32),GEN_BLOCK(BSbj12),BLOCK) !rem - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai32),GEN_BLOCK(BSaj22),BLOCK) !rem -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi32),GEN_BLOCK(BSbj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai32),GEN_BLOCK(BSaj32),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi32),GEN_BLOCK(BSbj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai32),GEN_BLOCK(BSaj42),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi32),GEN_BLOCK(BSbj42),BLOCK) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai42),GEN_BLOCK(BSaj12),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi42),GEN_BLOCK(BSbj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai42),GEN_BLOCK(BSaj22),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi42),GEN_BLOCK(BSbj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai42),GEN_BLOCK(BSaj32),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi42),GEN_BLOCK(BSbj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai42),GEN_BLOCK(BSaj42),BLOCK) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi42),GEN_BLOCK(BSbj42),BLOCK) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erria, errib) - -!dvm$ region inlocal (a3), inlocal (B3) -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erria)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k)/ 2 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erria = min(erria,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ parallel (i,j,k) on B3(i,j,k), reduction(min(errib)) - do i=1,BN1 - do j=1,BN2 - do k=1,BN3 - if (B3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - errib = min(errib,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria, errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg33 - -! ----------------------------------------------------distrg34 -! 34 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] static range 1 1 1 -! REDISTRIBUTE [GEN_BLOCK][*][BLOCK] range 1 2 2 -! DISTRIBUTE arrB3[GEN_BLOCK][*][BLOCK] static range 2 4 2 -! REDISTRIBUTE [BLOCK][GEN_BLOCK][*] range 3 1 2 -! range 4 1 4 - subroutine distrg34 (psize) - integer psize(3) - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer, parameter :: BN1=12,BN2=17,BN3=11 - integer :: erria=ER, errib=ER,i,j,k - - integer, dimension(1) :: BSai111=(/16/) !range 1 1 1 - integer, dimension(1) :: BSaj111=(/16/) - integer, dimension(1) :: BSak111=(/16/) - - integer, dimension(1) :: BSai11=(/16/) !range 1 2 2 - integer, dimension(1) :: BSai12=(/16/) - integer, dimension(2) :: BSaj11=(/6,10/) - integer, dimension(2) :: BSaj12=(/4,12/) - integer, dimension(2) :: BSak11=(/10,6/) - integer, dimension(2) :: BSak12=(/12,4/) - - integer, dimension(2) :: BSai21=(/2,14/) !range 2 4 2 - integer, dimension(2) :: BSai22=(/13,3/) - integer, dimension(4) :: BSaj21=(/3,4,3,6/) - integer, dimension(4) :: BSaj22=(/6,6,2,2/) - integer, dimension(2) :: BSak21=(/1,15/) - integer, dimension(2) :: BSak22=(/7,9/) - - integer, dimension(3) :: BSai31=(/3,2,11/) !range 3 1 2 - integer, dimension(3) :: BSai32=(/2,12,2/) - integer, dimension(1) :: BSaj31=(/16/) - integer, dimension(1) :: BSaj32=(/16/) - integer, dimension(2) :: BSak31=(/3,13/) - integer, dimension(2) :: BSak32=(/4,12/) - - integer, dimension(4) :: BSai41=(/1,2,5,8/) !range 4 1 4 - integer, dimension(4) :: BSai42=(/3,11,0,2/) - integer, dimension(1) :: BSaj41=(/16/) - integer, dimension(1) :: BSaj42=(/16/) -c integer, dimension(4) :: BSak41=(/1,5,0,10/) - integer, dimension(4) :: BSak41=(/1,5,2,8/) !rem - integer, dimension(4) :: BSak42=(/6,2,5,3/) - - integer, dimension(1) :: BSbi111=(/12/) !range 1 1 1 - integer, dimension(1) :: BSbj111=(/17/) - integer, dimension(1) :: BSbk111=(/11/) - - - integer, dimension(1) :: BSbi11=(/12/) !range 1 2 2 - integer, dimension(1) :: BSbi12=(/12/) - integer, dimension(2) :: BSbj11=(/6,11/) - integer, dimension(2) :: BSbj12=(/14,3/) - integer, dimension(2) :: BSbk11=(/10,1/) - integer, dimension(2) :: BSbk12=(/4,7/) - - integer, dimension(2) :: BSbi21=(/5,7/) !range 2 4 2 - integer, dimension(2) :: BSbi22=(/3,9/) - integer, dimension(4) :: BSbj21=(/5,2,8,2/) - integer, dimension(4) :: BSbj22=(/7,3,2,5/) - integer, dimension(2) :: BSbk21=(/5,6/) - integer, dimension(2) :: BSbk22=(/3,8/) - - integer, dimension(3) :: BSbi31=(/3,4,5/) !range 3 1 2 - integer, dimension(3) :: BSbi32=(/4,6,2/) - integer, dimension(1) :: BSbj31=(/17/) - integer, dimension(1) :: BSbj32=(/17/) - integer, dimension(2) :: BSbk31=(/4,7/) - integer, dimension(2) :: BSbk32=(/8,3/) - - integer, dimension(4) :: BSbi41=(/4,1,5,2/) !range 4 1 4 -c integer, dimension(4) :: BSbi42=(/3,4,2,4/) - integer, dimension(4) :: BSbi42=(/3,4,2,3/) - integer, dimension(1) :: BSbj41=(/17/) - integer, dimension(1) :: BSbj42=(/17/) -c integer, dimension(4) :: BSbk41=(/1,4,2,5/) - integer, dimension(4) :: BSbk41=(/1,4,2,4/) - integer, dimension(4) :: BSbk42=(/2,3,4,2/) - - integer A3(AN1,AN2,AN3), B3(BN1,BN2,BN3) - character(10), parameter :: tname='distrg34 ' - -!dvm$ distribute :: A3 -!dvm$ distribute :: B3 -!dvm$ dynamic A3, B3 - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSai1),GEN_BLOCK(BSaj1),GEN_BLOCK(BSak1)) -!!!!dvm$ redistribute B3(GEN_BLOCK(BSbi1),*, BLOCK) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai111),GEN_BLOCK(BSaj111),GEN_BLOCK(BSak111)) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi111),*, BLOCK) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai11),GEN_BLOCK(BSaj11),GEN_BLOCK(BSak11)) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi11),*, BLOCK) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai21),GEN_BLOCK(BSaj21),GEN_BLOCK(BSak21)) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi21),*, BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai31),GEN_BLOCK(BSaj31),GEN_BLOCK(BSak31)) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi31),*, BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai41),GEN_BLOCK(BSaj41),GEN_BLOCK(BSak41)) -!dvm$ redistribute -!dvm$* B3(GEN_BLOCK(BSbi41),*, BLOCK) - case default - goto 10 - endselect - A3 = 10 - B3 = 7 -!dvm$ actual(A3, B3) - -!dvm$ region in(A3,B3), out(A3,B3) -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo - -!dvm$ parallel (i,j,k) on B3(i,j,k) - do i=1,BN1 - do j=1,BN2 - do k=1,BN3 - B3(i,j,k) = B3(i,j,k) + (i*NL/10 + j*NL/100 + k) - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSai1),*,BLOCK) -!!!!dvm$ redistribute B3(BLOCK, GEN_BLOCK(BSbj2),*) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai111),*,BLOCK) -!dvm$ redistribute -!dvm$* B3(BLOCK, GEN_BLOCK(BSbj111),*) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai12),*,BLOCK) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj12),*) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai22),*,BLOCK) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj22),*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai32),*,BLOCK) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj32),*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSai42),*,BLOCK) -!dvm$ redistribute -!dvm$* B3(BLOCK,GEN_BLOCK(BSbj42),*) - case default - goto 10 - endselect - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erria)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 10 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erria = min(erria,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ parallel (i,j,k) on B3(i,j,k), reduction (min(errib)) - do i=1,BN1 - do j=1,BN2 - do k=1,BN3 - if (B3(i,j,k) /= (i*NL/10 + j*NL/100 + k+ 7)) then - errib = min(errib,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria, errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - 10 continue - end subroutine distrg34 - -! ----------------------------------------------------distrg35 -! 35 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 1 1 -! REDISTRIBUTE arrA2[*][*][*] range 1 3 2 -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 2 2 4 -! range 3 2 2 -! range 4 2 2 - subroutine distrg35 (psize) - integer psize(3) - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi111=(/16/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/16/) - integer, dimension(1) :: BSk111=(/16/) - - integer, dimension(1) :: BSi11=(/16/) !range 1 3 2 - integer, dimension(1) :: BSi12=(/16/) - integer, dimension(3) :: BSj11=(/6,5,5/) - integer, dimension(3) :: BSj12=(/3,2, 11/) - integer, dimension(2) :: BSk11=(/12,4/) - integer, dimension(2) :: BSk12=(/10,6/) - - integer, dimension(2) :: BSi21=(/6,10/) !range 2 2 4 - integer, dimension(2) :: BSi22=(/1,15/) - integer, dimension(2) :: BSj21=(/4,12/) - integer, dimension(2) :: BSj22=(/5,11/) - integer, dimension(4) :: BSk21=(/10,4,1,1/) - integer, dimension(4) :: BSk22=(/5,3,2,6/) - - integer, dimension(3) :: BSi31=(/3,2,11/) !range 3 2 2 - integer, dimension(3) :: BSi32=(/12,1,3/) - integer, dimension(2) :: BSj31=(/6,10/) - integer, dimension(2) :: BSj32=(/4,12/) - integer, dimension(2) :: BSk31=(/3,13/) - integer, dimension(2) :: BSk32=(/15,1/) - - integer, dimension(4) :: BSi41=(/3,2,1,10/) !range 4 2 2 - integer, dimension(4) :: BSi42=(/4,8,2,2/) - integer, dimension(2) :: BSj41=(/13,3/) - integer, dimension(2) :: BSj42=(/12,4/) - integer, dimension(2) :: BSk41=(/7,9/) - integer, dimension(2) :: BSk42=(/10,6/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg35 ' - -!dvm$ distribute ::A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 3 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 3 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 6)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg35 - -! ----------------------------------------------------distrg36 -! 36 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - - subroutine distrg36 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=12,AN3=5,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/12/) - integer, dimension(1) :: BSi12=(/12/) - integer, dimension(2) :: BSi21=(/10,2/) - integer, dimension(2) :: BSi22=(/4,8/) - integer, dimension(3) :: BSi31=(/4,2,6/) - integer, dimension(3) :: BSi32=(/6,4,2/) - integer, dimension(4) :: BSi41=(/4,2,4,2/) - integer, dimension(4) :: BSi42=(/4,1,6,1/) - - integer, dimension(1) :: BSj11=(/12/) - integer, dimension(1) :: BSj12=(/12/) - integer, dimension(2) :: BSj21=(/4,8/) - integer, dimension(2) :: BSj22=(/5,7/) - integer, dimension(3) :: BSj31=(/3,3,6/) - integer, dimension(3) :: BSj32=(/6,4,2/) - integer, dimension(4) :: BSj41=(/5,1,2,4/) - integer, dimension(4) :: BSj42=(/2,1,3,6/) - - integer, dimension(1) :: BSk11=(/5/) - integer, dimension(1) :: BSk12=(/5/) - integer, dimension(2) :: BSk21=(/0,5/) - integer, dimension(2) :: BSk22=(/3,2/) - integer, dimension(3) :: BSk31=(/2,2,1/) - integer, dimension(3) :: BSk32=(/1,1,3/) - integer, dimension(4) :: BSk41=(/1,0,2,2/) - integer, dimension(4) :: BSk42=(/1,0,1,3/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg36 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk1)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),BLOCK,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),BLOCK,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),BLOCK,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),BLOCK,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),BLOCK,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),BLOCK,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),BLOCK,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),BLOCK,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),BLOCK,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),BLOCK,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),BLOCK,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),BLOCK,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),BLOCK,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),BLOCK,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),BLOCK,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),BLOCK,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),BLOCK) - - select case(psize(2)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - - select case(psize(2)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj12),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj12),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj12),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj22),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj22),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj22),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj32),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj32),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj32),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (4) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj42),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj42),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj42),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),BLOCK) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) / 4 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg36 - -! ----------------------------------------------------distrg37 -! 37 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - - subroutine distrg37 (psize) - integer psize(3) - - integer, parameter :: AN1=10,AN2=15,AN3=15,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/10/) - integer, dimension(1) :: BSi12=(/10/) - integer, dimension(2) :: BSi21=(/6,4/) - integer, dimension(2) :: BSi22=(/2,8/) - integer, dimension(3) :: BSi31=(/2,3,5/) - integer, dimension(3) :: BSi32=(/3,4,3/) - integer, dimension(4) :: BSi41=(/4,1,3,2/) - integer, dimension(4) :: BSi42=(/3,3,2,2/) - - integer, dimension(1) :: BSj11=(/15/) - integer, dimension(1) :: BSj12=(/15/) - integer, dimension(2) :: BSj21=(/3,12/) - integer, dimension(2) :: BSj22=(/10,5/) - integer, dimension(3) :: BSj31=(/6,4,5/) - integer, dimension(3) :: BSj32=(/3,2,10/) - integer, dimension(4) :: BSj41=(/5,2,3,5/) - integer, dimension(4) :: BSj42=(/2,4,8,1/) - - integer, dimension(1) :: BSk11=(/15/) - integer, dimension(1) :: BSk12=(/15/) - integer, dimension(2) :: BSk21=(/10,5/) - integer, dimension(2) :: BSk22=(/7,8/) - integer, dimension(3) :: BSk31=(/1,11,3/) - integer, dimension(3) :: BSk32=(/5,7,3/) - integer, dimension(4) :: BSk41=(/3,4,2,6/) - integer, dimension(4) :: BSk42=(/4,2,5,4/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg37 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ distribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),BLOCK) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),BLOCK) - - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(2)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj11),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj11),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj11),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj21),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj21),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj21),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj31),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj31),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj31),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (4) - select case(psize(3)) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj41),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj41),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj41),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) / 4 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg37 - -! ----------------------------------------------------distrg38 -! 38 DISTRIBUTE arrA3 [GEN_BLOCK][*][GEN_BLOCK] -! REDISTRIBUTE [*][GEN_BLOCK][*] -! REDISTRIBUTE[GEN_BLOCK][GEN_BLOCK][*] -! REDISTRIBUTE[*][GEN_BLOCK][GEN_BLOCK] - - subroutine distrg38 (psize) - integer psize(3) - - integer, parameter :: AN1=5,AN2=6,AN3=12,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/5/) - integer, dimension(1) :: BSi12=(/5/) - integer, dimension(2) :: BSi21=(/4,1/) - integer, dimension(2) :: BSi22=(/3,2/) - integer, dimension(3) :: BSi31=(/3,1,1/) - integer, dimension(3) :: BSi32=(/1,2,2/) - integer, dimension(4) :: BSi41=(/1,2,1,1/) - integer, dimension(4) :: BSi42=(/3,1,0,2/) - - integer, dimension(1) :: BSj11=(/6/) - integer, dimension(1) :: BSj12=(/6/) - integer, dimension(2) :: BSj21=(/2,4/) - integer, dimension(2) :: BSj22=(/4,2/) - integer, dimension(3) :: BSj31=(/2,3,1/) - integer, dimension(3) :: BSj32=(/1,2,3/) - integer, dimension(4) :: BSj41=(/2,1,2,1/) - integer, dimension(4) :: BSj42=(/1,1,3,1/) - - integer, dimension(1) :: BSk11=(/12/) - integer, dimension(1) :: BSk12=(/12/) - integer, dimension(2) :: BSk21=(/10,2/) - integer, dimension(2) :: BSk22=(/5,7/) - integer, dimension(3) :: BSk31=(/2,6,4/) - integer, dimension(3) :: BSk32=(/3,4,5/) - integer, dimension(4) :: BSk41=(/2,4,5,1/) - integer, dimension(4) :: BSk42=(/3,2,4,3/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg38 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,GEN_BLOCK(BSk1)) - - select case(psize(1)) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),*,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),*,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),*,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),*,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),*,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),*,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),*,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),*,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),*,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),*,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),*,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),*,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),*,GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),*,GEN_BLOCK(BSk21)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),*,GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),*,GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(*,GEN_BLOCK(BSj2),*) - - select case(psize(1)) ! it's true - psize(1) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),*) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),*) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),*) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),*) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),*) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(*,GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - - select case(psize(1)) ! it's true - psize(1) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 15)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg38 - -! ----------------------------------------------------distrg39 -! 39 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] -! REDISTRIBUTE [GEN_BLOCK][*][*] -! REDISTRIBUTE[GEN_BLOCK][*][GEN_BLOCK] - - subroutine distrg39 (psize) - integer psize(3) - - integer, parameter :: AN1=10,AN2=16,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/10/) - integer, dimension(1) :: BSi12=(/10/) - integer, dimension(2) :: BSi21=(/6,4/) - integer, dimension(2) :: BSi22=(/2,8/) - integer, dimension(3) :: BSi31=(/5,2,3/) - integer, dimension(3) :: BSi32=(/2,4,4/) - integer, dimension(4) :: BSi41=(/3,2,1,4/) - integer, dimension(4) :: BSi42=(/5,1,1,3/) - - integer, dimension(1) :: BSj11=(/16/) - integer, dimension(1) :: BSj12=(/16/) - integer, dimension(2) :: BSj21=(/5,11/) - integer, dimension(2) :: BSj22=(/12,4/) - integer, dimension(3) :: BSj31=(/6,2,8/) - integer, dimension(3) :: BSj32=(/10,3,3/) - integer, dimension(4) :: BSj41=(/6,3,5,2/) - integer, dimension(4) :: BSj42=(/3,2,1,10/) - - integer, dimension(1) :: BSk11=(/10/) - integer, dimension(1) :: BSk12=(/10/) - integer, dimension(2) :: BSk21=(/9,1/) - integer, dimension(2) :: BSk22=(/4,6/) - integer, dimension(3) :: BSk31=(/10,0,0/) - integer, dimension(3) :: BSk32=(/5,3,2/) - integer, dimension(4) :: BSk41=(/0,2,3,5/) - integer, dimension(4) :: BSk42=(/0,4,0,6/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg39 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(*,GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(1)) ! it's true - psize(1) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,*) - - select case(psize(1)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),*,*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),*,*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),*,*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),*,*) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 10)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg39 - -! ----------------------------------------------------distrg310 -! 310 DISTRIBUTE arrA3 [GEN_BLOCK][GEN_BLOCK][BLOCK] -! REDISTRIBUTE [*][*][GEN_BLOCK] -! REDISTRIBUTE[*][GEN_BLOCK][BLOCK] - - subroutine distrg310 (psize) - integer psize(3) - - integer, parameter :: AN1=20,AN2=15,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/20/) - integer, dimension(1) :: BSi12=(/20/) - integer, dimension(2) :: BSi21=(/2,18/) - integer, dimension(2) :: BSi22=(/12,8/) - integer, dimension(3) :: BSi31=(/3,12,5/) - integer, dimension(3) :: BSi32=(/2,4,14/) - integer, dimension(4) :: BSi41=(/3,12,3,2/) - integer, dimension(4) :: BSi42=(/4,6,2,8/) - - integer, dimension(1) :: BSj11=(/15/) - integer, dimension(1) :: BSj12=(/15/) - integer, dimension(2) :: BSj21=(/3,12/) - integer, dimension(2) :: BSj22=(/5,10/) - integer, dimension(3) :: BSj31=(/6,3,6/) - integer, dimension(3) :: BSj32=(/3,1,11/) - integer, dimension(4) :: BSj41=(/5,1,3,6/) - integer, dimension(4) :: BSj42=(/2,2,6,5/) - - integer, dimension(1) :: BSk11=(/10/) - integer, dimension(1) :: BSk12=(/10/) - integer, dimension(2) :: BSk21=(/1,9/) - integer, dimension(2) :: BSk22=(/6,4/) - integer, dimension(3) :: BSk31=(/3,3,4/) - integer, dimension(3) :: BSk32=(/1,2,7/) - integer, dimension(4) :: BSk41=(/2,4,1,3/) - integer, dimension(4) :: BSk42=(/1,6,2,1/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg310 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),BLOCK) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),BLOCK) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 8 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(*,*,GEN_BLOCK(BSk2)) - - select case(psize(1)) ! it's true - psize(1) - case(1) -!dvm$ redistribute -!dvm$* A3(*,*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 8 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(*,GEN_BLOCK(BSj2),BLOCK) - - select case(psize(1)) ! it's true - psize(1) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj12),BLOCK) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 16)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg310 - -! ---------------------------------------------------------distrg311 -! 311 DISTRIBUTE arrA3 [GEN_BLOCK][*][*] -! REDISTRIBUTE [*][*][*] -! REDISTRIBUTE[BLOCK][*][GEN_BLOCK] - - subroutine distrg311 (psize) - integer psize(3) - - integer, parameter :: AN1=8,AN2=16,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, dimension(1) :: BSi11=(/8/) - integer, dimension(1) :: BSi12=(/8/) - integer, dimension(2) :: BSi21=(/1,7/) - integer, dimension(2) :: BSi22=(/5,3/) - integer, dimension(3) :: BSi31=(/1,5,2/) - integer, dimension(3) :: BSi32=(/2,2,4/) - integer, dimension(4) :: BSi41=(/1,2,3,2/) - integer, dimension(4) :: BSi42=(/4,1,2,1/) - - integer, dimension(1) :: BSj11=(/16/) - integer, dimension(1) :: BSj12=(/16/) - integer, dimension(2) :: BSj21=(/4,12/) - integer, dimension(2) :: BSj22=(/7,9/) - integer, dimension(3) :: BSj31=(/3,12,1/) - integer, dimension(3) :: BSj32=(/6,2,8/) - integer, dimension(4) :: BSj41=(/4,1,2,9/) - integer, dimension(4) :: BSj42=(/2,3,6,5/) - - integer, dimension(1) :: BSk11=(/24/) - integer, dimension(1) :: BSk12=(/24/) - integer, dimension(2) :: BSk21=(/20,4/) - integer, dimension(2) :: BSk22=(/10,14/) - integer, dimension(3) :: BSk31=(/5,11,8/) - integer, dimension(3) :: BSk32=(/6,7,11/) - integer, dimension(4) :: BSk41=(/12,4,6,2/) - integer, dimension(4) :: BSk42=(/10,8,2,4/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrg311 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,*) - - select case(psize(1)) - case(1) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),*,*) - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),*,*) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),*,*) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),*,*) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 6 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 6 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,*, GEN_BLOCK(BSk2)) - - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(BLOCK,*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute -!dvm$* A3(BLOCK,*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(BLOCK,*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(BLOCK,*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ get_actual(erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 12)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrg311 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix1.fdv deleted file mode 100644 index 9a3a5f0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix1.fdv +++ /dev/null @@ -1,564 +0,0 @@ - program DISTRMIX1 - - integer nproc - number_of_processors()=1 - -! Testing DISTRIBUTE and REDISTRIBUTE directive -! GEN_BLOCK, WGT_BLOCK, MULT_BLOCK distributions - - print *,'===START OF distrmix1========================' - - nproc = number_of_processors() - -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] - call distrmix11 -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] - call distrmix12 -C -------------------------------------------------- - - if (nproc > 4 ) then ! may be temporary - goto 1 - endif - -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] - call distrmix13 (nproc) -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrmix14 (nproc) -C -------------------------------------------------- -c 15 DISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] - call distrmix15 (nproc) -C -------------------------------------------------- -c 16 DISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - call distrmix16 (nproc) -C ------------------------------------------------- -C - 1 print *,'=== END OF distrmix1 ========================= ' - - end - -C ----------------------------------------------------distrmix11 -c 11 DISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] - - subroutine distrmix11 - integer nproc - - integer, parameter :: AN1=64,ER=10000 - integer :: erri=ER,i - - integer, parameter :: m1 = 4, m2 = 2 - - double precision :: WB(7) = (/2.1,4.6,3.,2.0,1.5,2.,3.1/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix11 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ redistribute A1(MULT_BLOCK(m1)) - - A1 = 5 - -!dvm$ actual(A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB,7)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + 5 - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m2)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction(min(erri)) - do i=1,AN1 - if (A1(i) /= i + 10) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrmix11 - -C ---------------------------------------------distrmix12 -c 12 DISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] - - subroutine distrmix12 - - integer, parameter :: AN1=75,ER=10000 - integer :: erri=ER,i - - integer, parameter :: m1 = 15 - - double precision :: WB1(6) = (/3.1,1.6,2.,3.0,0.5,2./) - double precision :: WB2(8) - > = (/1.5,2.1,2.6,4.2,2.5,3.5,1.,2.1/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix12 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ redistribute A1(WGT_BLOCK(WB1,6)) - - A1 = 0 - -!dvm$ actual(A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i)**2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,8)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction(min(erri)) - do i=1,AN1 - if (A1(i) /= i**2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrmix12 - -C ----------------------------------------------------distrm13 -c 13 DISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] - - subroutine distrmix13 (nproc) - integer nproc - - integer, parameter :: AN1=30,ER=10000 - integer :: erri=ER,i - - integer, parameter :: m1 = 5, m2 = 3 - - integer :: BS1(1) = (/30/) - integer :: BS2(2) = (/25,5/) - integer :: BS3(3) = (/3,15,12/) - integer :: BS4(4) = (/14,3,11,2/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix13 ' - -!dvm$ distribute A1(MULT_BLOCK(m1)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BSnproc)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS1)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS2)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS3)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i)*2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m2)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min(erri) ) - do i=1,AN1 - if (A1(i) /= i*2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrmix13 - -C ----------------------------------------------------distrmmix14 -c 14 DISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[MULT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrmix14 (nproc) - integer nproc - - integer, parameter :: AN1=35,ER=10000 - integer :: m1 = 7 - integer :: erri= ER, i - - integer :: BS11(1) = (/35/) - integer :: BS12(1) = (/35/) - integer :: BS21(2) = (/15,20/) - integer :: BS22(2) = (/8,27/) - integer :: BS31(3) = (/12,17,6/) - integer :: BS32(3) = (/14,4,17/) - integer :: BS41(4) = (/5,7,12,11/) - integer :: BS42(4) = (/14,10,5,6/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix14 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i*4 - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + 4 - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*4 + 4) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrmix14 - -C ----------------------------------------------------distrmix15 -c 15 DISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] - - subroutine distrmix15 (nproc) - integer nproc - - integer, parameter :: AN1=10,ER=10000 - integer :: erri= ER, i - - integer :: BS1(1) = (/10/) - integer :: BS2(2) = (/6,4/) - integer :: BS3(3) = (/2,4,4/) - integer :: BS4(4) = (/3,1,4,2/) - - double precision, dimension(6) :: WB1=(/1.0, 2., 2., 3.0, 1., 1./) - double precision, dimension(5) :: WB2=(/2.0, 1., 2., 2.0, 2./) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix15 ' - -!dvm$ distribute A1(WGT_BLOCK(WB1,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS1)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS2)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS3)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i)*A1(i) - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,5)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .ne.i**2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrmix15 - -C ----------------------------------------------------distrmix16 -c 16 DISTRIBUTE arrA1[GEN_BLOCK] -c REDISTRIBUTE arrA1[WGT_BLOCK] -c REDISTRIBUTE arrA1[GEN_BLOCK] - - subroutine distrmix16 (nproc) - integer nproc - - integer, parameter :: AN1=12,ER=10000 - integer :: erri= ER, i - - integer :: BS11(1) = (/12/) - integer :: BS12(1) = (/12/) - integer :: BS21(2) = (/8,4/) - integer :: BS22(2) = (/2,10/) !rem - integer :: BS31(3) = (/4,4,4/) - integer :: BS32(3) = (/2,3,7/) - integer :: BS41(4) = (/2,3,4,3/) - integer :: BS42(4) = (/6,1,3,2/) - - double precision, dimension(7) :: - > WB1=(/1.0, 2., 2., 3.0, 1., 1., 0.5/) - double precision, dimension(6) :: - > WB2=(/2.0, 0.1, 2.5, 2.0, 2., 0.7/) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrmix16 ' - -!dvm$ distribute :: A1 -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS1)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS11)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS21)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS31)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB1,7)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + A1(i) - enddo -!dvm$ end region - -!!!!dvm$ redistribute A1(GEN_BLOCK(BS2)) - - select case(nproc) - case(1) -!dvm$ redistribute A1(GEN_BLOCK(BS12)) - case(2) -!dvm$ redistribute A1(GEN_BLOCK(BS22)) - case (3) -!dvm$ redistribute A1(GEN_BLOCK(BS32)) - case(4) -!dvm$ redistribute A1(GEN_BLOCK(BS42)) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) .ne.i*2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A1) - - end subroutine distrmix16 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix2.fdv deleted file mode 100644 index 51da563..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix2.fdv +++ /dev/null @@ -1,1775 +0,0 @@ - program DISTRMIX2 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! GEN_BLOCK, WGT_BLOCK, MULT_BLOCK, BLOCK distributions - - integer PROCESSORS_RANK, PROCESSORS_SIZE - integer psize(2), rank - - PROCESSORS_RANK() = 2 - PROCESSORS_SIZE(i) = 1 - - print *,'===START OF distrmix2========================' - -C ------------------------------------------------- -c 21 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - call distrmix21 -C ------------------------------------------------- -c 22 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - call distrmix22 -C ------------------------------------------------- -c 23 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - call distrmix23 -C ------------------------------------------------- - rank = PROCESSORS_RANK() - - do i=1,rank - psize(i)=PROCESSORS_SIZE(i) - if (psize(i) > 4) then ! may be temporary - goto 1 - endif - enddo - -C ------------------------------------------------- - -c 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - call distrmix24 (psize) -C ------------------------------------------------- -c 25 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - call distrmix25 (psize) -C ------------------------------------------------- -c 26 DISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - call distrmix26 (psize) -C ------------------------------------------------- -c 27 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][BLOCK] - call distrmix27 (psize) -C ------------------------------------------------- -c 28 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK] - call distrmix28 (psize) -C ------------------------------------------------- -c 29 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [BLOCK][MULT_BLOCK] - call distrmix29 (psize) -C ------------------------------------------------- -c 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - call distrmix210 (psize) -C ------------------------------------------------- -c 211 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK] - call distrmix211 (psize) -C ------------------------------------------------- -c 212 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - call distrmix212 (psize) -C ------------------------------------------------- -c 213 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - call distrmix213 (psize) -C ------------------------------------------------- -C - 1 print *,'=== END OF distrmix2 ========================= ' - - end - -C ----------------------------------------------------distrmix21 -c 21 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - - subroutine distrmix21 - - integer, parameter :: AN1=10,AN2=56,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m11 = 2, m21 = 7 - integer, parameter :: m12 = 5, m22 = 8 - - double precision, dimension(8) :: - > WB1=(/1.0,2.,1.,3.2,1.0, 1.5, 2.3, 2./) - double precision, dimension(7) :: - > WB2=(/1.3, 1.5, 2.2, 1.6, 2.6, 0.5, 1.7/) - - integer A2(AN1,AN2) !static array - character(*), parameter :: tname='distrmix21 ' - -!dvm$ distribute A2(MULT_BLOCK(m11),MULT_BLOCK(m21)) -!dvm$ dynamic A2 - - A2 = 3 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB1,8),WGT_BLOCK(WB2,7)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + 3 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m12),MULT_BLOCK(m22)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)+6) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end subroutine distrmix21 - -C ----------------------------------------------------distrmix22 -c 22 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - - subroutine distrmix22 - - integer, parameter :: AN1=16,AN2=32,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 2, m2 = 4 - - double precision, dimension(7) :: - > WB1=(/2.4, 1.2, 3.0, 0.2, 1.5, 2.8, 2.1/) - double precision, dimension(6) :: - > WB2=(/2.0, 1.2, 2.6, 1.6, 3.5, 0.7/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix22 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,6)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 4 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) - 4 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,6),WGT_BLOCK(WB1,7)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate(A2) - - end subroutine distrmix22 - -C ----------------------------------------------------distrmix23 -c 23 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] - - subroutine distrmix23 - - integer, parameter :: AN1=18,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m11 = 2, m21 = 2 - integer, parameter :: m12 = 3, m22 = 3 - - double precision, dimension(10) :: - > WB1=(/2., 1.2, 2., 2.5, 0.2, 1.5, 1., 2.8, 2.1, 3./) - double precision, dimension(8) :: - > WB2=(/3.0, 3.5, 2.0, 1.2, 2.6, 1.6, 3.5, 0.7/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix23 ' - -!dvm$ distribute A2(MULT_BLOCK(m11),MULT_BLOCK(m21)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 5 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB1,10),MULT_BLOCK(m22)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) - 4 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m12),WGT_BLOCK(WB2,8)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)+ 1) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate(A2) - - end subroutine distrmix23 - -C ----------------------------------------------------distrmix24 -c 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] - - subroutine distrmix24 (psize) - integer psize(2) - - integer, parameter :: AN1=30,AN2=30,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 3, m2 = 5 - - integer, dimension(1) :: BSi1=(/30/) - integer, dimension(2) :: BSi2=(/25,5/) - integer, dimension(3) :: BSi3=(/12,4,14/) - integer, dimension(4) :: BSi4=(/8,7,5,10/) - - integer, dimension(1) :: BSj1=(/30/) - integer, dimension(2) :: BSj2=(/12,18/) - integer, dimension(3) :: BSj3=(/5,16,9/) - integer, dimension(4) :: BSj4=(/10,4,14,2/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix24 ' - -!dvm$ distribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),GEN_BLOCK(BSj)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m2),MULT_BLOCK(m1)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix24 - -C ----------------------------------------------------distrmix25 -c 25 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - - subroutine distrmix25 (psize) - integer psize(2) - - integer, parameter :: AN1=16,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 2, m2 = 3 - - integer, dimension(1) :: BSi11=(/16/) - integer, dimension(1) :: BSi12=(/16/) - integer, dimension(2) :: BSi21=(/15,1/) - integer, dimension(2) :: BSi22=(/6,10/) - integer, dimension(3) :: BSi31=(/3,8,5/) - integer, dimension(3) :: BSi32=(/7,3,6/) - integer, dimension(4) :: BSi41=(/2,3,4,7/) - integer, dimension(4) :: BSi42=(/5,1,6,4/) - - integer, dimension(1) :: BSj11=(/12/) - integer, dimension(1) :: BSj12=(/12/) - integer, dimension(2) :: BSj21=(/7,5/) - integer, dimension(2) :: BSj22=(/5,7/) - integer, dimension(3) :: BSj31=(/5,6,1/) - integer, dimension(3) :: BSj32=(/2,6,4/) - integer, dimension(4) :: BSj41=(/1,4,2,5/) - integer, dimension(4) :: BSj42=(/2,4,4,2/) - - integer :: A2(AN1,AN2) ! static array - character(*), parameter :: tname='distrmix25 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - A2 = 2 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + 2 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) - if (A2(i,j) /= (i*NL+j)+ 4) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 continue - - end subroutine distrmix25 - -C ----------------------------------------------------distrmix26 -c 26 DISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] - - subroutine distrmix26 (psize) - integer psize(2) - - integer, parameter :: AN1=52,AN2=50,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 13, m2 = 5 - - double precision, dimension(6) :: - > WB1=(/2.4, 2.2, 0.2, 3.5, 1.2, 1./) - double precision, dimension(8) :: - > WB2=(/1.0, 2.5, 3.0, 2.8, 1.6, 1., 0.5, 1.7/) - - integer, dimension(1) :: BSi1=(/52/) - integer, dimension(2) :: BSi2=(/15,37/) - integer, dimension(3) :: BSi3=(/20,28,4/) - integer, dimension(4) :: BSi4=(/6,24,4,18/) - - integer, dimension(1) :: BSj1=(/50/) - integer, dimension(2) :: BSj2=(/16,34/) - integer, dimension(3) :: BSj3=(/22,28,0/) - integer, dimension(4) :: BSj4=(/11,14,8,17/) !rem - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix26 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,6),MULT_BLOCK(m2)) - -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),WGT_BLOCK(WB2,8)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) * 5 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),GEN_BLOCK(BSj)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)* 5) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix26 - -C ----------------------------------------------------distrmix27 -c 27 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][BLOCK] - - subroutine distrmix27 (psize) - integer psize (2) - - integer, parameter :: AN1=8,AN2=64,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 2, m2 = 8 - - double precision, dimension(7) :: - > WB=(/2., 3.2, 2., 3.5, 1.2, 1., 4./) - - integer, dimension(1) :: BSi1=(/8/) - integer, dimension(2) :: BSi2=(/2,6/) - integer, dimension(3) :: BSi3=(/4,3,1/) - integer, dimension(4) :: BSi4=(/2,3,2,1/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix27 ' - -!dvm$ distribute A2(BLOCK,MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j)*2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),WGT_BLOCK(WB,7)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * 2 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),BLOCK) - - select case(psize(1)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),BLOCK) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),BLOCK) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),BLOCK) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)* 4) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix27 - -C ----------------------------------------------------distrmix28 -c 28 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK] - - subroutine distrmix28 (psize) - integer psize (2) - - integer, parameter :: AN1=42,AN2=16,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 3, m2 = 2 - - double precision, dimension(6) :: - > WB1=(/2., 3., 1.2, 1.5, 1., 1.5/) - double precision, dimension(7) :: - > WB2=(/2.2, 1.5, 3.0, 2.8, 2.6, 1.4, 0.5/) - - integer, dimension(1) :: BSj1=(/16/) - integer, dimension(2) :: BSj2=(/12,4/) - integer, dimension(3) :: BSj3=(/5,1,10/) - integer, dimension(4) :: BSj4=(/2,4,6,4/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix28 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ distribute A2(BLOCK(m1),GEN_BLOCK(Bj)) - - select case(psize(2)) - case(1) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j)*3 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB1,6),MULT_BLOCK(m2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j)*2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK, WGT_BLOCK(WB2,7)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*6) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end - -C ----------------------------------------------------distrmix29 -c 29 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [BLOCK][MULT_BLOCK] - - subroutine distrmix29 (psize) - integer psize(2) - - integer, parameter :: AN1=21,AN2=48, NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, parameter :: m1 = 3, m2 = 2 - - double precision, dimension(9) :: - > WB=(/2.2, 1.5, 3.0, 2.8, 2.6, 1.4, 0.5, 1., 2./) - - integer, dimension(1) :: BSi1=(/21/) - integer, dimension(2) :: BSi2=(/15,6/) - integer, dimension(3) :: BSi3=(/10,6,5/) - integer, dimension(4) :: BSi4=(/6,4,8,3/) - - integer, dimension(1) :: BSj1=(/48/) - integer, dimension(2) :: BSj2=(/16,32/) - integer, dimension(3) :: BSj3=(/20,18,10/) - integer, dimension(4) :: BSj4=(/2,42,1,3/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix29 ' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ redistribute A2(WGT_BLOCK(WB,9),BLOCK) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j) - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),GEN_BLOCK(BSj)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2)) - case (3) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j)*4 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK, MULT_BLOCK(m2)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*4) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix29 - -C ----------------------------------------------------distrmix210 -c 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - - subroutine distrmix210 (psize) - integer psize(2) - - integer, parameter :: AN1=9,AN2=11,NL=1000,ER=10000 - integer :: erri= ER,i,j - - integer, dimension(1) :: BSi1=(/9/) - integer, dimension(2) :: BSi2=(/3,6/) - integer, dimension(3) :: BSi3=(/1,3,5/) - integer, dimension(4) :: BSi4=(/2,3,1,3/) - - integer, dimension(1) :: BSj1=(/11/) - integer, dimension(2) :: BSj2=(/7,4/) - integer, dimension(3) :: BSj3=(/5,6,0/) - integer, dimension(4) :: BSj4=(/2,3,2,4/) - - double precision, dimension(6) :: - > WB1=(/1.0, 1.2, 2.5, 1.4, 2.5, 1.3/) - double precision, dimension(4) :: - > WB2=(/1.0,2.,1.5,1.7/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix210' - -!dvm$ distribute A2(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,4)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),GEN_BLOCK(BSj)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) * 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,4),WGT_BLOCK(WB1,6)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .ne.(i*NL+j)*2) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix210 - -C ----------------------------------------------------distrmix211 -c 211 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK] - - subroutine distrmix211 (psize) - integer psize(2) - - integer, parameter :: AN1=16,AN2=16,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(7) :: - > WB=(/1.0, 1.2, 2.5, 1.4, 2.5, 1.3, 2./) - - integer, dimension(1) :: BSi1=(/16/) - integer, dimension(2) :: BSi2=(/10,6/) - integer, dimension(3) :: BSi3=(/8,3,5/) - integer, dimension(4) :: BSi4=(/2,3,4,7/) !rem - - integer, dimension(1) :: BSj1=(/16/) - integer, dimension(2) :: BSj2=(/7,9/) - integer, dimension(3) :: BSj3=(/5,6,5/) - integer, dimension(4) :: BSj4=(/1,4,8,3/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix211' - -!dvm$ distribute A2(WGT_BLOCK(WB,7),BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j + 2 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),GEN_BLOCK(BSj)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,WGT_BLOCK(WB,5)) - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) .ne.(i*NL+j + 4)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix211 - -C ----------------------------------------------------distrmix212 -c 212 DISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][GEN_BLOCK] - - subroutine distrmix212 (psize) - integer psize(2) - - integer, parameter :: AN1=6,AN2=28,NL=1000,ER=10000 - integer :: erri= ER,i - - double precision, dimension(8) :: - > WB1=(/1.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1., 2./) - double precision, dimension(5) :: - > WB2=(/2., 1.3, 2., 1.0, 1.7/) - - integer, dimension(1) :: BSi11=(/6/) - integer, dimension(1) :: BSi12=(/6/) - integer, dimension(2) :: BSi21=(/1,5/) - integer, dimension(2) :: BSi22=(/4,2/) - integer, dimension(3) :: BSi31=(/0,4,2/) - integer, dimension(3) :: BSi32=(/1,3,2/) - integer, dimension(4) :: BSi41=(/2,3,1,0/) - integer, dimension(4) :: BSi42=(/1,2,1,2/) - - integer, dimension(1) :: BSj11=(/28/) - integer, dimension(1) :: BSj12=(/28/) - integer, dimension(2) :: BSj21=(/13,15/) - integer, dimension(2) :: BSj22=(/7,21/) - integer, dimension(3) :: BSj31=(/8,8,12/) - integer, dimension(3) :: BSj32=(/5,18,5/) - integer, dimension(4) :: BSj41=(/2,12,3,11/) - integer, dimension(4) :: BSj42=(/6,4,8,10/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix212' - -!dvm$ distribute :: A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ distribute A2(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -! print *, 'A2 =' -! print *, A2 - -!dvm$ redistribute A2(WGT_BLOCK(WB1,8),WGT_BLOCK(WB2,5)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + 1 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2)) - - select case(psize(1)) - - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi12),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi22),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi32),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj12)) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj22)) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj32)) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) - 1 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -! print *, 'A2 =' -! print *, A2 - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix212 - -C ----------------------------------------------------distrmix213 -c 213 DISTRIBUTE arrA2[BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[GEN_BLOCK][BLOCK] - - subroutine distrmix213 (psize) - integer psize(2) - - integer, parameter :: AN1=27,AN2=14,NL=1000,ER=10000 - integer :: erri= ER,i - - integer, parameter :: m1 = 3, m2 = 2 - - double precision, dimension(4) :: - > WB=(/1.2, 1.6, 2.0, 1.8/) - - integer, dimension(1) :: BSi1=(/27/) - integer, dimension(2) :: BSi2=(/13,14/) - integer, dimension(3) :: BSi3=(/11,13,3/) - integer, dimension(4) :: BSi4=(/3,5,11,8/) - - integer, dimension(1) :: BSj1=(/14/) - integer, dimension(2) :: BSj2=(/12,2/) - integer, dimension(3) :: BSj3=(/5,6,3/) - integer, dimension(4) :: BSj4=(/2,3,5,4/) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrmix213' - -!dvm$ distribute ::A2 -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!!!!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj)) - - select case(psize(2)) - case(1) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj1)) - case(2) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj2)) - case(3) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj3)) - case(4) -!dvm$ redistribute A2(BLOCK,GEN_BLOCK(BSj4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j + 4 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB,4), MULT_BLOCK(m2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + 4 - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A2(GEN_BLOCK(BSi),BLOCK) - - select case(psize(1)) - case(1) -!dvm$ redistribute A2(GEN_BLOCK(BSi1),BLOCK) - case(2) -!dvm$ redistribute A2(GEN_BLOCK(BSi2),BLOCK) - case(3) -!dvm$ redistribute A2(GEN_BLOCK(BSi3),BLOCK) - case(4) -!dvm$ redistribute A2(GEN_BLOCK(BSi4),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual(erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= i*NL+j+8) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A2) - - end subroutine distrmix213 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix3.fdv deleted file mode 100644 index bf3fbb7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MIX/distrmix3.fdv +++ /dev/null @@ -1,3403 +0,0 @@ - program DISTRMIX3 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! GEN_BLOCK, WGT_BLOCK, MULT_BLOCK, BLOCK, * distributions - - integer PROCESSORS_RANK, PROCESSORS_SIZE - integer psize(3), rank - - PROCESSORS_RANK() = 3 - PROCESSORS_SIZE(i) = 1 - - print *,'===START OF distrmix3========================' - -C ------------------------------------------------- -c 31 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - call distrmix31 -C ------------------------------------------------- -c 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrmix32 -C ------------------------------------------------- -c 33 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - call distrmix33 -C ------------------------------------------------- -c 34 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrmix34 -C ------------------------------------------------- -c 35 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][MULT_BLOCK][WGT_BLOCK] - call distrmix35 -C ------------------------------------------------- -c 36 DISTRIBUTE arrA3[WGT_BLOCK][MULT_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK] - call distrmix36 -C ------------------------------------------------- -c 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK] - call distrmix37 -C ------------------------------------------------- -c 38 DISTRIBUTE arrA3[MULT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][*][*] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][*] - call distrmix38 -C ------------------------------------------------- -c 39 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] -c REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][MULT_BLOCK][*] - call distrmix39 -C ------------------------------------------------- -c 310 DISTRIBUTE arrA3[WGT_BLOCK][*][*] -c REDISTRIBUTE [MULT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][WGT_BLOCK][MULT_BLOCK] - call distrmix310 -C ------------------------------------------------- - - rank = PROCESSORS_RANK() - - do i=1,rank - psize(i)=PROCESSORS_SIZE(i) - if (psize(i) > 4) then ! may be temporary - goto 1 - endif - enddo - -C ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 2 .and. psize(3) == 3) !range 1 2 3 - >.or. - > (psize(1) == 2 .and. psize(2) == 3 .and. psize(3) == 2) !range 2 3 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 4 .and. psize(3) == 1) !range 3 4 1 - >.or. - > (psize(1) == 4 .and. psize(2) == 1 .and. psize(3) == 4)) !range 4 1 4 - >then -c 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - call distrmix311 (psize) - endif -C------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 4 .and. psize(3) == 4) !range 1 4 4 - >.or. - > (psize(1) == 2 .and. psize(2) == 4 .and. psize(3) == 2) !range 2 4 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 1 .and. psize(3) == 3) !range 3 1 3 - >.or. - > (psize(1) == 4 .and. psize(2) == 2 .and. psize(3) == 2)) !range 4 2 2 - >then -c 312 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] - call distrmix312 (psize) - endif -C------------------------------------------------- -c 313 DISTRIBUTE arrA3[BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][WGT_BLOCK] - call distrmix313 (psize) -C ------------------------------------------------- -c 314 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] - call distrmix314 (psize) -C ------------------------------------------------- -c 315 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - call distrmix315 (psize) -C ------------------------------------------------- -c 316 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - call distrmix316 (psize) -C ------------------------------------------------- -c 317 DISTRIBUTE arrA3[GEN_BLOCK][*][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE [*][GEN_BLOCK][BLOCK] - call distrmix317 (psize) -C ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 1 .and. psize(3) == 1) !range 1 1 1 - >.or. - > (psize(1) == 1 .and. psize(2) == 4 .and. psize(3) == 3) !range 1 4 3 - >.or. - > (psize(1) == 2 .and. psize(2) == 3 .and. psize(3) == 2) !range 2 3 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 1 .and. psize(3) == 4) !range 3 1 4 - >.or. - > (psize(1) == 4 .and. psize(2) == 2 .and. psize(3) == 2)) !range 4 2 2 - >then -c 318 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - call distrmix318 (psize) - endif -C ------------------------------------------------- - if - > ((psize(1) == 1 .and. psize(2) == 2 .and. psize(3) == 1) !range 1 2 1 - >.or. - > (psize(1) == 2 .and. psize(2) == 2 .and. psize(3) == 2) !range 2 2 2 - >.or. - > (psize(1) == 3 .and. psize(2) == 2 .and. psize(3) == 2) !range 3 2 2 - >.or. - > (psize(1) == 4 .and. psize(2) == 4 .and. psize(3) == 1)) !range 4 4 1 - >then - -c 319 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrmix319 (psize) - endif -C ------------------------------------------------- -c 320 DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrB3[WGT_BLOCK][BLOCK][WGT_BLOCK] - call distrmix320 (psize) -C ------------------------------------------------- -c 321 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] ! static -c REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - call distrmix321 (psize) -C ------------------------------------------------- -c 322 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK] - call distrmix322 (psize) -C ------------------------------------------------- -c 323 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][*] - call distrmix323 (psize) -C ------------------------------------------------- -c 324 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][*] -c REDISTRIBUTE [*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][*][GEN_BLOCK] - call distrmix324 (psize) -C ------------------------------------------------- -c 325 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [*][WGT_BLOCK][*] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] - call distrmix325 (psize) -C ------------------------------------------------- -C - 1 print *,'=== END OF distrmix3 ========================= ' - - end - -C ----------------------------------------------------distrmix31 -c 31 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - - subroutine distrmix31 - - integer, parameter :: AN1=32,AN2=32,AN3=32,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m11 = 4, m21 = 8, m31 = 2 - integer, parameter :: m12 = 2, m22 = 4, m32 = 4 - - double precision, dimension(7) :: - > WB1=(/2.0,1.5,4.,3.0, 2., 3., 2./) - double precision, dimension(8):: - > WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision, dimension(7) :: - > WB3=(/2.0,2.,2.6,3.0, 1., 1.5, 1./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix31 ' - - -!dvm$ distribute A3(MULT_BLOCK(m11),MULT_BLOCK(m21),MULT_BLOCK(m31)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,7)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m12),MULT_BLOCK(m22),MULT_BLOCK(m32)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 2) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix31 - -C ----------------------------------------------------distrmix32 -c 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - - subroutine distrmix32 - - integer, parameter :: AN1=16,AN2=16,AN3=12,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 4, m3 = 4 - - double precision, dimension(6) :: - > WB1=(/2.0,5.,0.,3.0, 2., 3./) - double precision, dimension(8):: - > WB2=(/1.2,2.,4.,2.5,3.,1.,3.,2./) - double precision, dimension(7) :: - > WB3=(/2.3,1.2,4.6,3.0, 1.5, 2.5, 1.2/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix32 ' - -!dvm$ distribute -!dvm$* A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,7)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 10 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,7),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 12)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix32 - -C----------------------------------------------------distrmix33 -c 33 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - - subroutine distrmix33 - - integer, parameter :: AN1=12,AN2=18,AN3=20,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m11 = 2, m21 = 3, m31 = 2 - integer, parameter :: m12 = 6, m22 = 9, m32 = 5 - - double precision, dimension(7) :: - > WB1=(/2.2, 2.4, 4., 2.5, 3.5, 1.,3./) - double precision, dimension(6):: - > WB2=(/1.2, 2., 2.5, 3., 1.5, 3./) - double precision, dimension(5) :: - > WB3=(/4.3, 2.2, 2.6, 2.0, 2.5/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix33 ' - -!dvm$ distribute A3(MULT_BLOCK(m11),WGT_BLOCK(WB2,6),MULT_BLOCK(m31)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 7 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,7),MULT_BLOCK(m21),WGT_BLOCK(WB3,5)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1, AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m12),MULT_BLOCK(m22),MULT_BLOCK(m32)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 2)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix33 - -C------------------------------------------------------distrmix34 -c 34 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] - - subroutine distrmix34 - - integer, parameter :: AN1=35,AN2=28,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 7, m2 = 7, m3 = 4 - - double precision, dimension(8) :: - > WB1=(/2., 2., 4., 2.7, 3.5, 2., 1., 3./) - double precision, dimension(6):: - > WB2=(/12., 2.5, 3., 1.5, 3., 2./) - double precision, dimension(7) :: - > WB3=(/4.,3., 2.2, 2.6, 2.0, 2.5, 1./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix34 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,8),WGT_BLOCK(WB2,6),MULT_BLOCK(m3)) - - A3 = 0 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB2,6),MULT_BLOCK(m2),WGT_BLOCK(WB3,7)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k)*2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m1),WGT_BLOCK(WB3,7),WGT_BLOCK(WB1,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) * 2) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix34 - -C------------------------------------------------------distrmix35 -c 35 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][MULT_BLOCK][WGT_BLOCK] - - subroutine distrmix35 - - integer, parameter :: AN1= 10, AN2=21, AN3=32,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 3, m3 = 4 - - double precision, dimension(7) :: - > WB1=(/2., 4., 3., 2.5, 5., 1., 2./) - double precision, dimension(10):: - > WB2=(/1., 2., 5., 3., 1., 3., 2., 3., 2., 1./) - double precision, dimension(8) :: - > WB3=(/2.3, 2.2, 1.6, 1., 2.0, 2.5, 3., 2./) - - integer A3(AN1,AN2,AN3) ! static array - character(12), parameter :: tname='distrmix35 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),WGT_BLOCK(WB2,10),BLOCK) -!dvm$ dynamic A3 - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,7),BLOCK,MULT_BLOCK(m3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(BLOCK, MULT_BLOCK(m2),WGT_BLOCK(WB3,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 7)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end subroutine distrmix35 - -C------------------------------------------------------distrmix36 -c 36 DISTRIBUTE arrA3[WGT_BLOCK][MULT_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK] - - subroutine distrmix36 - - integer, parameter :: AN1=16,AN2=28,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 7, m3 = 4 - - double precision, dimension(8) :: - > WB1=(/1.2,2.,4.,2.5,3.,1.,3.,2./) - double precision, dimension(7):: - > WB2=(/2.,2.,4.,2.5,3.,1.,3./) - double precision, dimension(7) :: - > WB3=(/2.5,2.2,4.2,2.0, 1.5, 3.5, 1.2/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix36 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,8),MULT_BLOCK(m2),BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = (i*NL/10 + j*NL/100 + k) * 3 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m1),BLOCK,WGT_BLOCK(WB3,7)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(BLOCK, WGT_BLOCK(WB2,7),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) * 6) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix36 - -C -----------------------------------------------------distrmix37 -c 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][MULT_BLOCK] - - subroutine distrmix37 - - integer, parameter :: AN1=10,AN2=10,AN3=30,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 5, m3 = 3 - - double precision, dimension(6) :: - > WB2=(/4., 2.5, 3., 1., 3., 2./) - double precision, dimension(8):: - > WB3=(/1.,2.,3.,3.5, 4., 1., 3., 2./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix37 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),BLOCK,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = (i*NL/10 + j*NL/100 + k) * 3 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(BLOCK,BLOCK,WGT_BLOCK(WB3,8)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(BLOCK, WGT_BLOCK(WB2,6),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) * 6) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix37 - -C------------------------------------------------------distrmix38 -c 38 DISTRIBUTE arrA3[MULT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][*][*] -c REDISTRIBUTE [WGT_BLOCK][MULT_BLOCK][*] - - subroutine distrmix38 - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 1, m3 = 4 - - double precision, dimension(11) :: - > WB=(/2.2, 3.,3., 2.5, 2., 1., 4., 2., 1., 5., 2./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix38 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),*,WGT_BLOCK(WB,11)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 5 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + (i*NL/10 + j*NL/100 + k) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB,8),MULT_BLOCK(m2),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 7) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix38 - -C ----------------------------------------------------distrmix39 -C 39 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] -c REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][MULT_BLOCK][*] - - subroutine distrmix39 - - integer, parameter :: AN1=18,AN2=6,AN3=30,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 3, m2 = 2, m3 = 5 - - double precision, dimension(11) :: - > WB=(/3.2, 2., 2., 1.5, 4., 2., 3., 2.5, 1.6, 3., 2./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix39 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),BLOCK,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 7 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + (i*NL/10 + j*NL/100 + k) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB,11),*,WGT_BLOCK(WB,7)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 4 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(*,MULT_BLOCK(m2),*) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 11) then - erri = min(erri, i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix39 - -C ----------------------------------------------------distrmix310 -c 310 DISTRIBUTE arrA3[WGT_BLOCK][*][*] -c REDISTRIBUTE [MULT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE [*][WGT_BLOCK][MULT_BLOCK] - - subroutine distrmix310 - - integer, parameter :: AN1=25,AN2=35,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 5, m2 = 7, m3 = 2 - - double precision, dimension(12) :: - > WB=(/3., 1., 2., 1.5, 3., 4., 3., 2.5, 1.6, 3., 1.2, 1./) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix310 ' - -!dvm$ distribute A3(WGT_BLOCK(WB,12),*,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m1), *, WGT_BLOCK(WB,8)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(*,MULT_BLOCK(m2),WGT_BLOCK(WB,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) - 2) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrmix310 - -C ----------------------------------------------------distrmix311 -c 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] range 1 1 1 -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 2 3 -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] range 2 3 2 -c range 3 2 2 -c range 4 1 4 - subroutine distrmix311 (psize) - integer psize(3) - - integer, parameter :: AN1=15,AN2=15,AN3=28,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m11 = 3, m21 = 5, m31 = 4 - integer, parameter :: m12 = 5, m22 = 3, m32 = 7 - - integer, dimension(1) :: BSi111=(/15/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/15/) - integer, dimension(1) :: BSk111=(/28/) - - integer, dimension(1) :: BSi1=(/15/) !range 1 2 3 - integer, dimension(2) :: BSj1=(/8,7/) - integer, dimension(3) :: BSk1=(/12,10,6/) - - integer, dimension(2) :: BSi2=(/4,11/) !range 2 3 2 - integer, dimension(3) :: BSj2=(/7,5,3/) - integer, dimension(2) :: BSk2=(/10,18/) - - integer, dimension(3) :: BSi3=(/2,8,5/) !range 3 4 1 - integer, dimension(4) :: BSj3=(/3,2,6,4/) - integer, dimension(1) :: BSk3=(/28/) - - integer, dimension(4) :: BSi4=(/1,2,4,8/) !range 4 1 4 - integer, dimension(1) :: BSj4=(/15/) - integer, dimension(4) :: BSk4=(/12,4,6,6/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix311 ' - -!dvm$ distribute A3(MULT_BLOCK(m11),MULT_BLOCK(m21),MULT_BLOCK(m31)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),BLOCK,GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m12),MULT_BLOCK(m22),MULT_BLOCK(m32)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) * 2) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix311 - -C ----------------------------------------------------distrmix312 -c 312 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 1 1 -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] range 1 4 4 -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] range 2 4 2 -c range 3 1 3 -c range 4 2 2 - subroutine distrmix312 (psize) - integer psize(3) - - integer, parameter :: AN1=24,AN2=10,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 3, m2 = 2, m3 = 4 - - double precision, dimension(10) :: - > WB=(/2., 2.5, 3., 4., 3.5, 2.5, 2.6, 3., 2.2, 3./) - - integer, dimension(1) :: BSi111=(/24/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/10/) - integer, dimension(1) :: BSk111=(/24/) - - integer, dimension(1) :: BSi11=(/24/) !range 1 4 4 - integer, dimension(1) :: BSi12=(/24/) - integer, dimension(4) :: BSj11=(/3,2,4,1/) - integer, dimension(4) :: BSj12=(/4,2,1,3/) - integer, dimension(4) :: BSk11=(/10,4,3,7/) - integer, dimension(4) :: BSk12=(/5,6,7,6/) - - integer, dimension(2) :: BSi21=(/14,10/) !range 2 4 2 - integer, dimension(2) :: BSi22=(/8,16/) - integer, dimension(4) :: BSj21=(/3,2,1,4/) - integer, dimension(4) :: BSj22=(/5,3,2,0/) - integer, dimension(2) :: BSk21=(/20,4/) - integer, dimension(2) :: BSk22=(/16,8/) - - integer, dimension(3) :: BSi31=(/8,12,4/) !range 3 1 3 - integer, dimension(3) :: BSi32=(/3,10,11/) - integer, dimension(1) :: BSj31=(/10/) - integer, dimension(1) :: BSj32=(/10/) - integer, dimension(3) :: BSk31=(/7,9,8/) - integer, dimension(3) :: BSk32=(/4,6,14/) - - integer, dimension(4) :: BSi41=(/2,6,12,4/) !range 4 2 2 - integer, dimension(4) :: BSi42=(/3,2,9,10/) - integer, dimension(2) :: BSj41=(/6,4/) - integer, dimension(2) :: BSj42=(/10,0/) - integer, dimension(2) :: BSk41=(/14,10/) - integer, dimension(2) :: BSk42=(/6,18/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix312 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 30 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),WGT_BLOCK(WB,10),MULT_BLOCK(m3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 30 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),BLOCK) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),BLOCK) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),BLOCK) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),BLOCK) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),BLOCK) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 30 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 30)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix312 - -C------------------------------------------------------distrmix313 -c 313 DISTRIBUTE arrA3[BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][GEN_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][WGT_BLOCK] - - subroutine distrmix313 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=24,AN3=36,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 3, m3 = 4 - - double precision, dimension(9) :: - > WB=(/1., 2.5, 3., 4., 2.5, 2.6, 3.5, 4.2, 3./) - - integer, dimension(1) :: BSj1=(/24/) - integer, dimension(2) :: BSj2=(/21,3/) - integer, dimension(3) :: BSj3=(/7,9,8/) - integer, dimension(4) :: BSj4=(/10,4,6,4/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix313 ' - -!dvm$ distribute A3(BLOCK, BLOCK, MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 20 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj),BLOCK) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),WGT_BLOCK(WB,9)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 20 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 5)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix313 - -C-----------------------------------------------------distrmix314 -c 314 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][BLOCK][WGT_BLOCK] -c - subroutine distrmix314 (psize) - integer psize(3) - - integer, parameter :: AN1=24,AN2=15,AN3=12,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 4, m2 = 3, m3 = 2 - - double precision, dimension(10) :: - > WB=(/3., 2., 2., 4., 2., 3., 2.5, 2.6, 1.2, 2./) - - integer, dimension(1) :: BSi1=(/24/) - integer, dimension(2) :: BSi2=(/14,10/) - integer, dimension(3) :: BSi3=(/12,8,4/) - integer, dimension(4) :: BSi4=(/6,6,5,7/) - - integer, dimension(1) :: BSj1=(/15/) - integer, dimension(2) :: BSj2=(/7,8/) - integer, dimension(3) :: BSj3=(/3,4,8/) - integer, dimension(4) :: BSj4=(/1,6,3,5/) - - integer, dimension(1) :: BSk1=(/12/) - integer, dimension(2) :: BSk2=(/4,8/) - integer, dimension(3) :: BSk3=(/6,2,4/) - integer, dimension(4) :: BSk4=(/2,3,6,1/) - - integer A3(AN1,AN2,AN3) ! static - character(12), parameter :: tname='distrmix314 ' - -!dvm$ distribute A3(WGT_BLOCK(WB,10), BLOCK, MULT_BLOCK(m3)) -!dvm$ dynamic A3 - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),BLOCK,GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),BLOCK,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 2)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 continue - - end subroutine distrmix314 - -C ----------------------------------------------------distrmix315 -c 315 DISTRIBUTE arrA3[MULT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - - subroutine distrmix315 (psize) - integer psize(3) - - integer, parameter :: AN1=21, AN2=14, AN3=16, NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 3, m2 = 2, m3 = 4 - - double precision, dimension(8) :: - > WB1=(/2., 4., 3., 1., 2.5, 2.6, 2.2, 2./) - double precision, dimension(10) :: - > WB2=(/4., 2., 2.5, 4., 2., 3., 3.5, 1.6, 3.2, 2./) - - integer, dimension(1) :: BSi1=(/21/) - integer, dimension(2) :: BSi2=(/14,7/) - integer, dimension(3) :: BSi3=(/10,8,3/) - integer, dimension(4) :: BSi4=(/6,6,5,4/) - - integer, dimension(1) :: BSj1=(/14/) - integer, dimension(2) :: BSj2=(/3,11/) - integer, dimension(3) :: BSj3=(/4,3,7/) - integer, dimension(4) :: BSj4=(/2,6,2,4/) - - integer, dimension(1) :: BSk1=(/16/) - integer, dimension(2) :: BSk2=(/4,12/) - integer, dimension(3) :: BSk3=(/6,3,7/) !rem - integer, dimension(4) :: BSk4=(/2,3,6,5/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix315 ' - -!dvm$ distribute -!dvm$* A3 (MULT_BLOCK(m1), WGT_BLOCK(WB1,8), WGT_BLOCK(WB2,10)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 12 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj),GEN_BLOCK(BSk)) - - select case(psize(2)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 12 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),WGT_BLOCK(WB1,6),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 20 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 4)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno (tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix315 - -C-----------------------------------------------------distrmix316 -c 316 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][MULT_BLOCK] - - subroutine distrmix316 (psize) - integer psize(3) - - integer, parameter :: AN1=33,AN2=44,AN3=55,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 3, m2 = 11, m3 = 5 - - double precision, dimension (7) :: - > WB1=(/3., 2.5, 2., 4., 2.5, 2.0, 3.5/) - double precision, dimension(8) :: - > WB2=(/4., 3., 2.5, 2., 2., 3., 3.5, 2.6/) - - integer, dimension(1) :: BSi1=(/33/) - integer, dimension(2) :: BSi2=(/23,10/) - integer, dimension(3) :: BSi3=(/12,15,6/) - integer, dimension(4) :: BSi4=(/6,13,11,3/) !rem - - integer, dimension(1) :: BSj1=(/44/) - integer, dimension(2) :: BSj2=(/14,30/) - integer, dimension(3) :: BSj3=(/11,21,12/) - integer, dimension(4) :: BSj4=(/6,14,10,14/) - - integer, dimension(1) :: BSk1=(/55/) - integer, dimension(2) :: BSk2=(/28,27/) - integer, dimension(3) :: BSk3=(/12,18,25/) - integer, dimension(4) :: BSk4=(/10,18,15,12/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix316 ' - -!dvm$ distribute -!dvm$* A3(WGT_BLOCK(WB1,7), WGT_BLOCK(WB2,8), MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),GEN_BLOCK(BSj),BLOCK) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - - case(3) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),WGT_BLOCK(WB1,7),MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 2 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 5)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix316 - -C-----------------------------------------------------distrmix317 -c 317 DISTRIBUTE arrA3[GEN_BLOCK][*][GEN_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE [*][GEN_BLOCK][BLOCK] range 3 4 1 - - subroutine distrmix317 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=16,AN3=12,NL=1000,ER=100000 - integer :: erri=ER,i,j,k - - integer, parameter :: m1 = 2, m2 = 4, m3 = 3 - - double precision, dimension(8) :: - > WB=(/2., 1., 2.5, 3., 4., 3., 3.5, 4./) - - integer, dimension(1) :: BSi1=(/12/) - integer, dimension(2) :: BSi2=(/4,8/) - integer, dimension(3) :: BSi3=(/2,7,3/) - integer, dimension(4) :: BSi4=(/2,3,4,3/) - - integer, dimension(1) :: BSj1=(/16/) - integer, dimension(2) :: BSj2=(/11,5/) - integer, dimension(3) :: BSj3=(/8,2,6/) - integer, dimension(4) :: BSj4=(/1,3,4,8/) !rem - - integer, dimension(1) :: BSk1=(/12/) - integer, dimension(2) :: BSk2=(/2,10/) - integer, dimension(3) :: BSk3=(/1,4,7/) - integer, dimension(4) :: BSk4=(/2,4,3,3/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix317 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),*,GEN_BLOCK(BSk)) - select case(psize(1)) - case(1) - select case(psize(2)) ! it's is true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),*,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's is true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(2)) ! it's is true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),*,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),*,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),*,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),*,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) ! it's is true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),*,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),*,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),*,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),*,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10+j*NL/100+k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),WGT_BLOCK(WB,8),*) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$* redistribute A3(*,GEN_BLOCK(BSj),BLOCK) - - select case (psize(1)) !rem - case(1) -!dvm$ redistribute A3(*,GEN_BLOCK(BSj1),BLOCK) - case(2) -!dvm$ redistribute A3(*,GEN_BLOCK(BSj2),BLOCK) - case(3) -!dvm$ redistribute A3(*,GEN_BLOCK(BSj3),BLOCK) - case(4) -!dvm$ redistribute A3(*,GEN_BLOCK(BSj4),BLOCK) - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) / 2 - if (A3(i,j,k) /= i*NL/10+j*NL/100+k) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix317 - -C ----------------------------------------------------distrmix318 -c 318 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 1 1 -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] range 1 4 3 -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 2 3 2 -c range 3 1 4 -c range 4 2 2 - subroutine distrmix318 (psize) - integer psize(3) - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(7) :: - > WB1=(/2.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1./) - double precision, dimension(5) :: - > WB2=(/2., 1.3, 2., 1.0, 1.7/) - double precision, dimension(6) :: - > WB3=(/2., 3., 1.3, 2., 1.0, 1.7/) - - integer, dimension(1) :: BSi111=(/8/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/8/) - integer, dimension(1) :: BSk111=(/8/) - - integer, dimension(1) :: BSi11=(/8/) !range 1 4 3 - integer, dimension(1) :: BSi12=(/8/) - integer, dimension(4) :: BSj11=(/3,2,2,1/) - integer, dimension(4) :: BSj12=(/4,2,1,1/) - integer, dimension(3) :: BSk11=(/4,3,1/) - integer, dimension(3) :: BSk12=(/2,4,2/) - - integer, dimension(2) :: BSi21=(/6,2/) !range 2 3 2 - integer, dimension(2) :: BSi22=(/4,4/) - integer, dimension(3) :: BSj21=(/3,2,3/) - integer, dimension(3) :: BSj22=(/3,1,4/) - integer, dimension(2) :: BSk21=(/1,7/) - integer, dimension(2) :: BSk22=(/2,6/) - - integer, dimension(3) :: BSi31=(/3,2,3/) !range 3 1 4 - integer, dimension(3) :: BSi32=(/4,2,2/) - integer, dimension(1) :: BSj31=(/8/) - integer, dimension(1) :: BSj32=(/8/) - integer, dimension(4) :: BSk31=(/1,3,2,2/) - integer, dimension(4) :: BSk32=(/1,1,4,2/) - - integer, dimension(4) :: BSi41=(/3,2,1,2/) !range 4 2 2 - integer, dimension(4) :: BSi42=(/5,1,1,1/) - integer, dimension(2) :: BSj41=(/5,3/) - integer, dimension(2) :: BSj42=(/6,2/) - integer, dimension(2) :: BSk41=(/2,6/) - integer, dimension(2) :: BSk42=(/1,7/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix318 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,5),WGT_BLOCK(WB3,6)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 1 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi12),GEN_BLOCK(BSj12),GEN_BLOCK(BSk12)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi22),GEN_BLOCK(BSj22),GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi32),GEN_BLOCK(BSj32),GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi42),GEN_BLOCK(BSj42),GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 1)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix318 - -C ----------------------------------------------------distrmix319 -c -c 319 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] range 1 1 1 -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][GEN_BLOCK] range 1 2 1 -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] range 2 2 2 -c range 3 2 2 -c range 4 4 1 - subroutine distrmix319 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=6,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(6) :: - > WB1=(/2.0, 1.2, 2., 2.4, 2.3, 1.6/) - double precision, dimension(5) :: - > WB2=(/2.4, 1.8, 2., 1.0, 1.7/) - double precision, dimension(8) :: - > WB3=(/2., 3., 1.3, 2., 1.0, 1.7, 3., 4./) - - integer, dimension(1) :: BSi111=(/8/) !range 1 1 1 - integer, dimension(1) :: BSj111=(/8/) - integer, dimension(1) :: BSk111=(/8/) - - integer, dimension(1) :: BSi1=(/12/) !range 1 2 1 - integer, dimension(2) :: BSj1=(/5,1/) - integer, dimension(1) :: BSk1=(/10/) !rem - - integer, dimension(2) :: BSi2=(/6,6/) !range 2 2 2 - integer, dimension(2) :: BSj2=(/4,2/) - integer, dimension(2) :: BSk2=(/3,7/) - - integer, dimension(3) :: BSi3=(/5,2,5/) !range 3 2 2 - integer, dimension(2) :: BSj3=(/2,4/) - integer, dimension(2) :: BSk3=(/2,8/) - - integer, dimension(4) :: BSi4=(/4,2,4,2/) !range 4 4 1 !rem - integer, dimension(4) :: BSj4=(/1,1,2,2/) - integer, dimension(1) :: BSk4=(/10/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix319 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,5),WGT_BLOCK(WB3,8)) - - A3 = 10 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k)+ i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),GEN_BLOCK(BSj),GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - if (psize(2) == 1 .and. psize(3) == 1) then -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi111),GEN_BLOCK(BSj111),GEN_BLOCK(BSk111)) - else -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - endif - case(2) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute -!dvm$* A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB2,5),WGT_BLOCK(WB3,6),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 12 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix319 - -C ----------------------------------------------------distrmix320 -c 320 DISTRIBUTE arrA3[BLOCK][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE arrB3[WGT_BLOCK][BLOCK][WGT_BLOCK] - - subroutine distrmix320 (psize) - integer psize(3) - - integer, parameter :: AN1=5,AN2=7,AN3=6,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(7) :: - > WB1=(/2.0, 2.2, 3., 2.4, 2.3, 1.6, 0.5/) - double precision, dimension(6) :: - > WB2=(/2.4, 1.8, 3., 2.0, 1.7, 1./) - double precision, dimension(8) :: - > WB3=(/1., 3.5, 2.3, 2., 1.5, 1.7, 3., 2./) - - integer, dimension(1) :: BSi1=(/5/) - integer, dimension(2) :: BSi2=(/1,4/) - integer, dimension(3) :: BSi3=(/1,2,2/) - integer, dimension(4) :: BSi4=(/2,1,1,1/) - - integer, dimension(1) :: BSj1=(/7/) - integer, dimension(2) :: BSj2=(/3,4/) - integer, dimension(3) :: BSj3=(/2,4,1/) - integer, dimension(4) :: BSj4=(/1,2,1,3/) - - integer, dimension(1) :: BSk1=(/6/) - integer, dimension(2) :: BSk2=(/3,3/) - integer, dimension(3) :: BSk3=(/2,3,1/) - integer, dimension(4) :: BSk4=(/3,2,0,1/) - - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix320 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj),GEN_BLOCK(BSk)) - - select case(psize(2)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj1),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj2),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj3),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(BLOCK,GEN_BLOCK(BSj4),GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - A3 = 5 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,7),BLOCK,WGT_BLOCK(WB3,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 5 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix320 - -C ----------------------------------------------------distrmix321 -c 321 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] - - subroutine distrmix321 (psize) - integer psize(3) - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(6) :: - > WB1=(/2.5, 3.6, 2.4, 2.3, 1.2, 0.5/) - double precision, dimension(5) :: - > WB2=(/1.4, 2.8, 3., 3.0, 1.1/) - double precision, dimension(7) :: - > WB3=(/1., 2.3, 2.2, 3.5, 1.7, 3., 2./) - - integer, dimension(1) :: BSi1=(/16/) - integer, dimension(2) :: BSi2=(/11,5/) - integer, dimension(3) :: BSi3=(/1,12,3/) - integer, dimension(4) :: BSi4=(/6,4,5,1/) - - integer, dimension(1) :: BSj1=(/16/) - integer, dimension(2) :: BSj2=(/3,13/) - integer, dimension(3) :: BSj3=(/2,4,10/) - integer, dimension(4) :: BSj4=(/5,1,7,3/) - - integer, dimension(1) :: BSk1=(/16/) - integer, dimension(2) :: BSk2=(/10,6/) - integer, dimension(3) :: BSk3=(/2,8,6/) - integer, dimension(4) :: BSk4=(/3,2,10,1/) - - integer A3(AN1,AN2,AN3) ! static array - character(12), parameter :: tname='distrmix321 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,6),BLOCK,WGT_BLOCK(WB3,7)) -!dvm$ dynamic A3 - - A3 = 20 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k)+ i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),BLOCK,GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 20 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 continue - - end subroutine distrmix321 - -C ----------------------------------------------------distrmix322 -c 322 DISTRIBUTE arrA3[GEN_BLOCK][BLOCK][GEN_BLOCK] -c REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK] - - subroutine distrmix322 (psize) - integer psize(3) - - integer, parameter :: AN1=24,AN2=16,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(5) :: - > WB1=(/ 3.2, 2.4, 2.0, 1.0, 2.5/) - double precision, dimension(4) :: - > WB2=(/2.1, 2.5, 3., 1.1/) - double precision, dimension(6) :: - > WB3=(/2.3, 2.0, 3.5, 1.5, 3., 2./) - - integer, dimension(1) :: BSi1=(/24/) - integer, dimension(2) :: BSi2=(/11,13/) - integer, dimension(3) :: BSi3=(/10,12,2/) - integer, dimension(4) :: BSi4=(/6,14,3,1/) - - integer, dimension(1) :: BSj1=(/16/) - integer, dimension(2) :: BSj2=(/12,4/) - integer, dimension(3) :: BSj3=(/3,7,6/) - integer, dimension(4) :: BSj4=(/4,2,6,4/) - - integer, dimension(1) :: BSk1=(/8/) - integer, dimension(2) :: BSk2=(/2,6/) - integer, dimension(3) :: BSk3=(/3,1,4/) - integer, dimension(4) :: BSk4=(/4,2,1,1/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix322 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),BLOCK,GEN_BLOCK(BSk)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk1)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk2)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk3)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),BLOCK,GEN_BLOCK(BSk4)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - A3 = 15 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,WGT_BLOCK(WB2,4),BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 15)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix322 - -C ----------------------------------------------------distrmix323 -c 323 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [GEN_BLOCK][GEN_BLOCK][*] - - subroutine distrmix323 (psize) - integer psize(3) - - integer, parameter :: AN1=8,AN2=11,AN3=11,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(7) :: - > WB1=(/ 3.2, 2.4, 1., 2., 2.0, 1.0, 2.5/) - double precision, dimension(6) :: - > WB2=(/3.1, 2.5, 4., 2.1, 2., 2./) - double precision, dimension(6) :: - > WB3=(/1.2, 3.0, 2.4, 1.0, 3., 2.5/) - - integer, dimension(1) :: BSi1=(/8/) - integer, dimension(2) :: BSi2=(/2,6/) - integer, dimension(3) :: BSi3=(/1,3,4/) - integer, dimension(4) :: BSi4=(/3,2,1,2/) - - integer, dimension(1) :: BSj1=(/11/) - integer, dimension(2) :: BSj2=(/3,8/) - integer, dimension(3) :: BSj3=(/1,7,3/) - integer, dimension(4) :: BSj4=(/5,3,1,2/) - - integer, dimension(1) :: BSk1=(/11/) - integer, dimension(2) :: BSk2=(/1,10/) - integer, dimension(3) :: BSk3=(/3,4,4/) - integer, dimension(4) :: BSk4=(/4,2,2,3/) - - integer :: A3(AN1,AN2,AN3) - character(12), parameter :: tname='distrmix323 ' - -!dvm$ distribute A3(BLOCK,WGT_BLOCK(WB2,6),BLOCK) -!dvm$ dynamic A3 - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi),GEN_BLOCK(BSj),*) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj2),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj3),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj4),*) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj1),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj2),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj3),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi2),GEN_BLOCK(BSj4),*) - case default - goto 10 - endselect - - case(3) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj1),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj2),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj3),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi3),GEN_BLOCK(BSj4),*) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj1),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj2),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj3),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi4),GEN_BLOCK(BSj4),*) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 continue - - end subroutine distrmix323 - -C ----------------------------------------------------distrmix324 -c 324 DISTRIBUTE arrA3[GEN_BLOCK][GEN_BLOCK][*] -c REDISTRIBUTE [*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [GEN_BLOCK][*][GEN_BLOCK] -c - subroutine distrmix324 (psize) - integer psize(3) - - integer, parameter :: AN1=12,AN2=12,AN3=21,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(7) :: - > WB1=(/2.0, 1.2, 2.5, 1.4, 2.5, 1.3, 1./) - double precision, dimension(5) :: - > WB2=(/2., 1.3, 2., 1.0, 1.7/) - double precision, dimension(6) :: - > WB3=(/2., 3., 1.3, 2., 1.0, 1.7/) - - integer, dimension(1) :: BSi11=(/12/) - integer, dimension(1) :: BSi12=(/12/) - integer, dimension(2) :: BSi21=(/8,4/) - integer, dimension(2) :: BSi22=(/2,10/) - integer, dimension(3) :: BSi31=(/1,6,5/) - integer, dimension(3) :: BSi32=(/4,6,2/) - integer, dimension(4) :: BSi41=(/3,2,4,3/) - integer, dimension(4) :: BSi42=(/4,2,2,4/) - - integer, dimension(1) :: BSj11=(/12/) - integer, dimension(1) :: BSj12=(/12/) - integer, dimension(2) :: BSj21=(/6,6/) - integer, dimension(2) :: BSj22=(/1,11/) - integer, dimension(3) :: BSj31=(/8,2,2/) - integer, dimension(3) :: BSj32=(/1,10,1/) - integer, dimension(4) :: BSj41=(/2,5,3,2/) - integer, dimension(4) :: BSj42=(/2,8,1,1/) - - integer, dimension(1) :: BSk11=(/21/) - integer, dimension(1) :: BSk12=(/21/) - integer, dimension(2) :: BSk21=(/11,10/) - integer, dimension(2) :: BSk22=(/7,14/) - integer, dimension(3) :: BSk31=(/1,5,15/) - integer, dimension(3) :: BSk32=(/4,6,11/) - integer, dimension(4) :: BSk41=(/1,2,10,8/) - integer, dimension(4) :: BSk42=(/12,4,2,3/) - - integer, allocatable :: A3(:,:,:) - character(*), parameter :: tname='distrmix324 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi1),GEN_BLOCK(BSj1),*) - - select case(psize(1)) - case(1) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi11),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi21),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case(3) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi31),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj11),*) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj21),*) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj31),*) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi41),GEN_BLOCK(BSj41),*) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - A3 = 1 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k)+i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(*, WGT_BLOCK(WB2,5),WGT_BLOCK(WB3,6)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) * 2 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),*,GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk22)) - case(3) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),*,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) / 2 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 1)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix324 - -C ----------------------------------------------------distrmix325 -c 325 DISTRIBUTE arrA3 [*][GEN_BLOCK][GEN_BLOCK] -c REDISTRIBUTE [*][WGT_BLOCK][*] -c REDISTRIBUTE [GEN_BLOCK][BLOCK][GEN_BLOCK] -c -c - subroutine distrmix325 (psize) - integer psize(3) - - integer, parameter :: AN1=7,AN2=6,AN3=7,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - - double precision, dimension(10) :: - > WB2=(/2.0, 1.2, 2.5, 1.0, 2.5, 1.3, 1., 3., 2., 1./) - - integer, dimension(1) :: BSi11=(/7/) - integer, dimension(1) :: BSi12=(/7/) - integer, dimension(2) :: BSi21=(/3,4/) - integer, dimension(2) :: BSi22=(/2,5/) - integer, dimension(3) :: BSi31=(/1,6,0/) - integer, dimension(3) :: BSi32=(/4,2,1/) - integer, dimension(4) :: BSi41=(/3,2,1,1/) - integer, dimension(4) :: BSi42=(/2,1,2,2/) - - integer, dimension(1) :: BSj11=(/6/) - integer, dimension(1) :: BSj12=(/6/) - integer, dimension(2) :: BSj21=(/2,4/) - integer, dimension(2) :: BSj22=(/0,6/) - integer, dimension(3) :: BSj31=(/2,2,2/) - integer, dimension(3) :: BSj32=(/1,3,2/) - integer, dimension(4) :: BSj41=(/2,1,1,2/) - integer, dimension(4) :: BSj42=(/3,0,2,1/) - - integer, dimension(1) :: BSk11=(/7/) - integer, dimension(1) :: BSk12=(/7/) - integer, dimension(2) :: BSk21=(/3,4/) - integer, dimension(2) :: BSk22=(/6,1/) - integer, dimension(3) :: BSk31=(/1,5,1/) - integer, dimension(3) :: BSk32=(/4,2,1/) - integer, dimension(4) :: BSk41=(/2,0,3,2/) - integer, dimension(4) :: BSk42=(/2,4,0,1/) - - integer, allocatable :: A3(:,:,:) - character(12), parameter :: tname='distrmix325 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!!!!dvm$ redistribute A3(*,GEN_BLOCK(BSj1),GEN_BLOCK(BSk1)) - - select case(psize(1)) ! it's true - psize(1) - case(1) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj11),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case(2) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj21),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (3) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj31),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case (4) - select case(psize(2)) ! it's true - psize(2) - case(1) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk11)) - case(2) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk21)) - case(3) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk31)) - case(4) -!dvm$ redistribute -!dvm$* A3(*,GEN_BLOCK(BSj41),GEN_BLOCK(BSk41)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 5 - enddo - enddo - enddo -!dvm$ end region - - - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k + 5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*, WGT_BLOCK(WB2,10), *) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 5 - enddo - enddo - enddo -!dvm$ end region - -!!!!dvm$ redistribute A3(GEN_BLOCK(BSi2),BLOCK,GEN_BLOCK(BSk2)) - - select case(psize(1)) - case(1) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi12),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(2) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi22),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case (3) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi32),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case(4) - select case(psize(3)) - case(1) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk12)) - case(2) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk22)) - case (3) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk32)) - case(4) -!dvm$ redistribute A3(GEN_BLOCK(BSi42),BLOCK,GEN_BLOCK(BSk42)) - case default - goto 10 - endselect - - case default - goto 10 - endselect - - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction(min(erri)) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 10)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - 10 deallocate (A3) - - end subroutine distrmix325 - - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult1.fdv deleted file mode 100644 index dac94e9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult1.fdv +++ /dev/null @@ -1,553 +0,0 @@ - program DISTRM1 - -! TESTING distribute and redistribute directive -! MULT_BLOCK distribution - - print *,'===START OF distrmult1========================' - -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] - call distrm11 -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] - call distrm12 -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] small array - call distrm13 -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array - call distrm14 -C -------------------------------------------------- -c 15 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[MULT_BLOCK] other m - call distrm15 -C -------------------------------------------------- -c 16 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[*] - call distrm16 -C -------------------------------------------------- -c 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[MULT_BLOCK] - call distrm17 -C -------------------------------------------------- -c 21 DISTRIBUTE arrA2[MULT_BLOCK][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] - call distrm21 -C -------------------------------------------------- -c 22 DISTRIBUTE arrA2[*][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] - call distrm22 -C -------------------------------------------------- -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] - call distrm23 -C ------------------------------------------------- -C - print *,'=== END OF distrmult1 ========================= ' - - end - -C ----------------------------------------------------distrm11 -c 11 DISTR arrA1[BLOCK] REDISTR arrA1[MULT_BLOCK] - - subroutine distrm11 - integer, parameter :: AN1=25,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 5 - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrm11 ' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction(min(erri)) - do i=1,AN1 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm11 - -C ---------------------------------------------distrm12 -c 12 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] - - subroutine distrm12 - - integer, parameter :: AN1=48,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 6 - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrm12 ' - -!dvm$ distribute A1(MULT_BLOCK(m)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i ** 2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i**2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm12 - -C ----------------------------------------------------distrm13 -c 13 DISTR arrA1[BLOCK] REDISTR arrA1[MULT_BLOCK] small array - - subroutine distrm13 - - integer, parameter :: AN1=4,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 4 - integer, allocatable :: A1(:) - character(10) :: tname='distrm13 ' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i*2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*2 ) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm13 -C ---------------------------------------------distrm14 -c 14 DISTRIBUTE arrA1[MULT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array - - subroutine distrm14 - - integer, parameter :: AN1=3,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 3 - integer, allocatable :: A1(:) - character(10) :: tname='distrm14 ' - -!dvm$ distribute A1(MULT_BLOCK(m)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = 5 - -!dvm$ actual (A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i+5) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm14 - -C ----------------------------------------------------distrm15 -c 15 DISTR arrA1[MULT_BLOCK] REDISTR arrA1[MULT_BLOCK] other m - - subroutine distrm15 - - integer, parameter :: AN1=24,ER=10000 - integer :: erri=ER,i - integer, parameter :: m1 = 4, m2 = 3 - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrm15 ' - -!dvm$ distribute A1(MULT_BLOCK(m1)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm15 - -C ----------------------------------------------------distrm16 -c 16 DISTR arrA1[MULT_BLOCK] REDISTR arrA1[*] - - subroutine distrm16 - - integer, parameter :: AN1=50,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 2 - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrm16 ' - -!dvm$ distribute A1(MULT_BLOCK(m)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i * 3 - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i*3 ) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm16 - -C ---------------------------------------------distrm17 -c 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[MULT_BLOCK] - - subroutine distrm17 - - integer, parameter :: AN1=120,ER=10000 - integer :: erri=ER,i - integer, parameter :: m = 10 - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrm17 ' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = -2 - -!dvm$ actual (A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - A1(i) - enddo -!dvm$ end region - -!dvm$ redistribute A1(MULT_BLOCK(m)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i+2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrm17 - -C ----------------------------------------------------distrm21 -c 21 DISTRIBUTE arrA2[MULT_BLOCK][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] - - subroutine distrm21 - - integer, parameter :: AN1=36,AN2=25,NL=1000,ER=10000 - integer :: erri=ER,i - integer, parameter :: m1 = 6, m2 = 5 - integer, allocatable :: A2(:,:) - character(10) :: tname='distrm21' - -!dvm$ distribute A2(MULT_BLOCK(m1),*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm21 - -C ----------------------------------------------------distrm22 -c 22 DISTRIBUTE arrA2[*][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] - - subroutine distrm22 - - integer, parameter :: AN1=8,AN2=121,NL=1000,ER=10000 - integer :: erri=ER,i - integer, parameter :: m2 = 11 - integer, allocatable :: A2(:,:) - character(10) :: tname='distrm22' - -!dvm$ distribute A2(*,MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 4 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + (i*NL+j) - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j+4)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm22 - -C ----------------------------------------------------distrm23 -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][MULT_BLOCK] - - subroutine distrm23 - - integer, parameter :: AN1=8,AN2=63,NL=1000,ER=10000 - integer :: erri=ER,i - integer, parameter :: m2 = 9 - integer, allocatable :: A2(:,:) - character(10) :: tname='distrm23' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,MULT_BLOCK(m2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm23 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult2.fdv deleted file mode 100644 index b47c2f2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult2.fdv +++ /dev/null @@ -1,996 +0,0 @@ - program DISTRM2 - -! TESTING distribute and redistribute directive -! MULT_BLOCK distribution - - print *,'===START OF distrmult2========================' - -C ------------------------------------------------- -c 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] - call distrm24 -C ------------------------------------------------- -c 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - call distrm25 -C ------------------------------------------------- -c 26 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -C REDISTRIBUTE arrA2[BLOCK][BLOCK] - call distrm26 -C ------------------------------------------------- -c 27 DISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - call distrm27 -C ------------------------------------------------- -c 28 DISTRIBUTE arrA2[MULT_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - call distrm28 -C ------------------------------------------------- -c 29 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[MULT_BLOCK][BLOCK] - call distrm29 -C ------------------------------------------------- -c 210 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] other m1,m2 - call distrm210 -C ------------------------------------------------- -c 32 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK] [*] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK] - call distrm32 -C ------------------------------------------------- -c 33 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] - call distrm33 -C ------------------------------------------------- -c 34 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] -c REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - call distrm34 -C ------------------------------------------------- -c 35 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[*][*]MULT_BLOCK] - call distrm35 -C ------------------------------------------------- -c 36 DISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] -c REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] - call distrm36 -C ------------------------------------------------- -c 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] -c REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] - call distrm37 -C ------------------------------------------------- -c 38 DISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][BLOCK] - call distrm38 -C ------------------------------------------------- -c 41 DISTRIBUTE arrA4[*][*][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA4[*][*][*][*] - call distrm41 -C ------------------------------------------------- -c 42 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] -c REDISTRIBUTE arrA4[*][MULT_BLOCK][MULT_BLOCK][*] - call distrm42 -C ------------------------------------------------- -C - print *,'=== END OF distrmult2 ========================= ' - - end - -C ----------------------------------------------------distrm24 -c 24 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA2[*][*] - - subroutine distrm24 - - integer, parameter :: AN1=15,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 5, m2 = 3 - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrm24 ' - -!dvm$ distribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 4 - -!dvm$ actual (A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j)+ (i*NL+j) - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)+4 ) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm24 - -C ----------------------------------------------------distrm25 -c 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - - subroutine distrm25 - - integer, parameter :: AN1=18,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 3, m2 = 2 - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrm25 ' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 5 - -!dvm$ actual(A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + (i*NL+j) - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1), MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) - 5 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm25 - -C ----------------------------------------------------distrm26 -c 26 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[BLOCK][BLOCK] - - subroutine distrm26 - - integer, parameter :: AN1=49,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 7, m2 = 4 - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrm26 ' - -!dvm$ distribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm26 - -C ----------------------------------------------------distrm27 -c 27 DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] - - subroutine distrm27 - - integer, parameter :: AN1=8,AN2= 64,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 1, m2 = 8 - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrm27' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j)*2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*2) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm27 - -C ----------------------------------------------------distrm28 -c 28 DISTRIBUTE arrA2[MULT_BLOCK][BLOCK] REDISTRIBUTE arrA2[BLOCK][MULT_BLOCK] - - subroutine distrm28 - - integer, parameter :: AN1=20,AN2=20,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 5, m2 = 4 - integer, allocatable :: A2(:,:) - character(10) :: tname='distrm28 ' - -!dvm$ distribute A2(MULT_BLOCK(m1),BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j)*3 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,MULT_BLOCK(m2)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*3) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm28 - -C ----------------------------------------------------distrm29 -c 29 DISTRIBUTE arrA2[BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[MULT_BLOCK][BLOCK] - - subroutine distrm29 - - integer, parameter :: AN1=30,AN2=60,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 10, m2 = 10 - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrm29' - -!dvm$ distribute A2(BLOCK,MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = -1 - -!dvm$ actual (A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + (i*NL+j) - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m1),BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)-1) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm29 - -C ----------------------------------------------------distrm210 -c 210 DISTRIBUTE arrA2[MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK] other m1, m2 - - subroutine distrm210 - - integer, parameter :: AN1=24,AN2=24,NL=1000,ER=10000 - integer :: erri= ER,i,j - integer, parameter :: m1 = 3, m2 = 2 - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrm210 ' - -!dvm$ distribute A2(MULT_BLOCK(m1),MULT_BLOCK(m2)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(MULT_BLOCK(m2),MULT_BLOCK(m1)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrm210 - -C ----------------------------------------------------distrm32 -c 32 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK] [*] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK] - - subroutine distrm32 - - integer, parameter :: AN1=16,AN2=12,AN3=8,NL=1000,ER=10000 - integer :: erri = ER,i,j,k - integer, parameter :: m1 = 2, m2 = 3 , m3 = 4 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm32 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm33 -c 33 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] - - subroutine distrm33 - - integer, parameter :: AN1=16,AN2=16,AN3=8,NL=1000,ER=10000 - integer :: erri = ER,i,j,k - integer, parameter :: m1 = 4, m2 = 2, m3 = 2 - integer, allocatable :: A3(:,:,:) - character(*), parameter :: tname='distrm33 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k*2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),*,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k*2)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm34 -c 34 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] -c REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] - - subroutine distrm34 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 2, m2 = 1, m3 = 4 - integer, allocatable :: A3(:,:,:) - character(10) :: tname='distrm34' - -!dvm$ distribute A3(MULT_BLOCK(m1),*,MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 3 - -!dvm$ actual(A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 3)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm35 -c 35 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[*][*][MULT_BLOCK] - - subroutine distrm35 - - integer, parameter :: AN1=18,AN2=28,AN3=38,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 3, m2 = 7 , m3 = 19 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm35 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm36 -c 36 DISTRIBUTE arrA3[MULT_BLOCK][*][BLOCK] -c REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] - - subroutine distrm36 - - integer, parameter :: AN1=121,AN2=12,AN3=35,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 11, m2 = 2, m3 = 7 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm36 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),*,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 10 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,*,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k + 10)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm37 -c 37 DISTRIBUTE arrA3[MULT_BLOCK][BLOCK][*] -c REDISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] - - subroutine distrm37 - - integer, parameter :: AN1=8,AN2=28,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 2, m2 = 4, m3 = 2 - integer, allocatable :: A3(:,:,:) - character(*), parameter :: tname='distrm37 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),BLOCK,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,*,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm38 -c 38 DISTRIBUTE arrA3[BLOCK][*][MULT_BLOCK] REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK] - - subroutine distrm38 - - integer, parameter :: AN1=50,AN2=40,AN3=30,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 5, m2 = 4, m3 = 3 - integer, allocatable :: A3(:,:,:) - character(10) :: tname='distrm38' - -!dvm$ distribute A3(BLOCK, *, MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k*5 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k*5)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end - -C ----------------------------------------------------distrm41 -c 41 DISTRIBUTE arrA4[*][*][MULT_BLOCK][MULT_BLOCK] REDISTRIBUTE arrA4[*][*][*][*] - - subroutine distrm41 - - integer, parameter :: AN1=16,AN2=16,AN3=16,AN4=16,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m - integer, parameter :: m1 = 2, m2 = 4, m3 = 2, m4 = 4 - integer, allocatable :: A4(:,:,:,:) - character(10), parameter :: tname='distrm41 ' - -!dvm$ distribute A4(*,*,MULT_BLOCK(m3),MULT_BLOCK(m4)) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,*,*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)) then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ----------------------------------------------------distrm42 -c 42 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] -c REDISTRIBUTE arrA4[*][MULT_BLOCK][MULT_BLOCK][*] - - subroutine distrm42 - - integer, parameter :: AN1=28,AN2=25,AN3=27,AN4=21,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m - integer, parameter :: m1 = 7, m2 = 5, m3 = 9, m4 = 3 - integer, allocatable :: A4(:,:,:,:) - character(10) :: tname='distrm42 ' - -!dvm$ distribute A4(MULT_BLOCK(m1),*,MULT_BLOCK(m3),*) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - - A4 = 6 - -!dvm$ actual (A4) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = A4(i,j,n,m)+ i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,MULT_BLOCK(m2),MULT_BLOCK(m3),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m+6)) then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult3.fdv deleted file mode 100644 index 0dec62d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_MULT/distrmult3.fdv +++ /dev/null @@ -1,668 +0,0 @@ - program DISTRM3 - -! Testing DISTRIBUTE and REDISTRIBUTE directive -! use MULT_BLOCK distribution - - print *,'===START OF distrmult3========================' - -C ------------------------------------------------- -c 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - call distrm311 -C ------------------------------------------------- -c 312 DISTRIBUTE arrA3DISTRIBUTE [BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - call distrm312 -C ------------------------------------------------- -c 313 DISTRIBUTE arrA2[_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] - call distrm313 -C ------------------------------------------------- -c 314 DISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] -c REDISTRIBUTE arrA3[MULT_BLOCK][BLOCK][MULT_BLOCK] - call distrm314 -C ------------------------------------------------- -c 315 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] other m1,m2,m3 - call distrm315 -C ------------------------------------------------- -c 316 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[*][*][*] - call distrm316 -C ------------------------------------------------- -c 317 DISTRIBUTE arrA3[*][*][*] -c REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - call distrm317 -C ------------------------------------------------- -c 318 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][*] - call distrm318 -C ------------------------------------------------- -c 319 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK] - call distrm319 -C ------------------------------------------------- -c 43 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] -c REDISTRIBUTE arrA4[[*][MULT_BLOCK][*][MULT_BLOCK] - call distrm43 -C ------------------------------------------------- -C - print *,'=== END OF distrmult3 ========================= ' - - end - -C ----------------------------------------------------distrm311 -c 311 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - - subroutine distrm311 - - integer, parameter :: AN1=14,AN2=12,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 7, m2 = 3, m3 = 5 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm311 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 1 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,BLOCK,BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 1) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm311 - -C ----------------------------------------------------distrm312 -c 312 DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - - subroutine distrm312 - - integer, parameter :: AN1=15,AN2=15,AN3=25,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 5, m2 = 5, m3 = 5 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm312 ' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm312 - -C ----------------------------------------------------distrm313 -c 313 DISTRIBUTE arrA2[MULT_BLOCK][BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] - - subroutine distrm313 - - integer, parameter :: AN1=24,AN2=24,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 2, m2 = 3, m3 = 4 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm313 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),BLOCK,MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 3 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,MULT_BLOCK(m2),BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm313 - -C ----------------------------------------------------distrm314 -c 314 DISTRIBUTE arrA3[BLOCK][MULT_BLOCK][BLOCK] -c REDISTRIBUTE arrA3[MULT_BLOCK][BLOCK][MULT_BLOCK] - - subroutine distrm314 - - integer, parameter :: AN1=20,AN2=30,AN3=30,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 5, m2 = 3, m3 = 3 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm314 ' - -!dvm$ distribute A3(BLOCK, MULT_BLOCK(m2),BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k*2 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(MULT_BLOCK(m1),BLOCK,MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k*2)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm314 - -C ----------------------------------------------------distrm315 -c 315 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE [MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] other m1,m2,m3 - - subroutine distrm315 - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 2, m2 = 4, m3 = 8 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm315 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 5 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)+ 5) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm315 - -C ----------------------------------------------------distrm316 -c 316 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] -c REDISTRIBUTE arrA2[*][*][*] - - subroutine distrm316 - - integer, parameter :: AN1=12,AN2=12,AN3=48,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 3, m2 = 2, m3 = 6 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm316 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm316 - -C ----------------------------------------------------distrm317 -c 317 DISTRIBUTE arrA3[*][*][*] -c REDISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][MULT_BLOCK] - - subroutine distrm317 - - integer, parameter :: AN1= 10, AN2=35, AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 2, m2 = 5, m3 = 2 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm317 ' - -!dvm$ distribute A3(*,*,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 7 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(MULT_BLOCK(m1),MULT_BLOCK(m2),MULT_BLOCK(m3)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) - 7 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k)) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm317 - -C ----------------------------------------------------distrm318 -c 318 DISTRIBUTE arrA3[MULT_BLOCK][*][MULT_BLOCK] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][*] - - subroutine distrm318 - - integer, parameter :: AN1=11,AN2=14,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m1 = 1, m2 = 2, m3 = 6 - integer :: A3(AN1,AN2,AN3) !static array - character(10), parameter :: tname='distrm318 ' - -!dvm$ distribute A3(MULT_BLOCK(m1),*,MULT_BLOCK(m3)) -!dvm$ dynamic A3 - - A3 = 8 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,MULT_BLOCK(m2),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 8) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end subroutine distrm318 - -C ----------------------------------------------------distrm319 -c 319 DISTRIBUTE arrA3[MULT_BLOCK][MULT_BLOCK][*] -c REDISTRIBUTE arrA3[*][MULT_BLOCK][MULT_BLOCK] - - subroutine distrm319 - - integer, parameter :: AN1= 30, AN2=12, AN3=30,NL=1000,ER=10000 - integer :: erri=ER,i,j,k - integer, parameter :: m11 = 2, m21 = 2, m31 = 2 - integer, parameter :: m12 = 5, m22 = 4, m32 = 10 - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrm319 ' - -!dvm$ distribute :: A3 -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ redistribute A3(MULT_BLOCK(m11),MULT_BLOCK(m21),*) - - A3 = -1 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + i*NL/10 + j*NL/100 + k - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(*,MULT_BLOCK(m21),MULT_BLOCK(m32)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,k) on A3(i,j,k), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do k=1,AN3 - A3(i,j,k) = A3(i,j,k) + 2 - if (A3(i,j,k) /= (i*NL/10 + j*NL/100 + k) + 1) then - erri = min(erri,i*NL/10 + j*NL/100 + k) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrm319 - -C ----------------------------------------------------distrm43 -c 43 DISTRIBUTE arrA4[MULT_BLOCK][*][MULT_BLOCK][*] -c REDISTRIBUTE arrA4[[*][MULT_BLOCK][*][MULT_BLOCK] - - subroutine distrm43 - - integer, parameter :: AN1=16,AN2=16,AN3=16,AN4=16,NL=1000,ER=100000 - integer, parameter :: m1 = 2, m2 = 4, m3 = 2, m4 = 4 - integer :: erri=ER,i,j,n,m - integer, allocatable :: A4(:,:,:,:) - character(10), parameter :: tname='distrm43 ' - -!dvm$ distribute -!dvm$* A4(MULT_BLOCK(m1),*,MULT_BLOCK(m3),*) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,MULT_BLOCK(m2),*,MULT_BLOCK(m4)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)) then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt1.fdv deleted file mode 100644 index 233f25f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt1.fdv +++ /dev/null @@ -1,766 +0,0 @@ - program DISTRW1 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! WGT_BLOCK distribution - - print *,'===START OF distrwgt1========================' - -C -------------------------------------------------- -c 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] - call distrw11 -C -------------------------------------------------- -c 12 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] - call distrw12 -C -------------------------------------------------- -c 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] small array - call distrw13 -C -------------------------------------------------- -c 14 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array - call distrw14 -C -------------------------------------------------- -c 15 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] other weigts - call distrw15 -C -------------------------------------------------- -c 16 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*] - call distrw16 -C -------------------------------------------------- -c 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[WGT_BLOCK] - call distrw17 -C -------------------------------------------------- -c 18 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] with zero weigts - call distrw18 -C -------------------------------------------------- -c 181 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] with zero weigts -c REDISTRIBUTE arrA1[WGT_BLOCK] - call distrw181 -C -------------------------------------------------- -c 182 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*] with zero weigts -c REDISTRIBUTE arrA1[WGT_BLOCK] - call distrw182 -C -------------------------------------------------- -c 21 DISTRIBUTE arrA2[WGT_BLOCK][*] REDISTRIBUTE arrA2[*][WGT_BLOCK] - call distrw21 -C -------------------------------------------------- -c 22 DISTRIBUTE arrA2[*][WGT_BLOCK] REDISTRIBUTE arrA2[*][*] - call distrw22 -C -------------------------------------------------- -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][WGT_BLOCK] - call distrw23 -C ------------------------------------------------- -C - print *,'=== END OF distrwgt1 ========================= ' - - end - -C ----------------------------------------------------distrw11 -c 11 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] - - subroutine distrw11 - - integer, parameter :: AN1=16,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrw11 ' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw11 - -C ---------------------------------------------distrw12 -c 12 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] - - subroutine distrw12 - - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrw12' - -!dvm$ distribute A1(WGT_BLOCK(WB,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i ** 2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min(erri) ) - do i=1,AN1 - if (A1(i) /= i ** 2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ----------------------------------------------------distrw13 -c 13 DISTRIBUTE arrA1[BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] small array - - subroutine distrw13 - - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(10) :: tname='distrw13' - -!dvm$ distribute A1(BLOCK) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = 2 - -!dvm$ actual (A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min(erri) ) - do i=1,AN1 - if (A1(i) /= i + 2) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end -C ---------------------------------------------distrw14 -c 14 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] small array - - subroutine distrw14 - - integer, parameter :: AN1=5,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(10) :: tname='distrw14' - -!dvm$ distribute A1(WGT_BLOCK(WB,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end - -C ----------------------------------------------------distrw15 -c 15 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] other weigts - - subroutine distrw15 - - integer, parameter :: AN1=16,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB1=(/1.0, 2., 2., 3.0, 1., 1./) - double precision, dimension(6) :: WB2=(/2.0, 1., 2., 2.0, 2., 1./) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrw15 ' - -!dvm$ distribute A1(WGT_BLOCK(WB1,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i * 3 - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i * 3) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw15 - -C ----------------------------------------------------distrw16 -c 16 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*] - - subroutine distrw16 - - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrw16 ' - -!dvm$ distribute A1(WGT_BLOCK(WB,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i + 5 - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min(erri) ) - do i=1,AN1 - A1(i) = A1(i) - 5 - if (A1(i) /= i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw16 - -C ---------------------------------------------distrw17 -c 17 DISTRIBUTE arrA1[*] REDISTRIBUTE arrA1[WGT_BLOCK] - - subroutine distrw17 - - integer, parameter :: AN1=28,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A1(:) - character(10), parameter :: tname='distrw17' - -!dvm$ distribute A1(*) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = 6 - -!dvm$ actual (A1) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) - i - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= 6 - i) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw17 - -C ----------------------------------------------------distrw18 -c 18 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[WGT_BLOCK] with zero weigts - - subroutine distrw18 - - integer, parameter :: AN1=17,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6):: WB1=(/1.0, 2., 2., 0., 1., 1./) - double precision, dimension(8):: WB2=(/0.,1.,0.2,2.,3.,1.,1.5,0./) - - integer, allocatable :: A1(:) - character(*), parameter :: tname='distrw18 ' - -!dvm$ distribute A1(WGT_BLOCK(WB1,6)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = i * 3 - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if (A1(i) /= i * 3) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw18 - -C --------------------------------------------------distrw181 -c 181 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[BLOCK] with zero weigts -c REDISTRIBUTE arrA1[WGT_BLOCK] - subroutine distrw181 - - integer, parameter :: AN1=11,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(7) :: - > WB1=(/0., 2., 2., 0., 1., 1., 0./) - double precision, dimension(8) :: - > WB2=(/0., 1., 0., 2., 0., 3., 1.2, 1.5/) - - integer, allocatable :: A1(:) - character(10) :: tname='distrw181' - -!dvm$ distribute A1(WGT_BLOCK(WB1,7)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = 2 - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(BLOCK) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) * 2 - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - A1(i) = A1(i) / 2 - if (A1(i) /= (i+2)) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw181 - -C --------------------------------------------------distrw182 -c 182 DISTRIBUTE arrA1[WGT_BLOCK] REDISTRIBUTE arrA1[*] with zero weigts -c REDISTRIBUTE arrA1[WGT_BLOCK] - subroutine distrw182 - - integer, parameter :: AN1=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(7) :: - > WB1=(/0.2, 2., 0., 0., 0., 1., 0./) - double precision, dimension(8) :: - > WB2=(/0., 1.1, 0., 2.5, 0., 3.3, 2.2, 0./) - - integer, allocatable :: A1(:) - character(10) :: tname='distrw182' - -!dvm$ distribute A1(WGT_BLOCK(WB1,7)) -!dvm$ dynamic A1 - - allocate (A1(AN1)) - - A1 = -5 - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) + i - enddo -!dvm$ end region - -!dvm$ redistribute A1(*) - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = A1(i) * 3 - enddo -!dvm$ end region - -!dvm$ redistribute A1(WGT_BLOCK(WB2,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - A1(i) = A1(i) / 3 - if (A1(i) /= (i-5)) then - erri = min(erri,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A1) - - end subroutine distrw182 - -C ----------------------------------------------------distrw21 -c 21 DISTRIBUTE arrA2[WGT_BLOCK][*] REDISTRIBUTE arrA2[*][WGT_BLOCK] - - subroutine distrw21 - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrw21' - -!dvm$ distribute A2(WGT_BLOCK(WB,6),*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw21 - -C ----------------------------------------------------distrw22 -c 22 DISTRIBUTE arrA2[*][WGT_BLOCK] REDISTRIBUTE arrA2[*][*] - - subroutine distrw22 - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrw22' - -!dvm$ distribute A2(*,WGT_BLOCK(WB,6)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j + 10 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)+10) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw22 - -C ----------------------------------------------------distrw23 -c 23 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[*][WGT_BLOCK] - - subroutine distrw23 - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri=ER,i - - double precision, dimension(6) :: WB=(/1.0, 2., 2., 3.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrw23' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j) * 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt2.fdv deleted file mode 100644 index 3c394fb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt2.fdv +++ /dev/null @@ -1,1334 +0,0 @@ - program DISTRW2 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! WGT_BLOCK distribution - - print *,'===START OF distrwgt2========================' - -C ------------------------------------------------- -c 24 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[*][*] - call distrw24 -C ------------------------------------------------- -c 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - call distrw25 -C ------------------------------------------------- -c 26 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -C REDISTRIBUTE arrA2[BLOCK][BLOCK] - call distrw26 -C ------------------------------------------------- -c 27 DISTRIBUTE arrA2[BLOCK][BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - call distrw27 -C ------------------------------------------------- -c 28 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] -c REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK] - call distrw28 -C ------------------------------------------------- -c 29 DISTRIBUTE arrA2[BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - call distrw29 -C ------------------------------------------------- -c 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] other weigths -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - call distrw210 -C ------------------------------------------------- -c 211 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - call distrw211 -C ------------------------------------------------- -c 212 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][BLOCK] - call distrw212 -C ------------------------------------------------- -c 213 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [*][*] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - call distrw213 -C ------------------------------------------------- -c 214 DISTRIBUTE arrA2[WGT_BLOCK][*] with zero weigths -c REDISTRIBUTE [*][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - call distrw214 -C ------------------------------------------------- -c 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK] [*] -c REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK] - call distrw32 -C ------------------------------------------------- -c 33 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] - call distrw33 -C ------------------------------------------------- -c 34 DISTRIBUTE arrA3[WGT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - call distrw34 -C ------------------------------------------------- -c 35 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE arrA3[*][*][WGT_BLOCK] - call distrw35 -C ------------------------------------------------- -c 36 DISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] -c REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] - call distrw36 -C ------------------------------------------------- -c 37 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][*] -c REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] - call distrw37 -C ------------------------------------------------- -c 38 DISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE arrA3[*][WGT_BLOCK][BLOCK] - call distrw38 -C ------------------------------------------------- -c 41 DISTRIBUTE arrA4[*][*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA4[*][*][*][*] - call distrw41 -C ------------------------------------------------- -c 42 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][*] -c REDISTRIBUTE arrA4[*][WGT_BLOCK][WGT_BLOCK][*] - call distrw42 -C ------------------------------------------------- -C - print *,'=== END OF distrwgt2 ========================= ' - - end - -C ----------------------------------------------------distrw24 -c 24 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[*][*] - - subroutine distrw24 - - integer, parameter :: AN1=12,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(6) :: - > WB1=(/2., 2., 3., 1., 5., 1./) - double precision, dimension(7) :: - > WB2=(/3., 2., 2., 3., 1., 1., 4./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw24 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,7)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw24 - -C ----------------------------------------------------distrw25 -c 25 DISTRIBUTE arrA2[*][*] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - - subroutine distrw25 - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(5) :: WB1=(/1.0,2.,2.,3.0, 0./) - double precision, dimension(7) :: WB2=(/1.0,1.,2.,1.0, 1.,1.,1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw25 ' - -!dvm$ distribute A2(*,*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j+10 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB1,5), WGT_BLOCK(WB2,7)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)+10) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw25 - -C ----------------------------------------------------distrw26 -c 26 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[BLOCK][BLOCK] - - subroutine distrw26 - - integer, parameter :: AN1=12,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(6) :: WB=(/1.0,4.,1.,1.0, 2., 1./) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrw26 ' - -!dvm$ distribute A2(WGT_BLOCK(WB,6),WGT_BLOCK(WB,6)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 3 - -!dvm$ actual (A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j) + 3) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw26 - -C ----------------------------------------------------distrw27 -c 27 DISTRIBUTE arrA2[BLOCK][BLOCK] REDISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] - - subroutine distrw27 - - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(6) :: WB=(/2.0,1.,3.,2.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrw27' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =(i*NL+j) * 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB,6),WGT_BLOCK(WB,4)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) / 2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw27 - -C ----------------------------------------------------distrw28 -c 28 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK] REDISTRIBUTE arrA2[BLOCK][WGT_BLOCK] - - subroutine distrw28 - - integer, parameter :: AN1=12,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(8) :: WB1=(/1.,2.,2.,3.,1.,1.,2.,4./) - double precision, dimension(6) :: WB2=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10) :: tname='distrw28 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,8),BLOCK) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK,WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw28 - -C ----------------------------------------------------distrw29 -c 29 DISTRIBUTE arrA2[BLOCK][WGT_BLOCK] REDISTRIBUTE arrA2[WGT_BLOCK][BLOCK] - - subroutine distrw29 - - integer, parameter :: AN1=12,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(6) :: WB1=(/1.0,2.,2.,3.,3.,1./) - double precision, dimension(6) :: WB2=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A2(:,:) - character(10), parameter :: tname='distrw29' - -!dvm$ distribute A2(BLOCK,WGT_BLOCK(WB1,6)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 8 - -!dvm$ actual (A2) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =A2(i,j) * (i*NL+j) - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,6),BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*8) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw29 - -C ----------------------------------------------------distrw210 -c 210 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] with other weigths - - subroutine distrw210 - - integer, parameter :: AN1=10,AN2=8,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(8) :: - > WB1 = (/1.0, 2., 1., 1.0, 3.2, 2., 3., 1./) - double precision, dimension(6) :: - > WB2 = (/1.0, 1., 2., 1.0, 2., 1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw210 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,8),WGT_BLOCK(WB2,6)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,6),WGT_BLOCK(WB1,7)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw210 - -C ----------------------------------------------------distrw211 -c 211 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] with zero weigths - - subroutine distrw211 - - integer, parameter :: AN1=8,AN2=17,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(6) :: - > WB1=(/0., 1.0, 2., 1., 1.0, 0./) - double precision, dimension(9) :: - > WB2=(/1.0, 1., 0., 2., 0., 0., 1.0, 2., 1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw211 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,9)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 1 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,7),WGT_BLOCK(WB1,5)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j+1)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw211 - -C ----------------------------------------------------distrw212 -c 212 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][BLOCK] - - subroutine distrw212 - - integer, parameter :: AN1=10,AN2=12,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(7) :: - > WB1=(/2., 0., 2., 1.0, 1.0, 1., 0./) - double precision, dimension(8) :: - > WB2=(/3.2, 2., 3.1, 2., 1.0, 4., 0., 1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw212 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,8)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 0 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(BLOCK, WGT_BLOCK(WB1,6)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) * 2 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,7), BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j)*2) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw212 - -C ----------------------------------------------------distrw213 -c 213 DISTRIBUTE arrA2[WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [*][*] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - subroutine distrw213 - - integer, parameter :: AN1=16,AN2=7,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(8) :: - > WB1=(/2., 4., 2., 1.5, 1., 0.5, 0., 3./) - double precision, dimension(8) :: - > WB2=(/0., 0., 3.1, 2., 1.0, 4., 0., 1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw213 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,8),WGT_BLOCK(WB2,8)) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 4 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,*) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) * 3 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,6),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j+4)*3) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw213 - -C ----------------------------------------------------distrw214 -c 214 DISTRIBUTE arrA2[WGT_BLOCK][*] with zero weigths -c REDISTRIBUTE [*][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK] - subroutine distrw214 - - integer, parameter :: AN1=12,AN2=10,NL=1000,ER=10000 - integer :: erri= ER,i,j - - double precision, dimension(7) :: - > WB1=(/ 4., 0., 1.5, 1., 2., 0.5, 0./) - double precision, dimension(8) :: - > WB2=(/1.7, 0., 3.1, 2., 2.5, 4., 0., 1./) - - integer, allocatable :: A2(:,:) - character(*), parameter :: tname='distrw214 ' - -!dvm$ distribute A2(WGT_BLOCK(WB1,6),*) -!dvm$ dynamic A2 - - allocate (A2(AN1,AN2)) - - A2 = 0 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + i*NL+j - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(*,WGT_BLOCK(WB2,8)) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = A2(i,j) + 3 - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A2(WGT_BLOCK(WB2,7),WGT_BLOCK(WB1,7)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - if (A2(i,j) /= (i*NL+j+3)) then - erri = min(erri,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A2) - - end subroutine distrw214 - -C ----------------------------------------------------distrw32 -c 32 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK] - - subroutine distrw32 - - integer, parameter :: AN1=16,AN2=12,AN3=8,NL=1000,ER=10000 - integer :: erri = ER,i,j,n - - double precision, dimension(7) :: WB1=(/1.,1.,2.,1.0,2.,2.,3.0/) - double precision, dimension(8) :: WB2=(/1.,2.,2.,3.,2.,1.,1.,1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw32 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,8),*) -!dvm$ dynamic A3 - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,WGT_BLOCK(WB2,7),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min(erri) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw32 - -C ----------------------------------------------------distrw33 -c 33 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] - - subroutine distrw33 - - integer, parameter :: AN1=16,AN2=16,AN3=8,NL=1000,ER=10000 - integer :: erri = ER,i,j,n - - double precision, dimension(10) :: - > WB=(/1.,2.,2.,3., 2., 4., 2., 1.,1., 1./) - - integer, allocatable :: A3(:,:,:) - character(*), parameter :: tname='distrw33 ' - -!dvm$ distribute A3(WGT_BLOCK(WB,6),WGT_BLOCK(WB,8),*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 5 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(WGT_BLOCK(WB,10),*,WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 5) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw33 - -C ----------------------------------------------------distrw34 -c 34 DISTRIBUTE arrA3[WGT_BLOCK][*][WGT_BLOCK] -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] - - subroutine distrw34 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n - - double precision, dimension(8) :: - > WB=(/1.0,2.,2.,3.,1.,2., 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10) :: tname='distrw34' - -!dvm$ distribute A3(WGT_BLOCK(WB,6),*,WGT_BLOCK(WB,8)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = (i*NL/10 + j*NL/100 + n) * 7 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(WGT_BLOCK(WB,6),WGT_BLOCK(WB,8),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) * 7) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw34 - -C ----------------------------------------------------distrw35 -c 35 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] -c REDISTRIBUTE arrA3[*][*][WGT_BLOCK] - - subroutine distrw35 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n - - double precision, dimension(6) :: WB1=(/1.0,2.,2.,3.0,1.5, 2.5/) - double precision, dimension(6) :: WB2=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw35 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,6),BLOCK,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw35 - -C ----------------------------------------------------distrw36 -c 36 DISTRIBUTE arrA3[WGT_BLOCK][*][BLOCK] -c REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] - - subroutine distrw36 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n - - double precision, dimension(6) :: WB=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw36 ' - -!dvm$ distribute A3(WGT_BLOCK(WB,6),*,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 2 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = (i*NL/10 + j*NL/100 + n) + A3(i,j,n) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,*,WGT_BLOCK(WB,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 2) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw36 - -C ----------------------------------------------------distrw37 -c 37 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][*] -c REDISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] - - subroutine distrw37 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n - - double precision,dimension(6) :: WB1=(/0.5, 1.,1.,2.,2.,3./) - double precision,dimension(8) :: WB2=(/1.,2.,2.,3.,0.5,2.,1.,1./) - - integer, allocatable :: A3(:,:,:) - character(*), parameter :: tname='distrw37 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,6),BLOCK,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,*,WGT_BLOCK(WB2,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw37 - -C ----------------------------------------------------distrw38 -c 38 DISTRIBUTE arrA3[BLOCK][*][WGT_BLOCK] REDISTRIBUTE arrA3[*][WGT_BLOCK][WGT_BLOCK] - - subroutine distrw38 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n - - double precision, dimension(6) :: WB1=(/1.0,2.,2.,3.0, 4.,5./) - double precision, dimension(6) :: WB2=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10) :: tname='distrw38' - -!dvm$ distribute A3(BLOCK, *, WGT_BLOCK(WB1,6)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 5 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,WGT_BLOCK(WB2,6),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 5) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw38 - -C ----------------------------------------------------distrw41 -c 41 DISTRIBUTE arrA4[*][*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA4[*][*][*][*] - - subroutine distrw41 - - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(8) :: WB=(/1.,2.,2.,3.,1.,1.,2.,1./) - - integer, allocatable :: A4(:,:,:,:) - character(10), parameter :: tname='distrw41 ' - -!dvm$ distribute A4(*,*,WGT_BLOCK(WB,6),WGT_BLOCK(WB,8)) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,*,*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)) then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end subroutine distrw41 - -C ----------------------------------------------------distrw42 -c 42 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][*] REDISTRIBUTE arrA4[*][WGT_BLOCK][WGT_BLOCK][*] - - subroutine distrw42 - - integer, parameter :: AN1=8,AN2=8,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: WB1=(/1.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A4(:,:,:,:) - character(10) :: tname='distrw42 ' - -!dvm$ distribute A4(WGT_BLOCK(wb1,6),*,WGT_BLOCK(wb1,6),*) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - - A4 = 3 - -!dvm$ actual (A4) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = A4(i,j,n,m) + - > i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(*,WGT_BLOCK(wb1,6),WGT_BLOCK(wb1,6),*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)+3) - > then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end subroutine distrw42 - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt3.fdv deleted file mode 100644 index b1cd362..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/DISTR_WGT/distrwgt3.fdv +++ /dev/null @@ -1,835 +0,0 @@ - program DISTRW3 - -! Testing DISTRIBUTE and REDISTRIBUTE directives -! WGT_BLOCK distribution - - print *,'===START OF distrwgt3========================' - -C ------------------------------------------------- -c 39 DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrw39 -C ------------------------------------------------- -c 310 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - call distrw310 -C ------------------------------------------------- -c 311 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] other weigths - call distrw311 -C ------------------------------------------------- -c 312 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - call distrw312 -C ------------------------------------------------- -c 313 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] - call distrw313 -C ------------------------------------------------- -c 314 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[*][*][*] - call distrw314 -C ------------------------------------------------- -c 315 DISTRIBUTE arrA3[*][*][*] -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrw315 -C ------------------------------------------------- -c 316 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - call distrw316 -C ------------------------------------------------- -c 317 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][BLOCK] - call distrw317 -C ------------------------------------------------- -c 318 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] with zero weigths -c REDISTRIBUTE [*][WGT_BLOCK][*] -c REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] - call distrw318 -C ------------------------------------------------- -c 43 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA4[BLOCK][WGT_BLOCK][BLOCK][*] - call distrw43 -C ------------------------------------------------- -C - print *,'=== END OF distrwgt3 ========================= ' - - end - -C ----------------------------------------------------distrw310 -c 39 DISTRIBUTE arrA3[BLOCK][BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - - subroutine distrw39 - - integer, parameter :: AN1=16,AN2=16,AN3=16,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: - > WB1=(/3.0,1.,2.,2.0, 2.5, 1.2/) - double precision, dimension(7) :: - > WB2=(/1.,3.,4.0,1.,2.,2.,4./) - double precision, dimension(8) :: - > WB3=(/5.0,1.,3.,6.0,2.,4.,3.,1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw39 ' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n + 6 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,7),WGT_BLOCK(WB3,8)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) +6 ) - > then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw39 - -C ----------------------------------------------------distrw310 -c 310 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [BLOCK][BLOCK][BLOCK] - - subroutine distrw310 - - integer, parameter :: AN1=12,AN2=12,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: WB1=(/2.0,1.,1.,3.0, 2., 1./) - double precision, dimension(8):: WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision, dimension(6) :: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw310 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,6),WGT_BLOCK(WB3,6)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 2 - -!dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,BLOCK,BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 2 ) - > then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw310 - -C ----------------------------------------------------distrw311 -c 311 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] other weigths - - subroutine distrw311 - - integer, parameter :: AN1=8,AN2=12,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision,dimension(6):: WB1=(/2.0,1.,1.,3.0, 2.,1./) - double precision,dimension(8):: WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision,dimension(6):: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw311 ' - - -!dvm$ distribute A3(WGT_BLOCK(WB1,5),WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,6)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 5 - -!dvm$ actual(A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB3,6),WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 5) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw311 - -C ----------------------------------------------------distrw312 -c 312 DISTRIBUTE arrA2[WGT_BLOCK][BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] - - subroutine distrw312 - - integer, parameter :: AN1=30,AN2=10,AN3=5,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(7) :: - > WB1=(/2.0,1.,1.,3.0, 2.,4., 1./) - double precision, dimension(8):: WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision, dimension(6) :: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw312 ' - - -!dvm$ distribute A3(WGT_BLOCK(WB1,7),BLOCK,WGT_BLOCK(WB3,6)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n + 10 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(BLOCK,WGT_BLOCK(WB2,8),BLOCK) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)+ 10) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw312 - -C ----------------------------------------------------distrw313 -c 313 DISTRIBUTE arrA3[BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] - - subroutine distrw313 - - integer, parameter :: AN1=8,AN2=8,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(7) :: - > WB1=(/2.0,1.,1.,3.0, 2., 1., 3.5/) - double precision, dimension(7) :: - > WB2=(/1.0,1.,2.,2.0,1.,1.,2./) - double precision, dimension(6) :: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw313 ' - -!dvm$ distribute A3(BLOCK, WGT_BLOCK(WB2,7),BLOCK) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(WGT_BLOCK(WB1,7),BLOCK,WGT_BLOCK(WB3,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw313 - -C ----------------------------------------------------distrw314 -c 314 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA2[*][*][*] - - subroutine distrw314 - - integer, parameter :: AN1=8,AN2=15,AN3=24,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: WB1=(/2.0,1.,1.,3.0, 2., 1./) - double precision, dimension(10) :: - > WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2., 4., 6./) - double precision, dimension(8) :: - > WB3=(/2.0,2.,2.,3.0, 1., 1., 3., 2.6/) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw314 ' - -!dvm$ distribute A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,10),WGT_BLOCK(WB3,8)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 2 - - !dvm$ actual (A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - A3(i,j,n) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(*,*,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) - 2) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw314 - -C ----------------------------------------------------distrw315 -c 315 DISTRIBUTE arrA3[*][*][*] -c REDISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - - subroutine distrw315 - - integer, parameter :: AN1=12,AN2=10,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: WB1=(/2.0,1.,1.,3.0, 2., 1./) - double precision,dimension(8) :: WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision, dimension(6) :: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw315 ' - -!dvm$ distribute A3(*,*,*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB3,6),WGT_BLOCK(WB2,8),WGT_BLOCK(WB1,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n)) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw315 - -C ----------------------------------------------------distrw316 -c 316 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][WGT_BLOCK] - - subroutine distrw316 - - integer, parameter :: AN1=8,AN2=12,AN3=10,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision,dimension(7):: - > WB1=(/2.0,1.,0.,1.,3.0, 2.,0./) - double precision,dimension(8):: - > WB2=(/0.,4.,2.,3.,1.,1.,2.,0./) - double precision,dimension(8):: - > WB3=(/2.0,3.,2.,4.,0.,0.,1.,2./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw316 ' - - -!dvm$ distribute A3(WGT_BLOCK(WB1,7),WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,8)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 2 - -!dvm$ actual(A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(WGT_BLOCK(WB3,6),WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 2) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw316 - -C ----------------------------------------------------distrw317 -c 317 DISTRIBUTE arrA3[WGT_BLOCK][BLOCK][WGT_BLOCK] with zero weigths -c REDISTRIBUTE [BLOCK][WGT_BLOCK][BLOCK] -c REDISTRIBUTE [WGT_BLOCK][WGT_BLOCK][BLOCK] - subroutine distrw317 - - integer, parameter :: AN1=12,AN2=10,AN3=8,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision,dimension(7):: - > WB1=(/1.,0.5,0.,0.4, 2.,0.8, 0./) - double precision,dimension(8):: - > WB2=(/0.,4.,2.,3.,1.2,1.,0., 2.4/) - double precision,dimension(10):: - > WB3=(/2.0,3.,2.,4.,0.,0.,1.,2.,0.,2./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw317 ' - - -!dvm$ distribute A3(WGT_BLOCK(WB1,7),BLOCK,WGT_BLOCK(WB3,10)) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - -!dvm$ actual(A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(BLOCK,WGT_BLOCK(WB2,8),BLOCK) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + 4 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(WGT_BLOCK(WB1,6),WGT_BLOCK(WB2,6),BLOCK) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) - 1 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 3) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw317 - -C ----------------------------------------------------distrw318 -c 318 DISTRIBUTE arrA3[WGT_BLOCK][WGT_BLOCK][*] with zero weigths -c REDISTRIBUTE [*][WGT_BLOCK][*] -c REDISTRIBUTE [WGT_BLOCK][*][WGT_BLOCK] - subroutine distrw318 - - integer, parameter :: AN1=22,AN2=12,AN3=15,NL=1000,ER=10000 - integer :: erri=ER,i,j,n,m - - double precision,dimension(5):: - > WB1=(/0.,1.5,0.7,0.,2./) - double precision,dimension(8):: - > WB2=(/2.0,4.2,0.,3.,2.2,3.,0.4, 2.4/) - double precision,dimension(7):: - > WB3=(/3.,2.,4.,0.,1.,2.,0./) - - integer, allocatable :: A3(:,:,:) - character(10), parameter :: tname='distrw318 ' - - -!dvm$ distribute A3(WGT_BLOCK(WB1,5),WGT_BLOCK(WB2,8),*) -!dvm$ dynamic A3 - - allocate (A3(AN1,AN2,AN3)) - - A3 = 6 - -!dvm$ actual(A3) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10 + j*NL/100 + n - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute -!dvm$* A3(*,WGT_BLOCK(WB2,8),*) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + 4 - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A3(WGT_BLOCK(WB2,6),*,WGT_BLOCK(WB3,6)) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - if (A3(i,j,n) /= (i*NL/10 + j*NL/100 + n) + 10) then - erri = min(erri,i*NL/10 + j*NL/100 + n) - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A3) - - end subroutine distrw318 - -C ----------------------------------------------------distrw43 -c 43 DISTRIBUTE arrA4[WGT_BLOCK][*][WGT_BLOCK][WGT_BLOCK] -c REDISTRIBUTE arrA4[BLOCK][WGT_BLOCK][BLOCK][*] - - subroutine distrw43 - - integer, parameter :: AN1=24,AN2=16,AN3=8,AN4=8,NL=1000,ER=100000 - integer :: erri=ER,i,j,n,m - - double precision, dimension(6) :: WB1=(/2.0,1.,1.,3.0, 2., 1./) - double precision,dimension(8):: WB2=(/1.0,1.,2.,2.0,1.,1.,2.,2./) - double precision, dimension(6) :: WB3=(/2.0,2.,2.,3.0, 1., 1./) - - integer, allocatable :: A4(:,:,:,:) - character(10), parameter :: tname='distrw43 ' - -!dvm$ distribute -!dvm$* A4(WGT_BLOCK(WB1,6),*,WGT_BLOCK(WB2,8),WGT_BLOCK(WB3,6)) -!dvm$ dynamic A4 - - allocate (A4(AN1,AN2,AN3,AN4)) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ redistribute A4(BLOCK,WGT_BLOCK(WB3,6),BLOCK,*) - -!dvm$ actual (erri) - -!dvm$ region -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), reduction( min( erri ) ) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - if (A4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)) then - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual (erri) - - if (erri == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A4) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_do.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_do.fdv deleted file mode 100644 index 4ff3740..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_do.fdv +++ /dev/null @@ -1,824 +0,0 @@ - program DO1 - -c TESTING convert statement DO . - - print *,'===START OF F2C_DO========================' -C -------------------------------------------------- -c do with enddo - call do_enddo -c do with label (continue) - call do_continue -c do with label (last stmt) - call do_without_end -c check iterator value after DO - call do_value_iter -c check iterator value in same step (+3) - call do_with_same_step1 -c check iterator value in same step (-2) - call do_with_same_step2 -c multi do - call do_multi -c cycle stmt - call do_cycle_stmt_1 - call do_cycle_stmt_2 -c exit stmt - call do_exit_stmt -c do while with var-expr - call do_while_true -c do while const-expr - call do_while_expr - - - print *,'=== END OF F2C_DO ========================= ' - end - -C ----------------------------------------------------do1 - subroutine do_enddo - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_enddo' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do ia = 1, i - A1(i) = A1(i) + ia + (i-5) - enddo - enddo - -!dvm$ end region - do i=1, AN1 - do ia = 1, i - B1(i) = B1(i) + ia + (i-5) - enddo - enddo - erri= ER - - -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end -C ----------------------------------------------------do12 - subroutine do_continue - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_continue' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do 101, ia = 1, i - A1(i) = A1(i) + ia + (i-5) -101 continue - enddo - -!dvm$ end region - do i=1, AN1 - do 201, ia = 1, i - B1(i) = B1(i) + ia + (i-5) -201 continue - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end - -C ----------------------------------------------------do13 - subroutine do_without_end - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_without_end' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do 102, ia = 1, i -102 A1(i) = A1(i) + ia + (i-5) - - enddo - -!dvm$ end region - do i=1, AN1 - do 202, ia = 1, i -202 B1(i) = B1(i) + ia + (i-5) - - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end - - -C ----------------------------------------------------do14 - subroutine do_value_iter - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_value_iter' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do ia = 1, i*2-5 - A1(i) = A1(i) + ia + (i-5) - enddo - A1(i) = ia - - enddo - -!dvm$ end region - do i=1, AN1 - do ia = 1, i*2-5 - B1(i) = B1(i) + ia + (i-5) - enddo - B1(i) = ia - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end - -C ----------------------------------------------------do15 - subroutine do_with_same_step1 - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_with_same_step1' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do ia = 1, i*2-5, 3 - A1(i) = A1(i) + ia + (i-5) - enddo - - enddo - -!dvm$ end region - do i=1, AN1 - do ia = 1, i*2-5, 3 - B1(i) = B1(i) + ia + (i-5) - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end -C ----------------------------------------------------do16 - subroutine do_with_same_step2 - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_with_same_step2' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do ia = i*2-5, 1, -2 - A1(i) = A1(i) + ia + (i-5) - enddo - - enddo - -!dvm$ end region - do i=1, AN1 - do ia = i*2-5, 1, -2 - B1(i) = B1(i) + ia + (i-5) - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end -C ----------------------------------------------------do17 - subroutine do_multi - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_multi' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia,j,n) - do i=1, AN1 - n = 0 - do 107, ia = 1, A1(i) - do 107, j = ia, A1(i) -107 n = n+1 - A1(i) = n + j - 2*ia - enddo -!dvm$ end region - - do i=1, AN1 - n = 0 - do 207, ia = 1, B1(i) - do 207, j = ia, B1(i) -207 n = n+1 - B1(i) = n + j - 2*ia - enddo - - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end -C ----------------------------------------------------do18 - subroutine do_cycle_stmt_1 - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_cycle_stmt_1' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - do ia = 1, i*2-5, 2 - if(mod(A1(i),2) .eq.0) cycle - A1(i) = A1(i) + ia + (i-5) - enddo - enddo - -!dvm$ end region - do i=1, AN1 - do ia = 1, i*2-5, 2 - if(mod(B1(i),2) .eq.0) cycle - B1(i) = B1(i) + ia + (i-5) - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end -C ----------------------------------------------------do19 - subroutine do_cycle_stmt_2 - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_cycle_stmt_2' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia) - do i=1, AN1 - if(A1(i) .gt. 5) cycle - do ia = 1, i-200 - A1(i) = A1(i)+ia+(i-5) - enddo - enddo -!dvm$ end region - do i=1, AN1 - if(B1(i) .gt. 5) cycle - do ia = 1, i-200 - B1(i) = B1(i)+ia+(i-5) - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end - -C ----------------------------------------------------do20 - subroutine do_exit_stmt - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_exit_stmt' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - - -!dvm$ parallel (i) on A1(i) -!dvm$*, private(ia,j,n) - do i=1, AN1 - n = 0 - do ia = 1, A1(i) - j = 1 - do - n = n+1 - if(j .gt. ia) then - n = n-1 - exit - endif - j = j+1 - enddo - enddo - A1(i) = n+A1(i)+2*j-3*ia - enddo -!dvm$ end region - - - do i=1, AN1 - n = 0 - do ia = 1, B1(i) - j = 1 - do - n = n+1 - if(j .gt. ia) then - n = n-1 - exit - endif - j = j+1 - enddo - enddo - B1(i) = n+B1(i)+2*j-3*ia - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end -C ----------------------------------------------------do21 - subroutine do_while_true - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_while_true' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) - do i=1, AN1 - do while(.true.) - A1(i) = A1(i) + i - if(A1(i) .gt. 2*A1(i) .or. i .gt. A1(i) / 3 - 5) exit - enddo - enddo - -!dvm$ end region - do i=1, AN1 - do while(.true.) - B1(i) = B1(i) + i - if(B1(i) .gt. 2*B1(i) .or. i .gt. B1(i) / 3 - 5) exit - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - end -C ----------------------------------------------------do22 - subroutine do_while_expr - integer, parameter :: AN1=256, ER=10000 - character*18 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i, ia -!dvm$ distribute A1(BLOCK) - tname='do_while_expr' - - - - allocate (A1(AN1)) - allocate (B1(AN1)) - erri= ER - do i=1,AN1 - B1(i) =i - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - - -!dvm$ parallel (i) on A1(i) - do i=1, AN1 - do while(A1(i)*3 -40 .lt. A1(i) + 15) - A1(i) = A1(i) + i - if(A1(i) .gt. 2*A1(i) .or. i .gt. A1(i) / 3 - 5) exit - enddo - enddo - -!dvm$ end region - do i=1, AN1 - do while(B1(i)*3 -40 .lt. B1(i) + 15) - B1(i) = B1(i) + i - if(B1(i) .gt. 2*B1(i) .or. i .gt. B1(i) / 3 - 5) exit - enddo - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*18 name - print *,name,' - complete' - end - subroutine ansno(name) - character*18 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math.fdv deleted file mode 100644 index 7f98cc7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math.fdv +++ /dev/null @@ -1,17459 +0,0 @@ - - program INTRINSICS - print *, '=== START OF F2C_MATH intrinsic test ===========' - -c TESTING abs GENERIC INTRINSIC -c integer*4 abs(integer*4) - call abs1 -c real*4 abs(real*4) - call abs2 -c real*8 abs(real*8) - call abs3 -c real*4 abs(complex*8) - call abs4 -c real*8 abs(complex*16) - call abs5 -c real*4 cabs(complex*8) - call abs6 -c real*8 dabs(real*8) - call abs7 -c integer*4 iabs(integer*4) - call abs8 -c real*8 cdabs(complex*16) - call abs14 -c real*8 zabs(complex*16) - call abs15 - -c TESTING acos GENERIC INTRINSIC -c real*4 acos(real*4) - call acos1 -c real*8 acos(real*8) - call acos2 -c real*8 dacos(real*8) - call acos3 - -c TESTING acosh GENERIC INTRINSIC -c real*4 acosh(real*4) - call acosh1 -c real*8 acosh(real*8) - call acosh2 -c real*8 dacosh(real*8) - call acosh3 - -c TESTING aimag GENERIC INTRINSIC -c real*4 aimag(complex*8) - call aimag1 -c real*8 aimag(complex*16) - call aimag2 -c real*4 imag(complex*8) - call aimag3 -c real*8 imag(complex*16) - call aimag4 -c real*8 dimag(complex*16) - call aimag5 - -c TESTING asin GENERIC INTRINSIC -c real*4 asin(real*4) - call asin1 -c real*8 asin(real*8) - call asin2 -c real*8 dasin(real*8) - call asin3 - -c TESTING asinh GENERIC INTRINSIC -c real*4 asinh(real*4) - call asinh1 -c real*8 asinh(real*8) - call asinh2 -c real*8 dasinh(real*8) - call asinh3 - -c TESTING atan GENERIC INTRINSIC -c real*4 atan(real*4) - call atan1 -c real*8 atan(real*8) - call atan2_ -c real*8 datan(real*8) - call atan3 - -c TESTING atan2 GENERIC INTRINSIC -c real*4 atan2(real*4, real*4) - call atan21 -c real*8 atan2(real*8, real*8) - call atan22 -c real*8 datan2(real*8, real*8) - call atan23 - -c TESTING atanh GENERIC INTRINSIC -c real*4 atanh(real*4) - call atanh1 -c real*8 atanh(real*8) - call atanh2 -c real*8 datanh(real*8) - call atanh3 - -c TESTING bessel_j0 GENERIC INTRINSIC -c real*4 bessel_j0(real*4) - call bessel_j01 -c real*8 bessel_j0(real*8) - call bessel_j02 - -c TESTING bessel_j1 GENERIC INTRINSIC -c real*4 bessel_j1(real*4) - call bessel_j11 -c real*8 bessel_j1(real*8) - call bessel_j12 - -c TESTING bessel_jn GENERIC INTRINSIC -c real*4 bessel_jn(integer*4, real*4) - call bessel_jn1 -c real*8 bessel_jn(integer*4, real*8) - call bessel_jn2 - -c TESTING bessel_y0 GENERIC INTRINSIC -c real*4 bessel_y0(real*4) - call bessel_y01 -c real*8 bessel_y0(real*8) - call bessel_y02 - -c TESTING bessel_y1 GENERIC INTRINSIC -c real*4 bessel_y1(real*4) - call bessel_y11 -c real*8 bessel_y1(real*8) - call bessel_y12 -c TESTING bessel_yn GENERIC INTRINSIC -c real*4 bessel_yn(integer*4, real*4) - call bessel_yn1 -c real*8 bessel_yn(integer*4, real*8) - call bessel_yn2 -c TESTING btest GENERIC INTRINSIC -c logical*1 btest(integer*1) - call btest1 -c logical*2 btest(integer*2) - call btest2 -c logical*4 btest(integer*4) - call btest3 -c logical*8 btest(integer*8) - call btest4 - -c TESTING cmplx GENERIC INTRINSIC -c complex*8 cmplx(integer*4) - call cmplx1 -c complex*8 cmplx(real*4) - call cmplx2 -c complex*8 cmplx(real*8) - call cmplx3 -c complex*8 cmplx(complex*8) - call cmplx4 -c complex*8 cmplx(complex*16) - call cmplx5 -c complex*8 cmplx(integer*4, integer*4) - call cmplx6 -c complex*8 cmplx(real*4, real*4) - call cmplx7 -c complex*8 cmplx(real*8, real*8) - call cmplx8 -c complex*8 cmplx(integer*4, integer*4, 4) - call cmplx9 -c complex*8 cmplx(real*4, real*4, 4) - call cmplx10 -c complex*8 cmplx(real*8, real*8, 4) - call cmplx11 -c complex*16 cmplx(integer*4, integer*4, 8) - call cmplx12 -c complex*16 cmplx(real*4, real*4, 8) - call cmplx13 -c complex*16 cmplx(real*8, real*8, 8) - call cmplx14 -c complex*16 dcmplx(integer*4) - call cmplx15 -c complex*16 dcmplx(real*4) - call cmplx16 -c complex*16 dcmplx(real*8) - call cmplx17 -c complex*16 dcmplx(complex*8) - call cmplx18 -c complex*16 dcmplx(complex*16) - call cmplx19 -c complex*16 dcmplx(integer*4, integer*4) - call cmplx20 -c complex*16 dcmplx(real*4, real*4) - call cmplx21 -c complex*16 dcmplx(real*8, real*8) - call cmplx22 - -c TESTING conjg GENERIC INTRINSIC -c complex*8 conjg(complex*8) - call conjg1 -c complex*16 conjg(complex*16) - call conjg2 -c complex*16 dconjg(complex*16) - call conjg3 - -c TESTING cos GENERIC INTRINSIC -c real*4 cos(real*4) - call cos1 -c real*8 cos(real*8) - call cos2 -c complex*8 cos(complex*8) - call cos3 -c complex*16 cos(complex*16) - call cos4 -c real*8 dcos(real*8) - call cos5 -c complex*8 ccos(complex*8) - call cos6 -c complex*16 cdcos(complex*16) - call cos7 -c complex*16 zcos(complex*16) - call cos8 - -c TESTING cosh GENERIC INTRINSIC -c real*4 cosh(real*4) - call cosh1 -c real*8 cosh(real*8) - call cosh2 -c real*8 dcosh(real*8) - call cosh3 - -c TESTING dble GENERIC INTRINSIC -c real*8 dble(integer*1) - call dble1 -c real*8 dble(integer*2) - call dble2 -c real*8 dble(integer*4) - call dble3 -c real*8 dble(integer*8) - call dble4 -c real*8 dble(real*4) - call dble5 -c real*8 dble(real*8) - call dble6 -c real*8 dble(complex*8) - call dble7 -c real*8 dble(complex*16) - call dble8 - -c TESTING dfloat GENERIC INTRINSIC -c real*8 dfloat(integer*1) - call dfloat1 -c real*8 dfloat(integer*2) - call dfloat2 -c real*8 dfloat(integer*4) - call dfloat3 -c real*8 dfloat(integer*8) - call dfloat4 - -c TESTING dim GENERIC INTRINSIC -c integer*1 dim(integer*1) - call dim1 -c integer*2 dim(integer*2) - call dim2 -c integer*4 dim(integer*4) - call dim3 -c integer*8 dim(integer*8) - call dim4 -c real*4 dim(real*4) - call dim5 -c real*8 dim(real*8) - call dim6 -c real*8 ddim(real*8) - call dim13 - -c TESTING dprod SPECIFIC INTRINSIC -c real*8 dprod(real*4) - call dprod1 - -c TESTING dreal SPECIFIC INTRINSIC -c real*8 dreal(complex*16) - call dreal1 - -c TESTING dshiftl SPECIFIC INTRINSIC -c integer*8 dshiftl(integer*8) - call dshiftl1 - -c TESTING dshiftr SPECIFIC INTRINSIC -c integer*8 dshiftr(integer*8) - call dshiftr1 - -c TESTING erf GENERIC INTRINSIC -c real*4 erf(real*4) - call erf1 -c real*8 erf(real*8) - call erf2 -c real*8 derf(real*8) - call erf3 - -c TESTING erfc GENERIC INTRINSIC -c real*4 erfc(real*4) - call erfc1 -c real*8 erfc(real*8) - call erfc2 -c real*8 derfc(real*8) - call erfc3 - -c TESTING erfc_scaled GENERIC INTRINSIC -c real*4 erfc_scaled(real*4) - call erfc_scaled1 -c real*8 erfc_scaled(real*8) - call erfc_scaled2 - -c TESTING exp GENERIC INTRINSIC -c real*4 exp(real*4) - call exp1 -c real*8 exp(real*8) - call exp2 -c complex*8 exp(complex*8) - call exp3 -c complex*16 exp(complex*16) - call exp4 -c real*8 dexp(real*8) - call exp5 -c complex*8 cexp(complex*8) - call exp6 -c complex*16 cdexp(complex*16) - call exp7 -c complex*16 zexp(complex*16) - call exp8 - -c TESTING gamma GENERIC INTRINSIC -c real*4 gamma(real*4) - call gamma1 -c real*8 gamma(real*8) - call gamma2 - -c TESTING hypot GENERIC INTRINSIC -c real*4 hypot(real*4) - call hypot1 -c real*8 hypot(real*8) - call hypot2 - -c TESTING iand GENERIC INTRINSIC -c integer*1 iand(integer*1) - call iand1 -c integer*2 iand(integer*2) - call iand2 -c integer*4 iand(integer*4) - call iand3 -c integer*8 iand(integer*8) - call iand4 -c integer*1 and(integer*1) - call iand5 -c integer*2 and(integer*2) - call iand6 -c integer*4 and(integer*4) - call iand7 -c integer*8 and(integer*8) - call iand8 - -c TESTING ibclr GENERIC INTRINSIC -c integer*1 ibclr(integer*1) - call ibclr1 -c integer*2 ibclr(integer*2) - call ibclr2 -c integer*4 ibclr(integer*4) - call ibclr3 -c integer*8 ibclr(integer*8) - call ibclr4 - -c TESTING ibits GENERIC INTRINSIC -c integer*1 ibits(integer*1) - call ibits1 -c integer*2 ibits(integer*2) - call ibits2 -c integer*4 ibits(integer*4) - call ibits3 -c integer*8 ibits(integer*8) - call ibits4 - -c TESTING ibset GENERIC INTRINSIC -c integer*1 ibset(integer*1) - call ibset1 -c integer*2 ibset(integer*2) - call ibset2 -c integer*4 ibset(integer*4) - call ibset3 -c integer*8 ibset(integer*8) - call ibset4 - -c TESTING ieor GENERIC INTRINSIC -c integer*1 ieor(integer*1) - call ieor1 -c integer*2 ieor(integer*2) - call ieor2 -c integer*4 ieor(integer*4) - call ieor3 -c integer*8 ieor(integer*8) - call ieor4 -c integer*1 xor(integer*1) - call ieor9 -c integer*2 xor(integer*2) - call ieor10 -c integer*4 xor(integer*4) - call ieor11 -c integer*8 xor(integer*8) - call ieor12 - -c TESTING ior GENERIC INTRINSIC -c integer*1 ior(integer*1) - call ior1 -c integer*2 ior(integer*2) - call ior2 -c integer*4 ior(integer*4) - call ior3 -c integer*8 ior(integer*8) - call ior4 -c integer*1 or(integer*1) - call ior5 -c integer*2 or(integer*2) - call ior6 -c integer*4 or(integer*4) - call ior7 -c integer*8 or(integer*8) - call ior8 - -c TESTING ishft GENERIC INTRINSIC -c integer*1 ishft(integer*1) - call ishft1 -c integer*2 ishft(integer*2) - call ishft2 -c integer*4 ishft(integer*4) - call ishft3 -c integer*8 ishft(integer*8) - call ishft4 - -c TESTING lshift GENERIC INTRINSIC -c integer*1 lshift(integer*1) - call lshift1 -c integer*2 lshift(integer*2) - call lshift2 -c integer*4 lshift(integer*4) - call lshift3 -c integer*8 lshift(integer*8) - call lshift4 - -c TESTING rshift GENERIC INTRINSIC -c integer*1 rshift(integer*1) - call rshift1 -c integer*2 rshift(integer*2) - call rshift2 -c integer*4 rshift(integer*4) - call rshift3 -c integer*8 rshift(integer*8) - call rshift4 - -c TESTING ishftc GENERIC INTRINSIC -c integer*1 ishftc(integer*1) - call ishftc1 -c integer*2 ishftc(integer*2) - call ishftc2 -c integer*4 ishftc(integer*4) - call ishftc3 -c integer*8 ishftc(integer*8) - call ishftc4 -c integer*1 ishftc(integer*1) - call ishftc5 -c integer*2 ishftc(integer*2) - call ishftc6 -c integer*4 ishftc(integer*4) - call ishftc7 -c integer*8 ishftc(integer*8) - call ishftc8 - -c TESTING log GENERIC INTRINSIC -c real*4 log(real*4) - call log1 -c real*8 log(real*8) - call log2 -c complex*8 log(complex*8) - call log3 -c complex*16 log(complex*16) - call log4 -c real*4 alog(real*4) - call log5 -c real*8 dlog(real*8) - call log6 -c complex*8 clog(complex*8) - call log7 -c complex*16 cdlog(complex*16) - call log8 -c complex*16 zlog(complex*16) - call log9 - -c TESTING log10 GENERIC INTRINSIC -c real*4 log10(real*4) - call log101 -c real*8 log10(real*8) - call log102 - -c real*4 alog10(real*4) - call log105 -c real*8 dlog10(real*8) - call log106 - -c TESTING log_gamma GENERIC INTRINSIC -c real*4 log_gamma(real*4) - call log_gamma1 -c real*8 log_gamma(real*8) - call log_gamma2 - -c TESTING max GENERIC INTRINSIC -c integer*1 max(integer*1) - call max1_ -c integer*2 max(integer*2) - call max2_ -c integer*4 max(integer*4) - call max3_ -c integer*8 max(integer*8) - call max4_ -c real*4 max(real*4) - call max5_ -c real*8 max(real*8) - call max6_ -c integer*4 max0(integer*4) - call max7_ -c real*4 amax1(real*4) - call max8_ -c real*8 dmax1(real*8) - call max9_ - -c integer*4 max1(real*4) - call max13_ - -c real*4 amax0(integer*4) - call max17_ - -c TESTING merge_bits GENERIC INTRINSIC -c integer*1 merge_bits(integer*1) - call merge_bits1 -c integer*2 merge_bits(integer*2) - call merge_bits2 -c integer*4 merge_bits(integer*4) - call merge_bits3 -c integer*8 merge_bits(integer*8) - call merge_bits4 - -c TESTING min GENERIC INTRINSIC -c integer*1 min(integer*1) - call min1_ -c integer*2 min(integer*2) - call min2_ -c integer*4 min(integer*4) - call min3_ -c integer*8 min(integer*8) - call min4_ -c real*4 min(real*4) - call min5_ -c real*8 min(real*8) - call min6_ -c integer*4 min0(integer*4) - call min7_ -c real*4 amin1(real*4) - call min8_ -c real*8 dmin1(real*8) - call min9_ -c integer*4 min1(real*4) - call min13_ -c real*4 amin0(integer*4) - call min17_ - -c TESTING mod GENERIC INTRINSIC -c integer*1 mod(integer*1) - call mod1 -c integer*2 mod(integer*2) - call mod2 -c integer*4 mod(integer*4) - call mod3 -c integer*8 mod(integer*8) - call mod4 -c real*4 amod(real*4) - call mod10 -c real*8 dmod(real*8) - call mod11 - -c TESTING modulo GENERIC INTRINSIC -c integer*1 modulo(integer*1) - call modulo1 -c integer*2 modulo(integer*2) - call modulo2 -c integer*4 modulo(integer*4) - call modulo3 -c integer*8 modulo(integer*8) - call modulo4 -c real*4 modulo(real*4) - call modulo5 -c real*8 modulo(real*8) - call modulo6 - -c TESTING not GENERIC INTRINSIC -c integer*1 not(integer*1) - call not1 -c integer*2 not(integer*2) - call not2 -c integer*4 not(integer*4) - call not3 -c integer*8 not(integer*8) - call not4 - -c TESTING popcnt GENERIC INTRINSIC -c integer*1 popcnt(integer*1) - call popcnt1 -c integer*2 popcnt(integer*2) - call popcnt2 -c integer*4 popcnt(integer*4) - call popcnt3 -c integer*8 popcnt(integer*8) - call popcnt4 - -c TESTING poppar GENERIC INTRINSIC -c integer*1 poppar(integer*1) - call poppar1 -c integer*2 poppar(integer*2) - call poppar2 -c integer*4 poppar(integer*4) - call poppar3 -c integer*8 poppar(integer*8) - call poppar4 - -c TESTING real GENERIC INTRINSIC -c real*4 real(integer*1) - call real1 -c real*4 real(integer*2) - call real2 -c real*4 real(integer*4) - call real3 -c real*4 real(integer*8) - call real4 -c real*4 real(real*4) - call real5 -c real*4 real(real*8) - call real6 -c real*4 real(complex*8) - call real7 -c real*4 real(complex*16) - call real8 -c real*4 float(integer*4) - call real10 -c real*4 sngl(real*4) - call real13 -c real*4 sngl(real*8) - call real14 - -c TESTING shifta GENERIC INTRINSIC -c integer*1 shifta(integer*1) - call shifta1 -c integer*2 shifta(integer*2) - call shifta2 -c integer*4 shifta(integer*4) - call shifta3 -c integer*8 shifta(integer*8) - call shifta4 - -c TESTING shiftl GENERIC INTRINSIC -c integer*1 shiftl(integer*1) - call shiftl1 -c integer*2 shiftl(integer*2) - call shiftl2 -c integer*4 shiftl(integer*4) - call shiftl3 -c integer*8 shiftl(integer*8) - call shiftl4 - -c TESTING shiftr GENERIC INTRINSIC -c integer*1 shiftr(integer*1) - call shiftr1 -c integer*2 shiftr(integer*2) - call shiftr2 -c integer*4 shiftr(integer*4) - call shiftr3 -c integer*8 shiftr(integer*8) - call shiftr4 - -c TESTING sign GENERIC INTRINSIC -c integer*1 sign(integer*1) - call sign1 -c integer*2 sign(integer*2) - call sign2 -c integer*4 sign(integer*4) - call sign3 -c integer*8 sign(integer*8) - call sign4 -c real*4 sign(real*4) - call sign5 -c real*8 sign(real*8) - call sign6 -c integer*4 isign(integer*4) - call sign9 -c real*8 dsign(real*8) - call sign16 - -c TESTING sin GENERIC INTRINSIC -c real*4 sin(real*4) - call sin1 -c real*8 sin(real*8) - call sin2 -c complex*8 sin(complex*8) - call sin3 -c complex*16 sin(complex*16) - call sin4 -c real*8 dsin(real*8) - call sin5 -c complex*8 csin(complex*8) - call sin6 -c complex*16 cdsin(complex*16) - call sin7 -c complex*16 zsin(complex*16) - call sin8 - -c TESTING sinh GENERIC INTRINSIC -c real*4 sinh(real*4) - call sinh1 -c real*8 sinh(real*8) - call sinh2 -c real*8 dsinh(real*8) - call sinh3 - -c TESTING sqrt GENERIC INTRINSIC -c real*4 sqrt(real*4) - call sqrt1 -c real*8 sqrt(real*8) - call sqrt2 -c complex*8 sqrt(complex*8) - call sqrt3 -c complex*16 sqrt(complex*16) - call sqrt4 -c real*8 dsqrt(real*8) - call sqrt5 -c complex*8 csqrt(complex*8) - call sqrt6 -c complex*16 cdsqrt(complex*16) - call sqrt7 -c complex*16 zsqrt(complex*16) - call sqrt8 - -c TESTING tan GENERIC INTRINSIC -c real*4 tan(real*4) - call tan1 -c real*8 tan(real*8) - call tan2 -c complex*8 tan(complex*8) - call tan3 -c complex*16 tan(complex*16) - call tan4 -c real*8 dtan(real*8) - call tan5 - -c TESTING tanh GENERIC INTRINSIC -c real*4 tanh(real*4) - call tanh1 -c real*8 tanh(real*8) - call tanh2 -c real*8 dtanh(real*8) - call tanh3 - -c TESTING trailz SPECIFIC INTRINSIC -c integer*1 trailz(integer*1) - call trailz1 -c integer*2 trailz(integer*2) - call trailz2 -c integer*4 trailz(integer*4) - call trailz3 -c integer*8 trailz(integer*8) - call trailz4 - - print *, '=== END OF F2C_MATH intrinsic test =============' - end - -C ------------------------------------------------- - - subroutine abs1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'abs_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = abs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'abs_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = abs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'abs_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = abs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y, tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'abs_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = abs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = abs(B(i)) - if (abs(tmp - A(i))/tmp .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y, tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'abs_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = abs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = abs(B(i)) - if (abs(tmp - A(i)) / tmp .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y, tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cabs_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cabs(B(i)) - if (abs(tmp - A(i))/tmp .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dabs_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dabs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iabs_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iabs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y, tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdabs_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdabs(B(i)) - if (abs(tmp - A(i))/tmp .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs15 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y, tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zabs_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zabs(B(i)) - if (abs(tmp - A(i))/tmp .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acos1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acos_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acos2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acos_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acos3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dacos_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dacos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dacos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosh1 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acosh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosh2 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acosh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosh3 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dacosh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dacosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dacosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine aimag1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - character*24 tname - real A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'aimag_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = aimag(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (aimag(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine aimag2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'aimag_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = aimag(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (aimag(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine aimag3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - character*24 tname - real A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imag_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imag(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imag(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine aimag4 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imag_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imag(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imag(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine aimag5 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dimag_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dimag(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dimag(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asin1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asin_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asin2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asin_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asin3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dasin_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dasin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dasin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asinh1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asinh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asinh2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asinh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asinh3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dasinh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dasinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dasinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan_float' - - - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan2_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'datan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = datan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = datan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan21 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan2_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan2(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan2(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan22 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan2_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan2(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan2(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan23 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'datan2_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = datan2(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = datan2(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atanh1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atanh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine atanh2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atanh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine atanh3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'datanh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = datanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = datanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_j01 - integer, parameter :: N = 256, ER = N + 1, W = 20, S = -10 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_j0_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_j0(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_j0(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_j02 - integer, parameter :: N = 256, ER = N + 1, W = 20, S = -10 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_j0_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_j0(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_j0(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_j11 - integer, parameter :: N = 256, ER = N + 1, W = 20, S = -10 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_j1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_j1(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_j1(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_j12 - integer, parameter :: N = 256, ER = N + 1, W = 20, S = -10 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_j1_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_j1(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_j1(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_jn1 - integer, parameter :: N = 256, ER = N + 1, W1 = 19, S1 = 1, W2 = - &20, S2 = -10 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), C(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_jn_float' - erri = ER - - do i = 1, N - call random_number(tmp) - call random_number(C(i)) - B(i) = int(tmp * W1 + S1) - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_jn(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_jn(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_jn2 - integer, parameter :: N = 256, ER = N + 1, W1 = 19, S1 = 1, W2 = - &20, S2 = -10 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), C(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_jn_double' - erri = ER - - do i = 1, N - call random_number(tmp) - call random_number(C(i)) - B(i) = int(tmp * W1 + S1) - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_jn(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_jn(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_y01 - integer, parameter :: N = 256, ER = N + 1, W = 10, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_y0_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_y0(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_y0(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_y02 - integer, parameter :: N = 256, ER = N + 1, W = 10, S = 1 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_y0_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_y0(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_y0(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_y11 - integer, parameter :: N = 256, ER = N + 1, W = 10, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_y1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_y1(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_y1(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_y12 - integer, parameter :: N = 256, ER = N + 1, W = 10, S = 1 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_y1_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_y1(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_y1(B(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_yn1 - integer, parameter :: N = 256, ER = N + 1, W1 = 10, S1 = 0, W2 = - &19, S2 = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), C(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_yn_float' - erri = ER - - do i = 1, N - call random_number(tmp) - call random_number(C(i)) - B(i) = int(tmp * W1 + S1) - C(i) = C(i) * W2 + S2 + B(i) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_yn(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_yn(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine bessel_yn2 - integer, parameter :: N = 256, ER = N + 1, W1 = 10, S1 = 0, W2 = - &19, S2 = 1 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), C(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bessel_yn_double' - erri = ER - - do i = 1, N - call random_number(tmp) - call random_number(C(i)) - B(i) = int(tmp * W1 + S1) - C(i) = C(i) * W2 + S2 + B(i) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bessel_yn(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(bessel_yn(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine btest1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*1 A(N) - integer*1 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'btest_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = btest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (btest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine btest2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*2 A(N) - integer*2 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'btest_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = btest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (btest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine btest3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*4 A(N) - integer*4 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'btest_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = btest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (btest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine btest4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*8 A(N) - integer*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'btest_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = btest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (btest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - integer B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_long_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_float_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_double_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - integer B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_long_long_4' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 4) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 4) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_float_float_4' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 4) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 4) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N) - real*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_double_double_4' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 4) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 4) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - integer B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_long_long_8' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 8) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 8) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_float_float_8' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 8) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 8) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cmplx_double_double_8' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cmplx(B(i), C(i), 8) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (cmplx(B(i), C(i), 8) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx15 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - integer B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx16 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx17 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx18 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx19 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx20 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - integer B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_long_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx21 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_float_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cmplx22 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N) - real*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcmplx_double_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W + S - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcmplx(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dcmplx(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine conjg1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'conjg_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = conjg(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (conjg(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine conjg2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'conjg_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = conjg(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (conjg(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine conjg3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dconjg_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dconjg(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dconjg(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cos_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cos_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - complex tmp - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cos_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos4 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cos_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcos_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dcos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos6 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ccos_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ccos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = ccos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos7 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdcos_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdcos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdcos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cos8 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zcos_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zcos(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zcos(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cosh1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cosh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cosh2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cosh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cosh3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcosh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcosh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dcosh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*1 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*2 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - real B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dble8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dble_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dble(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dble(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*1 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dfloat_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dfloat(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dfloat(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*2 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dfloat_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dfloat(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dfloat(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dfloat_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dfloat(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dfloat(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dfloat_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dfloat(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dfloat(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dim_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ddim_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ddim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ddim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dprod1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N) - real B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dprod_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dprod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dprod(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dreal1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dreal_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dreal(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dreal(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- -!! it does not work with D(i) == 0 && 64 with Intel 2015 - subroutine dshiftl1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dshiftl_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = 1 + int(tmp * 62) !!! HERE - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dshiftl(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dshiftl(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- -!! it does not work with D(i) == 0 && 64 with Intel 2015 - subroutine dshiftr1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dshiftr_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = 1 + int(tmp * 62) !!! HERE - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dshiftr(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dshiftr(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erf1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erf_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erf(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erf(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erf2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erf_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erf(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erf(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erf3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'derf_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = derf(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = derf(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erfc1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erfc_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erfc(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erfc(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erfc2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erfc_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erfc(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erfc(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erfc3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'derfc_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = derfc(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = derfc(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erfc_scaled1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erfc_scaled_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erfc_scaled(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erfc_scaled(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine erfc_scaled2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'erfc_scaled_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = erfc_scaled(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = erfc_scaled(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp1 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'exp_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = exp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = exp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp2 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'exp_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = exp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = exp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp3 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'exp_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = exp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = exp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp4 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'exp_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = exp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = exp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp5 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dexp_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dexp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dexp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp6 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cexp_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cexp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cexp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp7 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdexp_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdexp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdexp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine exp8 - integer, parameter :: N = 256, ER = N + 1, W = 4, S = -2 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 x, y - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zexp_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zexp(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zexp(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine gamma1 - integer, parameter :: N = 256, ER = N + 1, W = 3, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'gamma_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = gamma(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = gamma(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine gamma2 - integer, parameter :: N = 256, ER = N + 1, W = 3, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'gamma_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = gamma(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = gamma(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine hypot1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hypot_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hypot(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = hypot(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine hypot2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hypot_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hypot(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = hypot(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iand_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iand_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iand_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iand_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'and_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = and(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (and(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'and_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = and(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (and(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'and_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = and(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (and(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'and_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = and(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (and(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibclr_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibclr_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibclr_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibclr_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibits_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibits_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibits_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibits_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibset_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibset_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibset_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibset_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ieor_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ieor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ieor_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ieor_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'xor_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = xor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (xor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'xor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = xor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (xor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'xor_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = xor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (xor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'xor_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = xor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (xor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - intrinsic ior - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ior_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - intrinsic ior - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ior_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - intrinsic ior - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ior_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - intrinsic ior - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ior_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'or_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = or(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (or(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'or_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = or(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (or(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'or_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = or(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (or(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'or_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = or(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (or(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishft_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishft_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishft_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishft_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshift1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshift_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshift2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshift_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshift3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshift_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshift4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshift_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshift1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshift_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshift2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshift_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshift3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshift_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshift4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshift_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshift(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshift(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishftc_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log1 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log2 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log3 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log4 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log5 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'alog_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = alog(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = alog(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log6 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dlog_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dlog(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dlog(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log7 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'clog_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = clog(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = clog(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log8 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdlog_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdlog(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdlog(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log9 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zlog_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zlog(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zlog(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log101 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log10_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log102 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log10_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log105 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'alog10_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = alog10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = alog10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log106 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dlog10_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dlog10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dlog10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log_gamma1 - integer, parameter :: N = 256, ER = N + 1, W = 3, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_gamma_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log_gamma(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log_gamma(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log_gamma2 - integer, parameter :: N = 256, ER = N + 1, W = 3, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log_gamma_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log_gamma(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log_gamma(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max1_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max2_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max3_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max4_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max5_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max6_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max7_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max8_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'amax1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = amax1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (amax1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max9_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dmax1_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dmax1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dmax1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max13_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'max1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = max1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (max1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max17_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'amax0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = amax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (amax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ------------------------------------------------- - - subroutine merge_bits1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'merge_bits_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = merge_bits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (merge_bits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine merge_bits2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'merge_bits_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = merge_bits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (merge_bits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine merge_bits3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'merge_bits_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = merge_bits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (merge_bits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine merge_bits4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'merge_bits_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = merge_bits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (merge_bits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min1_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min2_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min3_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - if (i < erri) then - erri = i - endif - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min4_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min5_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min6_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min7_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min8_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'amin1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = amin1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (amin1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min9_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dmin1_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dmin1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dmin1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min13_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'min1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = min1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (min1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min17_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'amin0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = amin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (amin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod1 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'mod_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = mod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (mod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod2 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'mod_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = mod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (mod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod3 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'mod_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = mod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (mod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod4 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'mod_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = mod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (mod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod10 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'amod_float' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = amod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (amod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod11 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dmod_double' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dmod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dmod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo1 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (modulo(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo2 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (modulo(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo3 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (modulo(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo4 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (modulo(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo5 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real, parameter :: EPS = 1e-5 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W1 + S1 - call random_number(C(i)) - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(modulo(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine modulo6 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'modulo_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W1 + S1 - call random_number(C(i)) - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = modulo(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (abs(modulo(B(i), C(i)) - A(i)) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'not_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = not(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (not(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'not_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = not(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (not(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'not_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = not(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (not(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'not_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = not(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (not(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine popcnt1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'popcnt_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = popcnt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (popcnt(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine popcnt2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'popcnt_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = popcnt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (popcnt(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine popcnt3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'popcnt_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = popcnt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (popcnt(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine popcnt4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'popcnt_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = popcnt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (popcnt(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine poppar1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'poppar_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = poppar(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (poppar(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine poppar2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'poppar_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = poppar(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (poppar(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine poppar3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'poppar_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = poppar(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (poppar(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine poppar4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'poppar_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = poppar(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (poppar(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*1 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*2 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - real B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - double complex B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real x, y - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'real_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = real(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (real(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'float_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = float(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (float(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - real B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sngl_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sngl(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sngl(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sngl_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sngl(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sngl(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shifta1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shifta_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shifta(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shifta(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shifta2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shifta_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shifta(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shifta(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shifta3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shifta_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shifta(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shifta(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shifta4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shifta_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shifta(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shifta(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftl1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftl_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftl2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftl_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftl3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftl_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftl4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftl_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftr1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftr_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftr2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftr_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftr3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftr_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine shiftr4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'shiftr_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = shiftr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (shiftr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_float' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sign_double' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (sign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isign_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign16 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dsign_double' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dsign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dsign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sin_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sin_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sin_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin4 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sin_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dsin_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dsin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dsin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin6 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'csin_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = csin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = csin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin7 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdsin_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdsin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdsin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sin8 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zsin_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zsin(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zsin(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sinh1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sinh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sinh2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sinh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sinh3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dsinh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dsinh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dsinh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt1 - integer, parameter :: N = 256, ER = N + 1, W = 100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sqrt_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt2 - integer, parameter :: N = 256, ER = N + 1, W = 100, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sqrt_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sqrt_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sqrt_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt5 - integer, parameter :: N = 256, ER = N + 1, W = 100, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dsqrt_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dsqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dsqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'csqrt_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = csqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = csqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdsqrt_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdsqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdsqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sqrt8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'zsqrt_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = zsqrt(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = zsqrt(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tan_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tan_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan4 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tan_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dtan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dtan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dtan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tanh1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tanh_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tanh2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tanh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tanh3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dtanh_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dtanh(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dtanh(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine trailz1 - integer, parameter :: N = 256, ER = N + 1, W = 8 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'trailz_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = 2 ** int(tmp * W) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = trailz(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (trailz(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine trailz2 - integer, parameter :: N = 256, ER = N + 1, W = 16 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'trailz_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = 2 ** int(tmp * W) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = trailz(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (trailz(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine trailz3 - integer, parameter :: N = 256, ER = N + 1, W = 32 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'trailz_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = 2 ** int(tmp * W) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = trailz(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (trailz(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine trailz4 - integer, parameter :: N = 256, ER = N + 1, W = 64 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'trailz_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = 2 ** int(tmp * W) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = trailz(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (trailz(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*24 name - print *, name, ' - complete' - end - - subroutine ansno(name) - character*24 name - print *, name, ' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math_intel.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math_intel.fdv deleted file mode 100644 index a14a3f0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_math_intel.fdv +++ /dev/null @@ -1,9645 +0,0 @@ - - program INTRINSICS - print *, '=== START OF F2C_MATH intrinsic test ===========' - -c TESTING abs SPECIFIC INTRINSIC -c integer*1 babs(integer*1) - call abs9 -c integer*2 iiabs(integer*2) - call abs10 -c integer*2 habs(integer*2) - call abs11 -c integer*4 jiabs(integer*4) - call abs12 -c integer*8 kiabs(integer*8) - call abs13 - -c TESTING acosd GENERIC INTRINSIC -c real*4 acosd(real*4) - call acosd1 -c real*8 acosd(real*8) - call acosd2 -c real*8 dacosd(real*8) - call acosd3 - -c TESTING asind GENERIC INTRINSIC -c real*4 asind(real*4) - call asind1 -c real*8 asind(real*8) - call asind2 -c real*8 dasind(real*8) - call asind3 - -c TESTING atand GENERIC INTRINSIC -c real*4 atand(real*4) - call atand1 -c real*8 atand(real*8) - call atand2 -c real*8 datand(real*8) - call atand3 - -c TESTING atan2d GENERIC INTRINSIC -c real*4 atan2d(real*4, real*4) - call atan2d1 -c real*8 atan2d(real*8, real*8) - call atan2d2 -c real*8 datan2d(real*8, real*8) - call atan2d3 - -c TESTING btest SPECIFIC INTRINSIC -c logical*1 bbtest(integer*1) - call btest5 -c logical*2 bitest(integer*2) - call btest6 -c logical*2 htest(integer*2) - call btest7 -c logical*4 bjtest(integer*4) - call btest8 -c logical*8 bktest(integer*8) - call btest9 - -c TESTING cosd GENERIC INTRINSIC -c real*4 cosd(real*4) - call cosd1 -c real*8 cosd(real*8) - call cosd2 -c real*8 dcosd(real*8) - call cosd3 - -c TESTING cotan GENERIC INTRINSIC -c real*4 cotan(real*4) - call cotan1 -c real*8 cotan(real*8) - call cotan2 -c real*8 dcotan(real*8) - call cotan3 - -c TESTING cotand GENERIC INTRINSIC -c real*4 cotand(real*4) - call cotand1 -c real*8 cotand(real*8) - call cotand2 -c real*8 dcotand(real*8) - call cotand3 - -c TESTING dfloat SPECIFIC INTRINSIC -c real*8 dfloti(integer*2) - call dfloat5 -c real*8 dflotj(integer*4) - call dfloat6 -c real*8 dflotk(integer*8) - call dfloat7 - -c TESTING dim SPECIFIC INTRINSIC -c integer*1 bdim(integer*1) - call dim7 -c integer*2 iidim(integer*2) - call dim8 -c integer*2 hdim(integer*2) - call dim9 -c integer*4 idim(integer*4) - call dim10 -c integer*4 jidim(integer*4) - call dim11 -c integer*8 kidim(integer*8) - call dim12 - -c TESTING iand SPECIFIC INTRINSIC -c integer*1 biand(integer*1) - call iand9 -c integer*2 iiand(integer*2) - call iand10 -c integer*2 hiand(integer*2) - call iand11 -c integer*4 jiand(integer*4) - call iand12 -c integer*8 kiand(integer*8) - call iand13 - -c TESTING ibchng GENERIC INTRINSIC -c integer*1 ibchng(integer*1) - call ibchng1 -c integer*2 ibchng(integer*2) - call ibchng2 -c integer*4 ibchng(integer*4) - call ibchng3 -c integer*8 ibchng(integer*8) - call ibchng4 - -c TESTING ibclr SPECIFIC INTRINSIC -c integer*1 bbclr(integer*1) - call ibclr5 -c integer*2 iibclr(integer*2) - call ibclr6 -c integer*2 hbclr(integer*2) - call ibclr7 -c integer*4 jibclr(integer*4) - call ibclr8 -c integer*8 kibclr(integer*8) - call ibclr9 - -c TESTING ibits SPECIFIC INTRINSIC -c integer*1 bbits(integer*1) - call ibits5 -c integer*2 iibits(integer*2) - call ibits6 -c integer*2 hbits(integer*2) - call ibits7 -c integer*4 jibits(integer*4) - call ibits8 -c integer*8 kibits(integer*8) - call ibits9 - -c TESTING ibset SPECIFIC INTRINSIC -c integer*1 bbset(integer*1) - call ibset5 -c integer*2 iibset(integer*2) - call ibset6 -c integer*2 hbset(integer*2) - call ibset7 -c integer*4 jibset(integer*4) - call ibset8 -c integer*8 kibset(integer*8) - call ibset9 - -c TESTING ieor GENERIC INTRINSIC -c integer*1 ixor(integer*1) - call ieor5 -c integer*2 ixor(integer*2) - call ieor6 -c integer*4 ixor(integer*4) - call ieor7 -c integer*8 ixor(integer*8) - call ieor8 -c integer*1 bieor(integer*1) - call ieor13 -c integer*1 bixor(integer*1) - call ieor14 -c integer*2 iieor(integer*2) - call ieor15 -c integer*2 hieor(integer*2) - call ieor16 -c integer*2 iixor(integer*2) - call ieor17 -c integer*2 hixor(integer*2) - call ieor18 -c integer*4 jieor(integer*4) - call ieor19 -c integer*4 jixor(integer*4) - call ieor20 -c integer*8 kieor(integer*8) - call ieor21 - -c TESTING ilen GENERIC INTRINSIC -c integer*1 ilen(integer*1) - call ilen1 -c integer*2 ilen(integer*2) - call ilen2 -c integer*4 ilen(integer*4) - call ilen3 -c integer*8 ilen(integer*8) - call ilen4 - -c TESTING ior SPECIFIC INTRINSIC -c integer*1 bior(integer*1) - call ior9 -c integer*2 iior(integer*2) - call ior10 -c integer*2 hior(integer*2) - call ior11 -c integer*4 jior(integer*4) - call ior12 -c integer*8 kior(integer*8) - call ior13 - -c TESTING isha GENERIC INTRINSIC -c integer*1 isha(integer*1) - call isha1 -c integer*2 isha(integer*2) - call isha2 -c integer*4 isha(integer*4) - call isha3 -c integer*8 isha(integer*8) - call isha4 - -c TESTING ishc GENERIC INTRINSIC -c integer*1 ishc(integer*1) - call ishc1 -c integer*2 ishc(integer*2) - call ishc2 -c integer*4 ishc(integer*4) - call ishc3 -c integer*8 ishc(integer*8) - call ishc4 - -c TESTING ishft GENERIC INTRINSIC -c integer*1 bshft(integer*1) - call ishft5 -c integer*2 iishft(integer*2) - call ishft6 -c integer*2 hshft(integer*2) - call ishft7 -c integer*4 jishft(integer*4) - call ishft8 -c integer*8 kishft(integer*8) - call ishft9 - -c TESTING lshft GENERIC INTRINSIC -c integer*1 lshft(integer*1) - call lshft1 -c integer*2 lshft(integer*2) - call lshft2 -c integer*4 lshft(integer*4) - call lshft3 -c integer*8 lshft(integer*8) - call lshft4 - -c TESTING rshft GENERIC INTRINSIC -c integer*1 rshft(integer*1) - call rshft1 -c integer*2 rshft(integer*2) - call rshft2 -c integer*4 rshft(integer*4) - call rshft3 -c integer*8 rshft(integer*8) - call rshft4 - -c TESTING ishftc SPECIFIC INTRINSIC -c integer*1 bshftc(integer*1) - call ishftc9 -c integer*1 bshftc(integer*1) - call ishftc10 -c integer*2 iishftc(integer*2) - call ishftc11 -c integer*2 iishftc(integer*2) - call ishftc12 -c integer*2 hshftc(integer*2) - call ishftc13 -c integer*2 hshftc(integer*2) - call ishftc14 -c integer*4 jishftc(integer*4) - call ishftc15 -c integer*4 jishftc(integer*4) - call ishftc16 -c integer*8 kishftc(integer*8) - call ishftc17 -c integer*8 kishftc(integer*8) - call ishftc18 - -c TESTING ishl GENERIC INTRINSIC -c integer*1 ishl(integer*1) - call ishl1 -c integer*2 ishl(integer*2) - call ishl2 -c integer*4 ishl(integer*4) - call ishl3 -c integer*8 ishl(integer*8) - call ishl4 - -c TESTING log10 GENERIC INTRINSIC -c complex*8 log10(complex*8) - call log103 -c complex*16 log10(complex*16) - call log104 -c complex*8 clog10(complex*8) - call log107 -c complex*16 cdlog10(complex*16) - call log108 - -c TESTING max SPECIFIC INTRINSIC -c integer*2 imax0(integer*2) - call max10_ -c integer*4 jmax0(integer*4) - call max11_ -c integer*8 kmax0(integer*8) - call max12_ -c integer*2 imax1(real*4) - call max14_ -c integer*4 jmax1(real*4) - call max15_ -c integer*8 kmax1(real*4) - call max16_ -c real*4 aimax0(integer*2) - call max18_ -c real*4 ajmax0(integer*4) - call max19_ -c real*4 akmax0(integer*8) - call max20_ - -c TESTING min SPECIFIC INTRINSIC -c integer*2 imin0(integer*2) - call min10_ -c integer*4 jmin0(integer*4) - call min11_ -c integer*8 kmin0(integer*8) - call min12_ - -c integer*2 imin1(real*4) - call min14_ -c integer*4 jmin1(real*4) - call min15_ -c integer*8 kmin1(real*4) - call min16_ -c real*4 aimin0(integer*2) - - call min18_ -c real*4 ajmin0(integer*4) - call min19_ -c real*4 akmin0(integer*8) - call min20_ - -c TESTING mod SPECIFIC INTRINSIC -c integer*1 bmod(integer*1) - call mod5 -c integer*2 imod(integer*2) - call mod6 -c integer*2 hmod(integer*2) - call mod7 -c integer*4 jmod(integer*4) - call mod8 -c integer*8 kmod(integer*8) - call mod9 - -c TESTING not SPECIFIC INTRINSIC -c integer*1 bnot(integer*1) - call not5 -c integer*2 inot(integer*2) - call not6 -c integer*2 hnot(integer*2) - call not7 -c integer*4 jnot(integer*4) - call not8 -c integer*8 knot(integer*8) - call not9 - -c TESTING isign SPECIFIC INTRINSIC -c integer*1 isign(integer*1) - call sign7 -c integer*2 isign(integer*2) - call sign8 -c integer*8 isign(integer*8) - call sign10 -c integer*1 bsign(integer*1) - call sign11 -c integer*2 iisign(integer*2) - call sign12 -c integer*2 hsign(integer*2) - call sign13 -c integer*4 jisign(integer*4) - call sign14 -c integer*8 kisign(integer*8) - call sign15 - -c TESTING float SPECIFIC INTRINSIC -c real*4 floati(integer*2) - call real9 -c real*4 floatj(integer*4) - call real11 -c real*4 floatk(integer*8) - call real12 - - -c TESTING tan SPECIFIC INTRINSIC -c complex*8 ctan(complex*8) - call tan6 -c complex*16 cdtan(complex*16) - call tan7 -c complex*16 ztan(complex*16) - call tan8 - -c TESTING sind SPECIFIC INTRINSIC -c real*4 sind(real*4) - call sind1 -c real*8 sind(real*8) - call sind2 -c real*8 dsind(real*8) - call sind3 - -c TESTING tand GENERIC INTRINSIC -c real*4 tand(real*4) - call tand1 -c real*8 tand(real*8) - call tand2 -c real*8 dtand(real*8) - call tand3 - - - print *, '=== END OF F2C_MATH intrinsic test =============' - end - -C ------------------------------------------------- - - subroutine abs9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'babs_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = babs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (babs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iiabs_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iiabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iiabs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'habs_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = habs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (habs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jiabs_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jiabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jiabs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine abs13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kiabs_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kiabs(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kiabs(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosd1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acosd_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosd2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'acosd_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = acosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = acosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine acosd3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dacosd_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dacosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dacosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asind1 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asind_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asind2 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'asind_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = asind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = asind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine asind3 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dasind_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dasind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dasind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end -C ------------------------------------------------- - - subroutine atand1 - integer, parameter :: N = 256, ER = N + 1, W = 100, S = 0 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atand_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atand2 - integer, parameter :: N = 256, ER = N + 1, W = 100, S = 0 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine atand3 - integer, parameter :: N = 256, ER = N + 1, W = 100, S = 0 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'datand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = datand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = datand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine atan2d1 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan2d_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan2d(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan2d(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan2d2 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'atan2d_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = atan2d(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = atan2d(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine atan2d3 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'datan2d_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - call random_number(C(i)) - B(i) = B(i) * W1 + S1 - C(i) = C(i) * W2 + S2 - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = datan2d(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = datan2d(B(i), C(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine btest5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*1 A(N) - integer*1 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bbtest_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bbtest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bbtest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine btest6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*2 A(N) - integer*2 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bitest_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bitest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bitest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine btest7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*2 A(N) - integer*2 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'htest_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = htest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (htest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine btest8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*4 A(N) - integer*4 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bjtest_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bjtest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bjtest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine btest9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - logical*8 A(N) - integer*8 B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bktest_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bktest(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bktest(B(i), C(i)) .neqv. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine cosd1 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cosd_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cosd2 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cosd_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cosd3 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcosd_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcosd(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dcosd(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotan1 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cotan_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cotan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cotan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotan2 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cotan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cotan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cotan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotan3 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcotan_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcotan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dcotan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotand1 - integer, parameter :: N = 256, ER = N + 1, W = 120, S = 30 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cotand_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cotand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cotand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotand2 - integer, parameter :: N = 256, ER = N + 1, W = 120, S = 30 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cotand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cotand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cotand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine cotand3 - integer, parameter :: N = 256, ER = N + 1, W = 120, S = 30 - real*8, parameter :: EPS = 1d-12 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dcotand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dcotand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dcotand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*2 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dfloti_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dfloti(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dfloti(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dflotj_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dflotj(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dflotj(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dfloat7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real*8 A(N) - integer*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dflotk_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dflotk(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (dflotk(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bdim_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bdim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bdim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iidim_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iidim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iidim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hdim_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hdim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hdim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'idim_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = idim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (idim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jidim_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jidim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jidim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine dim12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kidim_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kidim(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kidim(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'biand_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = biand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (biand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iiand_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iiand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iiand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hiand_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hiand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hiand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jiand_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jiand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jiand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine iand13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kiand_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kiand(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kiand(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibchng1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibchng_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibchng(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibchng(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine ibchng2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibchng_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibchng(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibchng(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine ibchng3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibchng_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibchng(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibchng(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine ibchng4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ibchng_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ibchng(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ibchng(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - end - -C ------------------------------------------------- - - subroutine ibclr5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bbclr_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bbclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bbclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iibclr_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hbclr_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hbclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hbclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jibclr_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibclr9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kibclr_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kibclr(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kibclr(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bbits_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bbits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bbits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iibits_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hbits_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hbits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hbits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jibits_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibits9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kibits_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * (bit_size(D(i)) + 1)) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1 - D(i))) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kibits(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kibits(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bbset_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bbset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bbset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iibset_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hbset_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hbset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hbset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jibset_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ibset9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kibset_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kibset(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kibset(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ixor_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ixor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ixor_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ixor_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bieor_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bixor_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor15 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iieor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor16 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hieor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor17 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iixor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor18 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hixor_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor19 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jieor_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor20 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jixor_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jixor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jixor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ieor21 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kieor_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kieor(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kieor(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ilen1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ilen_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ilen(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ilen(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ilen2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ilen_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ilen(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ilen(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ilen3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ilen_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ilen(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ilen(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ilen4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ilen_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ilen(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ilen(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bior_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iior_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hior_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jior_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ior13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kior_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kior(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kior(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine isha1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isha_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isha(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isha(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine isha2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isha_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isha(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isha(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine isha3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isha_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isha(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isha(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine isha4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isha_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isha(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isha(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishc1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishc_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishc2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishc3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishc_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishc4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishc_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bshft_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iishft_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hshft_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jishft_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishft9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kishft_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshft1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshft_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshft2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshft_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshft3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshft_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine lshft4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'lshft_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = lshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (lshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshft1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshft_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshft2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshft_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshft3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshft_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine rshft4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'rshft_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = rshft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (rshft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bshftc_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bshftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bshftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bshftc_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bshftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bshftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iishftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iishftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hshftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hshftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hshftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hshftc_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hshftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hshftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc15 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jishftc_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (2 * bit_size(C(i)) + 1) - bit_size(C(i))) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jishft(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jishft(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc16 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jishftc_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc17 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kishftc_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kishftc(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kishftc(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishftc18 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kishftc_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * bit_size(D(i)) + 1) - call random_number(tmp) - C(i) = int(tmp * D(i)) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kishftc(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kishftc(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishl1 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishl_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishl2 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishl_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishl3 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishl_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine ishl4 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ishl_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * (bit_size(C(i)) + 1)) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ishl(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ishl(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log103 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log10_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log104 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'log10_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = log10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = log10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log107 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'clog10_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = clog10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = clog10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine log108 - integer, parameter :: N = 256, ER = N + 1, W = 99, S = 1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdlog10_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdlog10(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdlog10(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max10_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imax0_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max11_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jmax0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jmax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jmax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max12_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kmax0_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kmax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kmax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max14_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imax1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imax1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imax1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max15_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jmax1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jmax1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jmax1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max16_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kmax1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kmax1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kmax1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C ------------------------------------------------- - - subroutine max18_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*2 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'aimax0_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = aimax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (aimax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max19_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ajmax0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ajmax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ajmax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine max20_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*8 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'akmax0_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = akmax0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (akmax0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min10_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imin0_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min11_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jmin0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jmin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jmin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min12_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kmin0_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kmin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kmin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C ------------------------------------------------- - - subroutine min14_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imin1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imin1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imin1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min15_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jmin1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jmin1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jmin1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min16_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N) - real B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kmin1_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - call random_number(C(i)) - C(i) = C(i) * W + S - call random_number(D(i)) - D(i) = D(i) * W + S - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kmin1(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kmin1(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min18_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*2 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'aimin0_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = aimin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (aimin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min19_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ajmin0_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ajmin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (ajmin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine min20_ - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*8 B(N), C(N), D(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'akmin0_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - call random_number(tmp) - D(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C, D) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = akmin0(B(i), C(i), D(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (akmin0(B(i), C(i), D(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod5 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bmod_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bmod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bmod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod6 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'imod_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = imod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (imod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod7 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hmod_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hmod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hmod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod8 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jmod_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jmod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jmod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine mod9 - integer, parameter :: N = 256, ER = N + 1, W1 = 200, S1 = -100, W2 - & = 99, S2 = 1 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kmod_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W1 + S1) - call random_number(tmp) - C(i) = int(tmp * W2 + S2) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kmod(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kmod(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not5 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bnot_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bnot(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bnot(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not6 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'inot_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = inot(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (inot(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hnot_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hnot(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hnot(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jnot_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jnot(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jnot(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine not9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'knot_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = knot(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (knot(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign7 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isign_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign8 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isign_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign10 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'isign_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = isign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (isign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C ------------------------------------------------- - - subroutine sign11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*1 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'bsign_char' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = bsign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (bsign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'iisign_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = iisign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (iisign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign13 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*2 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'hsign_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = hsign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (hsign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign14 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*4 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'jisign_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = jisign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (jisign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sign15 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - integer*8 A(N), B(N), C(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'kisign_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - call random_number(tmp) - C(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B, C) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = kisign(B(i), C(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (kisign(B(i), C(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real9 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*2 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'floati_short' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = floati(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (floati(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real11 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*4 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'floatj_long' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = floatj(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (floatj(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine real12 - integer, parameter :: N = 256, ER = N + 1, W = 200, S = -100 - character*24 tname - real A(N) - integer*8 B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'floatk_longlong' - erri = ER - - do i = 1, N - call random_number(tmp) - B(i) = int(tmp * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = floatk(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)) - do i = 1, N - if (floatk(B(i)) .ne. A(i)) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ------------------------------------------------- - - subroutine tan6 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real, parameter :: EPS = 1e-6 - character*24 tname - complex A(N), B(N) - real x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ctan_complexf' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = cmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ctan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = ctan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan7 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'cdtan_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = cdtan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = cdtan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tan8 - integer, parameter :: N = 256, ER = N + 1, W = 2, S = -1 - real*8, parameter :: EPS = 1d-15 - character*24 tname - double complex A(N), B(N) - real*8 x, y - integer erri, i, asize, clock - integer, allocatable :: seed(:) - double complex tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'ztan_complexd' - erri = ER - - do i = 1, N - call random_number(x) - call random_number(y) - B(i) = dcmplx(x * W + S, y * W + S) - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = ztan(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = ztan(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ------------------------------------------------- - - subroutine sind1 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sind_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sind2 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'sind_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = sind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = sind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine sind3 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dsind_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dsind(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dsind(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tand1 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real, parameter :: EPS = 1e-6 - character*24 tname - real A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tand_float' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tand2 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'tand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = tand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = tand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------- - - subroutine tand3 - integer, parameter :: N = 256, ER = N + 1, W = 720, S = -360 - real*8, parameter :: EPS = 1d-11 - character*24 tname - real*8 A(N), B(N) - integer erri, i, asize, clock - integer, allocatable :: seed(:) - real*8 tmp - -!dvm$ distribute A(BLOCK) - - call random_seed(size = asize) - allocate(seed(asize)) - call system_clock(count = clock) - seed = clock + 37 * (/(i - 1, i = 1, asize)/) - call random_seed(put = seed) - deallocate(seed) - - tname = 'dtand_double' - erri = ER - - do i = 1, N - call random_number(B(i)) - B(i) = B(i) * W + S - enddo - -!dvm$ actual(B) -!dvm$ region -!dvm$ parallel (i) on A(i) - do i = 1, N - A(i) = dtand(B(i)) - enddo -!dvm$ end region -!dvm$ get_actual(A) - -!dvm$ parallel (i) on A(i), reduction(min(erri)), private(tmp) - do i = 1, N - tmp = dtand(B(i)) - if (abs(tmp - A(i))/abs(tmp) .gt. EPS) then - erri = min(erri, i) - endif - enddo - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ------------------------------------------------- - - subroutine ansyes(name) - character*24 name - print *, name, ' - complete' - end - - subroutine ansno(name) - character*24 name - print *, name, ' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_select.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_select.fdv deleted file mode 100644 index 17a81a0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/f2c_select.fdv +++ /dev/null @@ -1,500 +0,0 @@ - program SELECT_SIMPLE - -c TESTING convert statement SELECT . - - print *,'===START OF F2C_SELECT ========================' -C -------------------------------------------------- -c normal select - call select_with_default -c only default node select - call select_only_default -c select without default node - call select_without_default -c select with interval - call select_interval -c select with multi interval - call select_multi_interval -c select with multi select - call select_multi_select - print *,'=== END OF F2C_SELECT ========================= ' - end - -C ----------------------------------------------------select11 - subroutine select_with_default - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_with_default' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 4 ) ) - case(0) - ia = ia + 4 - case(1) - ia = ia+3 - case(2) - ia = ia+2 - case default - ia = ia+1 - end select - A1(i) = ia*2+3 - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 4 ) ) - case(0) - ia = ia + 4 - case(1) - ia = ia+3 - case(2) - ia = ia+2 - case default - ia = ia+1 - end select - B1(i) = ia*2+3 - enddo - - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end -C ----------------------------------------------------select12 - subroutine select_only_default - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_only_default' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 4) ) - case default - ia = ia*A1(i)-15 - end select - A1(i) = ia - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 4) ) - case default - ia = ia*B1(i)-15 - end select - B1(i) = ia - enddo - - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end - -C ----------------------------------------------------select13 - subroutine select_without_default - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_without_default' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 4 ) ) - case(0) - ia = ia + 4 - case(1) - ia = ia*2+3 - case(2) - ia = ia*3-7 - end select - A1(i) = ia - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 4 ) ) - case(0) - ia = ia + 4 - case(1) - ia = ia*2+3 - case(2) - ia = ia*3-7 - end select - B1(i) = ia - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end - - -C ----------------------------------------------------select14 - subroutine select_interval - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_interval' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 20 ) ) - case(:7) - ia = ia + 4 - case(9:13) - ia = ia*2+3 - case(16:) - ia = ia*3-7 - case default - ia = A1(i)*1/8 +ia*A1(i)-ia - end select - A1(i) = ia - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 20 ) ) - case(:7) - ia = ia + 4 - case(9:13) - ia = ia*2+3 - case(16:) - ia = ia*3-7 - case default - ia = B1(i)*1/8 +ia*B1(i)-ia - end select - B1(i) = ia - enddo - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end - -C ----------------------------------------------------select15 - subroutine select_multi_interval - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_multi_interval' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 30 ) ) - case(:4) - ia = ia + 4 - case(9:13, 20:24, 5) - ia = ia*2+3 - case(7, 17:19, 26: ) - ia = ia*3-7 - case default - ia = A1(i)*1/8 +ia*A1(i)-ia - end select - A1(i) = ia - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 30 ) ) - case(:4) - ia = ia + 4 - case(9:13, 20:24, 5) - ia = ia*2+3 - case(7, 17:19, 26: ) - ia = ia*3-7 - case default - ia = B1(i)*1/8 +ia*B1(i)-ia - end select - B1(i) = ia - enddo - - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end -C ----------------------------------------------------select16 - subroutine select_multi_select - integer, parameter :: AN1=8, ER=10000 - character*22 tname - integer, allocatable :: A1(:) - integer, allocatable :: B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='select_multi_interval' - allocate (A1(AN1)) - allocate (B1(AN1)) - - do i=1,AN1 - B1(i) =i - enddo -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1, AN1 - ia = A1(i) - select case( MOD( A1(i), 30 ) ) - case(:4) - ia = ia + 4 - case(9:13, 20:24, 5) - ia = ia*2+3 - select case(ia + min(A1(i) +7, A1(i)*A1(i)*1/4-19 )) - case(:10) - ia = max(ia, 19) + 7 - case default - ia = ia/2 -9 - case(17) - ia = ia+1 - case(20:) - ia = A1(i)-7 - end select - case(7, 17:19, 26: ) - ia = ia*3-7 - case default - ia = A1(i)*1/8 +ia*A1(i)-ia - end select - A1(i) = ia - enddo -!dvm$ end region - - do i=1, AN1 - ia = B1(i) - select case( MOD( B1(i), 30 ) ) - case(:4) - ia = ia + 4 - case(9:13, 20:24, 5) - ia = ia*2+3 - select case(ia + min(B1(i) +7, A1(i)*B1(i)*1/4-19 )) - case(:10) - ia = max(ia, 19) + 7 - case default - ia = ia/2 -9 - case(17) - ia = ia+1 - case(20:) - ia = B1(i)-7 - end select - case(7, 17:19, 26: ) - ia = ia*3-7 - case default - ia = B1(i)*1/8 +ia*B1(i)-ia - end select - B1(i) = ia - enddo - - erri= ER -!dvm$ get_actual(A1) -!dvm$ parallel (i) on A1(i), reduction( min( erri ) ) - do i=1,AN1 - if ( abs(A1(i) - B1(i) ) .lt. 0.001 ) then - else - erri = min(erri,i) - endif - enddo - - - erri= ER - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - deallocate (B1) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*22 name - print *,name,' - complete' - end - subroutine ansno(name) - character*22 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/settings deleted file mode 100644 index a80f859..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F2C/settings +++ /dev/null @@ -1 +0,0 @@ -DIMENSION_COUNT=0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy11.fdv deleted file mode 100644 index 1adfeb3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy11.fdv +++ /dev/null @@ -1,65 +0,0 @@ - PROGRAM COPY11 - PARAMETER (ERR=100, L=10, ITMAX=1) - INTEGER A(L),X(L), C(L),B(L),D(L) - INTEGER ERRI,i -CDVM$ DISTRIBUTE (BLOCK) :: A -CDVM$ ALIGN C(I) WITH A(I) -CDVM$ ALIGN D(I) WITH A(I) - -CDVM$ ASYNCID GR - CHARACTER*7 tname - PRINT *, '======== START OF COPY11 ========' - tname='COPY11' - ERRI= ERR - do I=1,L - X(I)=I - enddo - B(1)=X(1)*ITMAX - do I=2,L - B(I)=B(I-1)+X(I) - B(I)=ITMAX*B(I) - enddo - -CDVM$ ASYNCHRONOUS GR - D(:)=B(:) -CDVM$ END ASYNCHRONOUS - -CDVM$ PARALLEL ( I) ON A( I) - DO I = 1, L - A( I) = I - ENDDO - - C(1)=A(1) - - DO IT = 1, ITMAX -CDVM$ PARALLEL (I) ON A( I), ACROSS(C(1:1)) - DO I = 2, L - C(I) = C(I-1) + A(I) - ENDDO - ENDDO - -CDVM$ ASYNCWAIT GR - -CDVM$ PARALLEL (I) ON C(I), reduction (min(ERRI)) - do i=1,L - if (D(i) .ne. C(i)) then - ERRI = min (I,ERRI) - endif - enddo - - if (ERRI .eq.ERR) then - call ansyes(tname) - else - call ansno(tname) - endif - print *,'=== END OF COPY11 ======================' - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy21.fdv deleted file mode 100644 index 08f64e9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/copy21.fdv +++ /dev/null @@ -1,49 +0,0 @@ - program copy21 - parameter (ERR=10000, L=10) - integer A(L,L),X(L,L), C(L,L),B(L,L),D(L,L) - integer:: ERRI=ERR -!DVM$ DISTRIBUTE (BLOCK,BLOCK) :: A -!DVM$ ALIGN C(I,J) WITH A(I,J) -!DVM$ ALIGN D(I,J) WITH A(I,J) - - character*6:: tname ='copy21' - print *,'======== START OF copy21 ==================' - - - do J=1,L - do I=1,L - X(I,J)=I+J - enddo - enddo - B = 0 - C(:,:)=B(:,:) - D(1:L,1) = X(1:L,1) - C(1:L,1) = D(1:L,1) - - -!DVM$ PARALLEL (J,I) ON C(I,J), REDUCTION (min(ERRI)) - do J=1,L - do I=1,L - if (J.eq.1 .and. X(I,1) .ne. C(I,1)) then - ERRI = min (I,ERRI) - else if(J.ne.1 .and. C(I,J) .ne. 0) then - ERRI = min (I,ERRI) - endif - enddo - enddo - if (ERRI .eq.ERR) then - call ansyes(tname) - else - call ansno(tname) - endif - print *,'======== END OF copy21 ======================' - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/module21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/module21.fdv deleted file mode 100644 index d292a68..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/module21.fdv +++ /dev/null @@ -1,114 +0,0 @@ - MODULE FOR_JAC - PARAMETER (K=8, ITMAX=20) - REAL AA(K,K), EPS, MAXEPS, BB(K,K) -CDVM$ DISTRIBUTE (BLOCK, BLOCK) :: AA -CDVM$ ALIGN BB(I,J) WITH AA(I,J) - END MODULE - - MODULE MOD1 - USE FOR_JAC - END MODULE - - PROGRAM MODULE21 - USE MOD1,A=>AA,B=>BB !FOR_JAC - -CDVM$ REDUCTION_GROUP REPS - REAL A1(K,K), EPS1, B1(K,K) -CDVM$ DISTRIBUTE (BLOCK, BLOCK) :: A1 -CDVM$ ALIGN B1(I,J) WITH A1(I,J) - - PRINT *, '======== START OF MODULE21 ========' -CDVM$ SHADOW_GROUP SA (A) -C creation of descriptor for operations with imported/exported -C elements of array A - MAXEPS = 0.5E - 7 - -CDVM$ PARALLEL ( J, I) ON A( I, J) - DO J = 1, K - DO I = 1, K - A( I, J) = 0. - IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN - B(I, J) = 0. - ELSE - B(I, J) = ( 1. + I + J ) - ENDIF - ENDDO - ENDDO - DO IT = 1, ITMAX - EPS = 0. -CDVM$ PARALLEL ( J, I) ON A( I, J), SHADOW_START SA, -CDVM$* REDUCTION(REPS:MAX(EPS)) -C the loops iteration order is changed: at first -C exported (boundary) elements of A are calculated and sent -C then internal elements of array A are calculated - DO J = 2, K-1 - DO I = 2, K-1 - EPS = MAX ( EPS, ABS( B( I, J) - A( I, J))) - A( I, J) = B( I, J) - ENDDO - ENDDO - -CDVM$ REDUCTION_START REPS -CDVM$ PARALLEL ( J, I) ON B( I, J), SHADOW_WAIT SA - DO J = 2, K-1 - DO I = 2, K-1 - B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J ) + - * A( I, J+1 ))/4 - ENDDO - ENDDO -CDVM$ REDUCTION_WAIT REPS - IF (EPS .LT. MAXEPS) GO TO 3 - ENDDO - - 3 CONTINUE -CDVM$ PARALLEL ( J, I) ON A( I, J) -C nest of parallel loops for initialization of arrays - DO J = 1, K - DO I = 1, K - A1( I, J) = 0. - IF(I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.K .OR. J.EQ.K) THEN - B1(I, J) = 0. - ELSE - B1(I, J) = ( 1. + I + J ) - ENDIF - ENDDO - ENDDO - DO IT = 1, ITMAX - EPS1 = 0. -CDVM$ PARALLEL ( J, I) ON A1( I, J), -CDVM$* REDUCTION (MAX(EPS1)) - DO J = 2, K-1 - DO I = 2, K-1 - EPS1 = MAX (EPS1, ABS(B1( I, J) - A1(I, J))) - A1(I, J) = B1( I, J) - ENDDO - ENDDO - -CDVM$ PARALLEL ( J, I) ON B1 (I, J), SHADOW_RENEW(A1) - DO J = 2, K-1 - DO I = 2, K-1 - B1(I, J) = (A1 (I-1, J) + A1 (I, J-1) + A1 (I+1, J) + - * A1( I, J+1 ))/4 - ENDDO - ENDDO - IF (EPS1 .LT. MAXEPS ) GO TO 4 - ENDDO - - 4 IF (EPS .EQ. EPS1) THEN - call ansyes('module21') - ELSE - call ansno('module21') - ENDIF - PRINT *, '=== END OF MODULE21 ==================' - - END - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/settings deleted file mode 100644 index 3ef2d72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/settings +++ /dev/null @@ -1 +0,0 @@ -DVM_ONLY=1 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/type21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/type21.fdv deleted file mode 100644 index f8d9a45..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/F95/type21.fdv +++ /dev/null @@ -1,89 +0,0 @@ - program type21 - integer(4),parameter:: n=4,m=4,l=4,err=100 - real ,dimension (n,m,l):: a - integer::k,p,q,err1,err2,err3 - type OBJECT - character (15) name - integer st(n) - integer bl(n,m) - integer matr(n,m) - end type OBJECT - - integer, dimension(n,m) :: a1, b, c - integer, dimension(n) :: qq - -CDVM$ distribute (BLOCK, *):: a1 -CDVM$ align qq(i) with a1( i, *) -CDVM$ align (i,j) with a1(i,j):: c,b - type(OBJECT) :: GR,OTD -CDVM$ ASYNCID Y - - print *,'====== START OF TYPE21 ==========' -! Testing of different variants of deffinitions a - do k=1,n - do p=1,m - do q=1,l - a(k,p,q)=10+k+p+q - end do - end do - end do - a=1; a(1:n,1:m,1:l)=10+n+m+l!!; print*,a - a=1; forall(k=1:n,p=1:m,q=1:l) a(k,p,q) = 10+k+p+q; - do k=1,n - do p=1,m - a1(k,p)=k - end do - end do - c=0 - -CDVM$ ASYNCHRONOUS Y - qq(:)= a1(:,2) - b(:,:) = a1(:,:) - c(1:2,:) = a1(3:4,:) -CDVM$ END ASYNCHRONOUS - GR%st=(/1,2,3,4/) - - do k=1,n - do p=1,m - GR%matr(k,p)=k - end do - end do - - GR%bl=reshape((/3,4,0,0,3,4,0,0,3,4,0,0,3,4,0,0/),(/4,4/)) - -CDVM$ ASYNCWAIT Y - err1=err;err2=err;err3=err -CDVM$ parallel(i) on qq(i),reduction (min(err1)) - do i=1,n - if (qq(i) .ne. GR%st(i)) then - err1 = min (i,err1) - endif - enddo - -CDVM$ parallel(i,j) on a1(i,j), reduction (min(err2)) - do i=1,n - do j=1,m - if (a1(i,j) .ne. GR%matr(i,j)) then - err2 = min (i,err2) - endif - enddo - enddo - -CDVM$ parallel(i,j) on c(i,j), reduction (min(err3)) - do i=1,n - do j=1,m - if (c(i,j) .ne.GR%bl(i,j)) then - err3 = min (i,err3) - endif - enddo - enddo - - if ((err1 .ne. err).OR.(err2 .ne.err).OR.(err3.ne.err)) then - print *,'type21 - ***error ' - else - print *,'type21 - complete' - endif - print *,'=== END OF TYPE21 =======================' - - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrderived1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrderived1.fdv deleted file mode 100644 index ba2ae4b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrderived1.fdv +++ /dev/null @@ -1,236 +0,0 @@ - program DISTRDERIVED1 -! Testing DISTRIBUTE and REDISTRIBUTE directives -! INDIRECT, DERIVED distributions (format with range) - print *,'=== START OF distrderived1 ========================' - call distrderived11 - 1 print *,'=== END OF distrderived1 ========================= ' - - end - subroutine distrderived11 - parameter (L=10, ER=100000) - integer:: x_t, y_t, z_t, cur, erri = ER - integer, allocatable :: A(:), B(:), AS(:), BS(:) - integer, allocatable :: ibstart(:), ibend(:), ib(:) - integer, allocatable :: indir_x(:), indir_y(:), indir_z(:) - integer MAP(L*L*L) - character*14:: tname="distrderived11" -!DVM$ TEMPLATE E(L*L*L) -!DVM$ TEMPLATE :: E2(:) -!DVM$ DISTRIBUTE :: E -!DVM$ DISTRIBUTE :: E2 -!DVM$ ALIGN :: A,B -!DVM$ ALIGN :: indir_x, indir_y,indir_z, ibstart, ibend -!DVM$ ALIGN :: ib - - allocate(AS(L*L*L),BS(L*L*L)) - call distrderived11_s(AS,BS) - call fillMap(map,L,1) - allocate(A(L*L*L),B(L*L*L), ibstart(L*L*L), ibend(L*L*L)) - allocate(indir_x(L*L*L), indir_y(L*L*L), indir_z(L*L*L)) -!DVM$ REDISTRIBUTE E(INDIRECT(map)) -!DVM$ REALIGN (I) WITH E(I) :: A,B,indir_x, indir_y,indir_z -!DVM$ REALIGN (I) WITH E(I) :: ibstart, ibend - cur = 1 - do i = 1,L*L*L - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1, L) - indir_x(i) = x_t - indir_y(i) = y_t - indir_z(i) = z_t - ibstart(i) = cur - if (x_t.gt.0) cur = cur + 1 - if (x_t.lt.L-1) cur = cur + 1 - if (y_t.gt.0) cur = cur + 1 - if (y_t.lt.L-1) cur = cur + 1 - if (z_t.gt.0) cur = cur + 1 - if (z_t.lt.L-1) cur = cur + 1 - ibend(i) = cur - 1 - enddo - allocate(ib(cur-1)) -!DVM$ TEMPLATE_CREATE(E2(cur-1)) -!DVM$ REDISTRIBUTE E2(DERIVED((ibstart(i):ibend(i)) with E(@i))) -!DVM$ REALIGN (I) WITH E2(I) :: ib - - cur = 1 - do i = 1,L*L*L - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1, L) - if (x_t.gt.0) then - ib(cur) = i - (L*L) - cur = cur + 1 - endif - if (x_t.lt.L-1) then - ib(cur) = i+(L*L) - cur = cur + 1 - endif - if (y_t.gt.0) then - ib(cur) = i-L - cur = cur + 1 - endif - if (y_t.lt.L-1) then - ib(cur) = i+L - cur = cur + 1 - endif - if (z_t.gt.0) then - ib(cur) = i-1 - cur = cur + 1 - endif - if (z_t.lt.L-1) then - ib(cur) = i+1 - cur = cur + 1 - endif - enddo - -!DVM$ LOCALIZE(ibstart => ib(:)) -!DVM$ LOCALIZE(ibend => ib(:)) -!DVM$ SHADOW_ADD(E((ib(ibstart(i):ibend(i))) with E(@i)) = "nei1") -!DVM$& include_to A -!DVM$ LOCALIZE(ib => A(:)) -!DVM$ REGION -!DVM$ PARALLEL (i) ON B(i) - do i = 1, L*L*L - if (indir_x(i) == 0 .or. indir_x(i) == L-1 .or. - & indir_y(i) == 0 .or. indir_y(i) == L-1 .or. - & indir_z(i) == 0 .or. indir_z(i) == L-1) then - A(i) = 0 - else - A(i) = 4 + indir_x(i) + indir_y(i) + indir_z(i) - endif - enddo -!DVM$ PARALLEL (i) ON B(i), SHADOW_RENEW(A) - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - B(i) = (A(ib(ibstart(i))) + A(ib(ibstart(i)+1)) - & + A(ib(ibstart(i)+2)) + A(ib(ibstart(i)+3)) - & + A(ib(ibstart(i)+4)) + A(ib(ibstart(i)+5)))/ 6.0 - endif - enddo -!DVM$ PARALLEL (i) ON B(i), REDUCTION(min(erri)) - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - if(B(i) .ne. BS(i)) erri = min(erri, ABS(B(i)-BS(i))) - endif - enddo -!DVM$ END REGION -!DVM$ GET_ACTUAL(erri) - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(ibstart,ibend) - deallocate(ib) - deallocate(A,B,indir_x,indir_y,indir_z) - end -!------------------------------------------------------------- - subroutine fillMap(map,L,axis) - integer numproc - integer i,L,axis - integer map(L*L*L) - PROCESSORS_SIZE(axis) = 1 - numproc = PROCESSORS_SIZE(axis) - do i = 1,L*L*L - map(i) = ((i-1) * numproc) / (L*L*L) - enddo - end -!--------------------------------------------------------------- - subroutine distrderived11_s(A,B) - parameter (L=10) - integer x_t, y_t, z_t, cur - integer:: A(L*L*L), B(L*L*L) - integer, allocatable :: ibstart(:), ibend(:), ib(:) - integer, allocatable :: indir_x(:), indir_y(:),indir_z(:) - allocate(ibstart(L*L*L), ibend(L*L*L)) - allocate(indir_x(L*L*L), indir_y(L*L*L), indir_z(L*L*L)) - cur = 1 - do i = 1,L*L*L - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1, L) - indir_x(i) = x_t - indir_y(i) = y_t - indir_z(i) = z_t - ibstart(i) = cur - if (x_t.gt.0) cur = cur + 1 - if (x_t.lt.L-1) cur = cur + 1 - if (y_t.gt.0) cur = cur + 1 - if (y_t.lt.L-1) cur = cur + 1 - if (z_t.gt.0) cur = cur + 1 - if (z_t.lt.L-1) cur = cur + 1 - ibend(i) = cur - 1 - enddo - allocate(ib(cur-1)) - cur = 1 - do i = 1,L*L*L - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1, L) - if (x_t.gt.0) then - ib(cur) = i - (L*L) - cur = cur + 1 - endif - if (x_t.lt.L-1) then - ib(cur) = i+(L*L) - cur = cur + 1 - endif - if (y_t.gt.0) then - ib(cur) = i-L - cur = cur + 1 - endif - if (y_t.lt.L-1) then - ib(cur) = i+L - cur = cur + 1 - endif - if (z_t.gt.0) then - ib(cur) = i-1 - cur = cur + 1 - endif - if (z_t.lt.L-1) then - ib(cur) = i+1 - cur = cur + 1 - endif - enddo - - do i = 1, L*L*L - if (indir_x(i) == 0 .or. indir_x(i) == L-1 .or. - & indir_y(i) == 0 .or. indir_y(i) == L-1 .or. - & indir_z(i) == 0 .or. indir_z(i) == L-1) then - A(i) = 0 - else - A(i) = 4 + indir_x(i) + indir_y(i) + indir_z(i) - endif - enddo - - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - - B(i) = (A(ib(ibstart(i))) + A(ib(ibstart(i)+1)) - & + A(ib(ibstart(i)+2)) + A(ib(ibstart(i)+3)) - & + A(ib(ibstart(i)+4)) + A(ib(ibstart(i)+5)))/ 6.0 - endif - enddo - deallocate(ibstart,ibend) - deallocate(ib) - deallocate(indir_x,indir_y,indir_z) - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect1.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect1.f90 deleted file mode 100644 index 8ba8992..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect1.f90 +++ /dev/null @@ -1,235 +0,0 @@ - program DISTRINDIRECT1 -! Testing DISTRIBUTE and REDISTRIBUTE directives -! INDIRECT distribution - print *,'=== START OF distrindirect1 ========================' - call distrindirect11 - print *,'=== END OF distrindirect1 ========================= ' - end - - subroutine distrindirect11 - parameter (L=10, ER=100000) - integer:: x_t, y_t, z_t, erri = ER - integer A(L*L*L), B(L*L*L), AS(L*L*L), BS(L*L*L) - integer,dimension(:),allocatable:: ib1,ib2,ib3,ib4,ib5,ib6 - integer,dimension(L*L*L):: indir_x, indir_y,indir_z - integer MAP(L*L*L) - character*15:: tname="distrindirect11" - -!DVM$ DISTRIBUTE MAP (BLOCK) -!DVM$ TEMPLATE E(L*L*L) -!DVM$ DISTRIBUTE :: E -!DVM$ ALIGN :: A,B -!DVM$ ALIGN :: indir_x, indir_y,indir_z -!DVM$ ALIGN :: ib1,ib2,ib3,ib4,ib5,ib6 - - call distrindirect11_s(AS,BS) - call fillMap(MAP,L) - allocate( ib1(L*L*L),ib2(L*L*L),ib3(L*L*L) & - & ,ib4(L*L*L),ib5(L*L*L),ib6(L*L*L) ) -!DVM$ REDISTRIBUTE E(INDIRECT(MAP)) -!DVM$ REALIGN (I) WITH E(I) :: A,B -!DVM$ REALIGN (I) WITH E(I) :: indir_x, indir_y,indir_z -!DVM$ REALIGN (I) WITH E(I) :: ib1,ib2,ib3,ib4,ib5,ib6 - do i = 1,L*L*L - - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1 , L) - - indir_x(i) = x_t - indir_y(i) = y_t - indir_z(i) = z_t - - if (x_t.gt.0) then - ib1(i) = i - (L*L) - else - ib1(i) = -1 - endif - if ((x_t+1).lt.L) then - ib2(i) = i+(L*L) - else - ib2(i) = -1 - endif - if (y_t.gt.0) then - ib3(i) = i-L - else - ib3(i) = -1 - endif - if ((y_t+1).lt.L) then - ib4(i) = i+L - else - ib4(i) = -1 - endif - if (z_t.gt.0) then - ib5(i) = i-1 - else - ib5(i) = -1 - endif - if ((z_t+1).lt.L) then - ib6(i) = i+1 - else - ib6(i) = -1 - endif - enddo - -!DVM$ SHADOW_ADD (E((ib1(i)) with E(@i)) = "nei1") include_to A -!DVM$ SHADOW_ADD (E((ib2(i)) with E(@i)) = "nei2") include_to A -!DVM$ SHADOW_ADD (E((ib3(i)) with E(@i)) = "nei3") include_to A -!DVM$ SHADOW_ADD (E((ib4(i)) with E(@i)) = "nei4") include_to A -!DVM$ SHADOW_ADD (E((ib5(i)) with E(@i)) = "nei5") include_to A -!DVM$ SHADOW_ADD (E((ib6(i)) with E(@i)) = "nei6") include_to A - -!DVM$ LOCALIZE(ib1 => A(:)) -!DVM$ LOCALIZE(ib2 => A(:)) -!DVM$ LOCALIZE(ib3 => A(:)) -!DVM$ LOCALIZE(ib4 => A(:)) -!DVM$ LOCALIZE(ib5 => A(:)) -!DVM$ LOCALIZE(ib6 => A(:)) - -!DVM$ REGION -!DVM$ PARALLEL (i) ON B(i) - do i = 1, L*L*L - A(i) = 0 - if (indir_x(i) == 0 .or. indir_x(i) == L-1 .or. & - & indir_y(i) == 0 .or. indir_y(i) == L-1 .or. & - & indir_z(i) == 0 .or. indir_z(i) == L-1) then - - B(i) = 0 - else - B(i) = 4 + indir_x(i) + indir_y(i) + indir_z(i) - endif - enddo -!DVM$ PARALLEL (i) ON B(i), SHADOW_RENEW (A) - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. & - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. & - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - B(i) = (A(ib1(i)) + A(ib2(i)) + A(ib3(i)) + & - & A(ib4(i)) + A(ib5(i)) + A(ib6(i))) / 6.0 - endif - enddo -!DVM$ PARALLEL (i) ON B(i), REDUCTION(min(erri)) - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. & - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. & - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - if(B(i) .ne. BS(i)) erri = min(erri, ABS(B(i)-BS(i))) - endif - enddo - -!DVM$ END REGION - -!DVM$ GET_ACTUAL(erri) - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate(ib1,ib2,ib3,ib4,ib5,ib6) - end subroutine - -!--------------------------------------------------------------- - subroutine fillMap(MAP,L) - integer numproc - integer i,L - real:: x=1 - integer MAP(L*L*L) - intrinsic INT - NUMBER_OF_PROCESSORS() = 1 -!DVM$ INHERIT MAP - numproc = NUMBER_OF_PROCESSORS() -!DVM$ PARALLEL (i) ON MAP(i) - do i=1,L*L*L - call RANDOM_NUMBER(x) - MAP(i) = MOD(INT(x*10), numproc) - enddo - end subroutine - -!--------------------------------------------------------------- - subroutine distrindirect11_s (A,B) - parameter (L=10) - integer:: x_t, y_t, z_t - integer A(L*L*L), B(L*L*L) - integer,dimension(:),allocatable:: ib1,ib2,ib3,ib4,ib5,ib6 - integer,dimension(L*L*L):: indir_x, indir_y,indir_z - - allocate( ib1(L*L*L),ib2(L*L*L),ib3(L*L*L) & - & ,ib4(L*L*L),ib5(L*L*L),ib6(L*L*L) ) - do i = 1,L*L*L - - x_t = (i-1) / (L*L) - y_t = mod((i-1) / L, L) - z_t = mod(i-1 , L) - - indir_x(i) = x_t - indir_y(i) = y_t - indir_z(i) = z_t - - if (x_t.gt.0) then - ib1(i) = i - (L*L) - else - ib1(i) = -1 - endif - if ((x_t+1).lt.L) then - ib2(i) = i+(L*L) - else - ib2(i) = -1 - endif - if (y_t.gt.0) then - ib3(i) = i-L - else - ib3(i) = -1 - endif - if ((y_t+1).lt.L) then - ib4(i) = i+L - else - ib4(i) = -1 - endif - if (z_t.gt.0) then - ib5(i) = i-1 - else - ib5(i) = -1 - endif - if ((z_t+1).lt.L) then - ib6(i) = i+1 - else - ib6(i) = -1 - endif - enddo - - do i = 1, L*L*L - A(i) = 0 - if (indir_x(i) == 0 .or. indir_x(i) == L-1 .or. & - & indir_y(i) == 0 .or. indir_y(i) == L-1 .or. & - & indir_z(i) == 0 .or. indir_z(i) == L-1) then - - B(i) = 0 - else - B(i) = 4 + indir_x(i) + indir_y(i) + indir_z(i) - endif - enddo - - do i = 1, L*L*L - if (indir_x(i) /= 0 .and. indir_x(i) /= L-1 .and. & - & indir_y(i) /= 0 .and. indir_y(i) /= L-1 .and. & - & indir_z(i) /= 0 .and. indir_z(i) /= L-1) then - B(i) = (A(ib1(i)) + A(ib2(i)) + A(ib3(i)) + & - & A(ib4(i)) + A(ib5(i)) + A(ib6(i))) / 6.0 - endif - enddo - deallocate(ib1,ib2,ib3,ib4,ib5,ib6) - end subroutine - -!--------------------------------------------------------------- - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect3.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect3.f90 deleted file mode 100644 index 317b66b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INDIRECT_DERIVED/distrindirect3.f90 +++ /dev/null @@ -1,262 +0,0 @@ - program DISTRINDIRECT3 -! Testing DISTRIBUTE and REDISTRIBUTE directives -! INDIRECT distribution - print *,'=== START OF distrindirect3 ========================' - call distrindirect31 - print *,'=== END OF distrindirect3 ========================= ' - end - - subroutine distrindirect31 - parameter (L=10, ER=100000) - integer:: A(L,L,L), B(L,L,L),AS(L,L,L), BS(L,L,L) - integer,dimension(:,:,:),allocatable:: ib1, ib2, ib3, ib4, ib5, ib6 - integer,dimension(L,L,L):: indir_x, indir_y, indir_z - integer MAP1(L), MAP2(L), MAP3(L) - integer:: erri=ER - character*15:: tname="distrindirect31" -!DVM$ TEMPLATE E(L,L,L) -!DVM$ DISTRIBUTE :: E -!DVM$ ALIGN :: A,B -!DVM$ ALIGN :: indir_x, indir_y,indir_z -!DVM$ ALIGN :: ib1,ib2,ib3,ib4,ib5,ib6 - - call distrindirect31_s (AS, BS) - call fillMap(MAP1,L,1) - call fillMap(MAP2,L,2) - call fillMap(MAP3,L,3) - allocate( ib1(L,L,L), ib2(L,L,L), ib3(L,L,L), & - & ib4(L,L,L), ib5(L,L,L), ib6(L,L,L) ) - -!DVM$ REDISTRIBUTE E(INDIRECT(MAP1),INDIRECT(MAP2),INDIRECT(MAP3)) -!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: A,B -!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: indir_x, indir_y,indir_z -!DVM$ REALIGN (I,J,K) WITH E(I,J,K) :: ib1,ib2,ib3,ib4,ib5,ib6 - do i = 1,L - do j = 1,L - do k = 1,L - - indir_x(i,j,k) = i - indir_y(i,j,k) = j - indir_z(i,j,k) = k - - if (i.gt.1) then - ib1(i,j,k) = i - 1 - else - ib1(i,j,k) = 0 - endif - if (i.lt.L) then - ib2(i,j,k) = i + 1 - else - ib2(i,j,k) = 0 - endif - if (j.gt.1) then - ib3(i,j,k) = j - 1 - else - ib3(i,j,k) = 0 - endif - if (j.lt.L) then - ib4(i,j,k) = j + 1 - else - ib4(i,j,k) = 0 - endif - if (k.gt.1) then - ib5(i,j,k) = k - 1 - else - ib5(i,j,k) = 0 - endif - if (k.lt.L) then - ib6(i,j,k) = k + 1 - else - ib6(i,j,k) = 0 - endif - enddo - enddo - enddo - -!DVM$ SHADOW_ADD (E((ib1(i,j,k)) with E(@i,@j,@k),*,*) = "nei1") include_to A -!DVM$ SHADOW_ADD (E((ib2(i,j,k)) with E(@i,@j,@k),*,*) = "nei2") include_to A -!DVM$ SHADOW_ADD (E(*,(ib3(i,j,k)) with E(@i,@j,@k),*) = "nei3") include_to A -!DVM$ SHADOW_ADD (E(*,(ib4(i,j,k)) with E(@i,@j,@k),*) = "nei4") include_to A -!DVM$ SHADOW_ADD (E(*,*,(ib5(i,j,k)) with E(@i,@j,@k)) = "nei5") include_to A -!DVM$ SHADOW_ADD (E(*,*,(ib6(i,j,k)) with E(@i,@j,@k)) = "nei6") include_to A - -!DVM$ LOCALIZE(ib1 => A(:,*,*)) -!DVM$ LOCALIZE(ib2 => A(:,*,*)) -!DVM$ LOCALIZE(ib3 => A(*,:,*)) -!DVM$ LOCALIZE(ib4 => A(*,:,*)) -!DVM$ LOCALIZE(ib5 => A(*,*,:)) -!DVM$ LOCALIZE(ib6 => A(*,*,:)) - -!DVM$ REGION - -!DVM$ PARALLEL (k,j,i) ON B(i,j,k) - do k = 1,L - do j = 1,L - do i = 1,L - - A(i,j,k) = 0 - - if (indir_x(i,j,k) == 1 .or. indir_x(i,j,k) == L .or. & - & indir_y(i,j,k) == 1 .or. indir_y(i,j,k) == L .or. & - & indir_z(i,j,k) == 1 .or. indir_z(i,j,k) == L) then - B(i,j,k) = 0 - else - B(i,j,k) = 1 + indir_x(i,j,k) + indir_y(i,j,k) + indir_z(i,j,k) - endif - - enddo - enddo - enddo - -!DVM$ PARALLEL (k,j,i) ON B(i,j,k), SHADOW_RENEW (A) - do k = 2,L-1 - do j = 2,L-1 - do i = 2,L-1 - if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. & - & indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. & - & indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then - - B(i,j,k) = (A(ib1(i,j,k),j,k) + A(ib2(i,j,k),j,k) + & - & A(i,ib3(i,j,k),k) + A(i,ib4(i,j,k),k) + A(i,j,ib5(i,j,k)) + & - & A(i,j,ib6(i,j,k))) / 6.0 - endif - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i) ON B(i,j,k), REDUCTION(min(erri)) - do k = 2,L-1 - do j = 2,L-1 - do i = 2,L-1 - if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. & - & indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. & - & indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then - - if(B(i,j,k) .ne. BS(i,j,k)) erri = min(erri, ABS(B(i,j,k)-BS(i,j,k))) - endif - enddo - enddo - enddo - -!DVM$ END REGION -!DVM$ GET_ACTUAL(erri) - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (ib1,ib2,ib3,ib4,ib5,ib6) - end subroutine - -!--------------------------------------------------------------- - subroutine fillMap(MAP,L,dim) - integer numproc - integer i,L,dim - real x - integer MAP(L) - PROCESSORS_SIZE(i) = 1 - numproc = PROCESSORS_SIZE(dim) ! dvmh_get_num_procs(1) - do i=1,L - call RANDOM_NUMBER(x) - MAP(i) = MOD(INT(x*10), numproc) !rand() - enddo - end subroutine -!--------------------------------------------------------------- - subroutine distrindirect31_s (A,B) - parameter (L=10) - integer:: A(L,L,L), B(L,L,L) - integer,dimension(:,:,:),allocatable:: ib1, ib2, ib3, ib4, ib5, ib6 - integer,dimension(L,L,L):: indir_x, indir_y, indir_z - allocate( ib1(L,L,L), ib2(L,L,L), ib3(L,L,L), & - & ib4(L,L,L), ib5(L,L,L), ib6(L,L,L) ) - - do i = 1,L - do j = 1,L - do k = 1,L - - indir_x(i,j,k) = i - indir_y(i,j,k) = j - indir_z(i,j,k) = k - - if (i.gt.1) then - ib1(i,j,k) = i - 1 - else - ib1(i,j,k) = 0 - endif - if (i.lt.L) then - ib2(i,j,k) = i + 1 - else - ib2(i,j,k) = 0 - endif - if (j.gt.1) then - ib3(i,j,k) = j - 1 - else - ib3(i,j,k) = 0 - endif - if (j.lt.L) then - ib4(i,j,k) = j + 1 - else - ib4(i,j,k) = 0 - endif - if (k.gt.1) then - ib5(i,j,k) = k - 1 - else - ib5(i,j,k) = 0 - endif - if (k.lt.L) then - ib6(i,j,k) = k + 1 - else - ib6(i,j,k) = 0 - endif - enddo - enddo - enddo - - do k = 1,L - do j = 1,L - do i = 1,L - - A(i,j,k) = 0 - - if (indir_x(i,j,k) == 1 .or. indir_x(i,j,k) == L .or. & - & indir_y(i,j,k) == 1 .or. indir_y(i,j,k) == L .or. & - & indir_z(i,j,k) == 1 .or. indir_z(i,j,k) == L) then - B(i,j,k) = 0 - else - B(i,j,k) = 1 + indir_x(i,j,k) + indir_y(i,j,k) + indir_z(i,j,k) - endif - - enddo - enddo - enddo - - do k = 2,L-1 - do j = 2,L-1 - do i = 2,L-1 - if (indir_x(i,j,k) /= 1 .and. indir_x(i,j,k) /= L .and. & - & indir_y(i,j,k) /= 1 .and. indir_y(i,j,k) /= L .and. & - & indir_z(i,j,k) /= 1 .and. indir_z(i,j,k) /= L) then - - B(i,j,k) = (A(ib1(i,j,k),j,k) + A(ib2(i,j,k),j,k) + & - & A(i,ib3(i,j,k),k) + A(i,ib4(i,j,k),k) + A(i,j,ib5(i,j,k)) + & - & A(i,j,ib6(i,j,k))) / 6.0 - endif - enddo - enddo - enddo - - deallocate (ib1,ib2,ib3,ib4,ib5,ib6) - end subroutine - - - -!--------------------------------------------------------------- - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal31.fdv deleted file mode 100644 index 9a6b38e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal31.fdv +++ /dev/null @@ -1,1088 +0,0 @@ - program INOUTLOCAL31 - -c TESTING OF INOULOCAL CLAUSE'. - - print *,'===START OF INOUTLOCAL31========================' -C -------------------------------------------------- - call inoutlocal3101 - call inoutlocal3102 - call inoutlocal3103 - call inoutlocal3104 - call inoutlocal3105 - call inoutlocal3106 - call inoutlocal3107 - call inoutlocal3108 - call inoutlocal3109 - call inoutlocal3110 - call inoutlocal3111 - call inoutlocal3112 - call inoutlocal3113 - call inoutlocal3114 - call inoutlocal3115 - call inoutlocal3116 - -C -------------------------------------------------- -C - print *,'=== END OF inoutlocal31 ========================= ' - end -C ---------------------------------------------IN3101 - subroutine INOUTLOCAL3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3101' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - end -c------------------------------------------------IN3102 - subroutine INOUTLOCAL3102 - integer, parameter :: N = 16,M=8,K=8,NL=1100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3102' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL),LOCAL(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3103 - subroutine INOUTLOCAL3103 - integer, parameter :: N = 16,M=8,K=8,NL=1200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3103' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3104 - subroutine INOUTLOCAL3104 - integer, parameter :: N = 16,M=8,K=8,NL=1300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3104' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$*LOCAL(B(1,1,1) -!dvm$*,B(N,M,K),B(1,M,K),B(N,1,K),B(N,M,1), -!dvm$*B(1,1,K),B(N,1,1),B(1,M,1)) -!dvm$*,OUT(B(2:N-1,2:M-1,3:K-1),B(2:N-1,2:M-1,2)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3105 - subroutine INOUTLOCAL3105 - integer, parameter :: N = 16,M=8,K=8,NL=1600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3105' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3106 - subroutine INOUTLOCAL3106 - integer, parameter :: N = 16,M=8,K=8,NL=1700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3106' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3107 - subroutine INOUTLOCAL3107 - integer, parameter :: N = 16,M=8,K=8,NL=1800 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3107' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3108 - subroutine INOUTLOCAL3108 - integer, parameter :: N = 16,M=8,K=8,NL=1900 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3108' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INLOCAL(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3109 - subroutine INOUTLOCAL3109 - integer, parameter :: N = 16,M=8,K=8,NL=2000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3109' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INOUT (A(2:N-1,2:M-1,2:K-1),B(2:N-1,2:M-1,2:K-1)) -! dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3110 - subroutine INOUTLOCAL3110 - integer, parameter :: N = 16,M=8,K=8,NL=2100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3110' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),IN(A) -!dvm$*,IN(A(2,2,2)),IN(A(2,M-1,K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)),OUT(B(2,M-1,3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3111 - subroutine INOUTLOCAL3111 - integer, parameter :: N = 16,M=8,K=8,NL=2200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3111' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3112 - subroutine INOUTLOCAL3112 - integer, parameter :: N = 16,M=8,K=8,NL=2300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3112' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -! dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3113 - subroutine INOUTLOCAL3113 - integer, parameter :: N = 16,M=8,K=8,NL=2400 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3113' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3114 - subroutine INOUTLOCAL3114 - integer, parameter :: N = 16,M=8,K=8,NL=2500 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3114' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3115 - subroutine INOUTLOCAL3115 - integer, parameter :: N = 16,M=8,K=8,NL=2600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3115' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ get_actual(B) - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3116 - subroutine INOUTLOCAL3116 - integer, parameter :: N = 16,M=8,K=8,NL=2700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3116' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:2,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,2 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*, B(2:2,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:2,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-1 - do j=2,2 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*,B(2:N-1,2:2,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=3,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - - - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal32.fdv deleted file mode 100644 index 7355522..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal32.fdv +++ /dev/null @@ -1,1088 +0,0 @@ - program INOUTLOCAL32 - -c TESTING OF INOULOCAL CLAUSE'. - - print *,'===START OF INOUTLOCAL32========================' -C -------------------------------------------------- - call inoutlocal3201 - call inoutlocal3202 - call inoutlocal3203 - call inoutlocal3204 - call inoutlocal3205 - call inoutlocal3206 - call inoutlocal3207 - call inoutlocal3208 - call inoutlocal3209 - call inoutlocal3210 - call inoutlocal3211 - call inoutlocal3212 - call inoutlocal3213 - call inoutlocal3214 - call inoutlocal3215 - call inoutlocal3216 - -C -------------------------------------------------- -C - print *,'=== END OF INOUTLOCAL32 ========================= ' - end -C ---------------------------------------------IN3201 - subroutine INOUTLOCAL3201 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3201' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - end -c------------------------------------------------IN3202 - subroutine INOUTLOCAL3202 - integer, parameter :: N = 16,M=8,K=8,NL=1100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3202' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL),LOCAL(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3203 - subroutine INOUTLOCAL3203 - integer, parameter :: N = 16,M=8,K=8,NL=1200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3203' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3204 - subroutine INOUTLOCAL3204 - integer, parameter :: N = 16,M=8,K=8,NL=1300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3204' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$*LOCAL(B(1,1,1) -!dvm$*,B(N,M,K),B(1,M,K),B(N,1,K),B(N,M,1), -!dvm$*B(1,1,K),B(N,1,1),B(1,M,1)) -!dvm$*,OUT(B(2:N-1,2:M-1,3:K-1),B(2:N-1,2:M-1,2)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3205 - subroutine INOUTLOCAL3205 - integer, parameter :: N = 16,M=8,K=8,NL=1600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3205' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3206 - subroutine INOUTLOCAL3206 - integer, parameter :: N = 16,M=8,K=8,NL=1700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3206' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3207 - subroutine INOUTLOCAL3207 - integer, parameter :: N = 16,M=8,K=8,NL=1800 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3207' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3208 - subroutine INOUTLOCAL3208 - integer, parameter :: N = 16,M=8,K=8,NL=1900 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3208' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INLOCAL(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3209 - subroutine INOUTLOCAL3209 - integer, parameter :: N = 16,M=8,K=8,NL=2000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3209' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INOUT (A(2:N-1,2:M-1,2:K-1),B(2:N-1,2:M-1,2:K-1)) -! dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3210 - subroutine INOUTLOCAL3210 - integer, parameter :: N = 16,M=8,K=8,NL=2100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3210' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),IN(A) -!dvm$*,IN(A(2,2,2)),IN(A(2,M-1,K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)),OUT(B(2,M-1,3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3211 - subroutine INOUTLOCAL3211 - integer, parameter :: N = 16,M=8,K=8,NL=2200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3211' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3212 - subroutine INOUTLOCAL3212 - integer, parameter :: N = 16,M=8,K=8,NL=2300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3212' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -! dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3213 - subroutine INOUTLOCAL3213 - integer, parameter :: N = 16,M=8,K=8,NL=2400 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3213' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3214 - subroutine INOUTLOCAL3214 - integer, parameter :: N = 16,M=8,K=8,NL=2500 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3214' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3215 - subroutine INOUTLOCAL3215 - integer, parameter :: N = 16,M=8,K=8,NL=2600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3215' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ get_actual(B) - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3216 - subroutine INOUTLOCAL3216 - integer, parameter :: N = 16,M=8,K=8,NL=2700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3216' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:2,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,2 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*, B(2:2,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:2,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-1 - do j=2,2 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*,B(2:N-1,2:2,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=3,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - - - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal33.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal33.fdv deleted file mode 100644 index 554708f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/INOUTLOCAL/inoutlocal33.fdv +++ /dev/null @@ -1,1088 +0,0 @@ - program INOUTLOCAL33 - -c TESTING OF INOULOCAL CLAUSE'. - - print *,'===START OF INOUTLOCAL33========================' -C -------------------------------------------------- - call inoutlocal3301 - call inoutlocal3302 - call inoutlocal3303 - call inoutlocal3304 - call inoutlocal3305 - call inoutlocal3306 - call inoutlocal3307 - call inoutlocal3308 - call inoutlocal3309 - call inoutlocal3310 - call inoutlocal3311 - call inoutlocal3312 - call inoutlocal3313 - call inoutlocal3314 - call inoutlocal3315 - call inoutlocal3316 - -C -------------------------------------------------- -C - print *,'=== END OF INOUTLOCAL33 ========================= ' - end -C ---------------------------------------------IN3301 - subroutine INOUTLOCAL3301 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3301' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - end -c------------------------------------------------IN3302 - subroutine INOUTLOCAL3302 - integer, parameter :: N = 16,M=8,K=8,NL=1100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3302' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL),LOCAL(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3303 - subroutine INOUTLOCAL3303 - integer, parameter :: N = 16,M=8,K=8,NL=1200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3303' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -! dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region OUT(B(2:N-1,2:M-1,2:K-1)),IN(NL) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3304 - subroutine INOUTLOCAL3304 - integer, parameter :: N = 16,M=8,K=8,NL=1300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3304' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$*LOCAL(B(1,1,1) -!dvm$*,B(N,M,K),B(1,M,K),B(N,1,K),B(N,M,1), -!dvm$*B(1,1,K),B(N,1,1),B(1,M,1)) -!dvm$*,OUT(B(2:N-1,2:M-1,3:K-1),B(2:N-1,2:M-1,2)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3305 - subroutine INOUTLOCAL3305 - integer, parameter :: N = 16,M=8,K=8,NL=1600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3305' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3306 - subroutine INOUTLOCAL3306 - integer, parameter :: N = 16,M=8,K=8,NL=1700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3306' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3307 - subroutine INOUTLOCAL3307 - integer, parameter :: N = 16,M=8,K=8,NL=1800 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3307' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3308 - subroutine INOUTLOCAL3308 - integer, parameter :: N = 16,M=8,K=8,NL=1900 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3308' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INLOCAL(A(2:N-1,2:M-1,2:K-1)),OUT (B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3309 - subroutine INOUTLOCAL3309 - integer, parameter :: N = 16,M=8,K=8,NL=2000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3309' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region INOUT (A(2:N-1,2:M-1,2:K-1),B(2:N-1,2:M-1,2:K-1)) -! dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3310 - subroutine INOUTLOCAL3310 - integer, parameter :: N = 16,M=8,K=8,NL=2100 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3310' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)),IN(A) -!dvm$*,IN(A(2,2,2)),IN(A(2,M-1,K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)),OUT(B(2,M-1,3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3311 - subroutine INOUTLOCAL3311 - integer, parameter :: N = 16,M=8,K=8,NL=2200 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3311' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3312 - subroutine INOUTLOCAL3312 - integer, parameter :: N = 16,M=8,K=8,NL=2300 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3312' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -! dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------IN3313 - subroutine INOUTLOCAL3313 - integer, parameter :: N = 16,M=8,K=8,NL=2400 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3313' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ get_actual(B) -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3314 - subroutine INOUTLOCAL3314 - integer, parameter :: N = 16,M=8,K=8,NL=2500 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3314' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(3:N-1,2:M-2,4:K-1)),OUT(B(2,M-1,2:3), -!dvm$*B(2,2:M-2,2:K-1),B(2,2:M-2,2:K-1), -!dvm$*B(2:N-1,2:M-2,2:K-1),B(2:N-1,2:M-1,4:K-1), -!dvm$*B(2:N-1,2:M-1,2:3)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------IN3315 - subroutine INOUTLOCAL3315 - integer, parameter :: N = 16,M=8,K=8,NL=2600 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3315' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ get_actual(B) - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------IN3316 - subroutine INOUTLOCAL3316 - integer, parameter :: N = 16,M=8,K=8,NL=2700 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*6 tname - -!dvm$ distribute B(*,*,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='IN3316' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ actual(nloopi,nloopj,nloopii) -Cdvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:2,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,2 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*, B(2:2,2:M-1,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:2,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-1 - do j=2,2 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -!dvm$ region IN (A(2:N-1,2:M-1,2:K-1) -!dvm$*,B(2:N-1,2:2,2:K-1)) -!dvm$*,OUT(B(2:N-1,2:M-1,2:K-1)) -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=3,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo -cdvm$ end region -cdvm$ region -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - if (B(i,j,ii).ne.c(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -cdvm$ end region - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - - - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel1.fdv deleted file mode 100644 index f4570c9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel1.fdv +++ /dev/null @@ -1,305 +0,0 @@ - program PARALLEL1 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallel1========================' -C -------------------------------------------------- -c 11 arrA1[BLOCK] PARALLEL ON arrA[i+4] normal - call parallel11 -C -------------------------------------------------- -c 12 arrA1[BLOCK] PARALLEL ON arrA[-i+8] reverse -c call parallel12 -C -------------------------------------------------- -c 13 arrA1[BLOCK] PARALLEL ON arrA[2*i+8] stretch - call parallel13 -C -------------------------------------------------- -c 131 arrA1[BLOCK] PARALLEL ON arrA[2*i+1] small array - call parallel13 -C -------------------------------------------------- -c 14 arrA1[BLOCK] PARALLEL ON arrA[] - call parallel14 -C -------------------------------------------------- -c 15 arrA1[BLOCK] PARALLEL ON arrA[2] - call parallel15 -C -------------------------------------------------- - print *,'=== END OF parallel1 ========================= ' - end - -C ----------------------------------------------------parallel11 -c 11 arrA1[BLOCK] PARALLEL ON arrA[i+4] normal - subroutine parallel11 - integer, parameter :: AN1=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=4 - character*9 tname - integer, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='paral11' - allocate (A1(AN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(k1i * i + li), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1,((AN1-li)/k1i) - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ----------------------------------------------------parallel12 -c 12 arrA1[BLOCK] PARALLEL ON arrA[-i+8] reverse - subroutine parallel12 - integer, parameter :: AN1=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[k1i * i + li] - integer, parameter :: k1i=-1,k2i=0,li=9 - character*9 tname - integer, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='paral12' - allocate (A1(AN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(k1i * i + li), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1,AN1 - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ----------------------------------------------------parallel13 -c 13 arrA1[BLOCK] PARALLEL ON arrA[2*i+8] stretch - subroutine parallel13 - integer, parameter :: AN1=20,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=8 - character*9 tname - integer, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='paral13' - allocate (A1(AN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(k1i * i + li), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1,((AN1-li)/k1i) - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ----------------------------------------------------parallel131 -c 131 arrA1[BLOCK] PARALLEL ON arrA[2*i+1] small array - subroutine parallel131 - integer, parameter :: AN1=5,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[k1i * i + li] - integer, parameter :: k1i=2,k2i=0,li=1 - character*9 tname - integer, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='paral131' - allocate (A1(AN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(k1i * i + li), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1,((AN1-li)/k1i) - ia=k1i * i + li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ----------------------------------------------------parallel14 -c 14 arrA1[BLOCK] PARALLEL ON arrA[] - subroutine parallel14 - integer, parameter :: AN1=20,BN1=10,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[*] - integer, parameter :: k1i=0,k2i=0,li=0 - character*9 tname - integer, allocatable :: A1(:),B1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) -!dvm$ distribute B1(*) - - tname='paral14' - allocate (A1(AN1),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1,B1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -!dvm$ parallel (i) on A1(*), reduction( min( erri ) ) - do i=1,BN1 - if (B1(i) .eq.(i)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1,B1) - - end -C ----------------------------------------------------parallel15 -c 15 arrA1[BLOCK] PARALLEL ON arrA[2] - subroutine parallel15 - integer, parameter :: AN1=20,NL=1000,ER=10000 -c parameters for PARALLEL arrA1[li] - integer, parameter :: k1i=0,k2i=0,li=2 - character*9 tname - integer, allocatable :: A1(:) - integer erri,i - -!dvm$ distribute A1(BLOCK) - - tname='paral15' - allocate (A1(AN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A1) -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) =i - enddo - -!dvm$ parallel (i) on A1(li), reduction( min( erri ) ) -!dvm$*, private(ia) - do i=1,AN1 - ia=li - if (A1(ia) .eq.(ia)) then - else - erri = min(erri,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A1) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel2.fdv deleted file mode 100644 index 7371ea0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel2.fdv +++ /dev/null @@ -1,227 +0,0 @@ - program PARALLEL2 - -c TESTING parallel CLAUSE . - - print *, '====START OF parallel2=============' -C -------------------------------------------------- -c 21 PARALLEL ON arrA[i][2*j] stretching along j - call parallel21 -C -------------------------------------------------- -c 22 PARALLEL ON arrA[i+4][j] shift along i - call parallel22 -C -------------------------------------------------- -c 23 PARALLEL ON arrA[-i+8][j] reverse on i -c call parallel23 -C -------------------------------------------------- -c 24 PARALLEL ON arrA[i+4][j+4] shift along i and j - call parallel24 -C -------------------------------------------------- - print *, '==== END OF parallel2 =============' - end - -C ----------------------------------------------------parallel21 -c 21 PARALLEL ON arrA[i][2*j] stretching along j - subroutine parallel21 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=2,lj=0 - character*9 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,BLOCK) - - tname='paral21' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction (min (erri)) -!dvm$*, private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel22 -c 22 PARALLEL ON arrA[i+4][j] shift along i - subroutine parallel22 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=0 - character*9 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,BLOCK) - - tname='paral22' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri )) -!dvm$*, private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel23 -c 23 PARALLEL ON arrA[-i+8][j] reverse on i - subroutine parallel23 - integer, parameter :: AN1=7,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=-1,k2i=0,li=8,k1j=0,k2j=1,lj=0 - character*9 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,BLOCK) - - tname='paral23' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$*, private(ia,ja) - do i=1,AN1 - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel24 -c 24 PARALLEL ON arrA[i+4][j+4] shift along i and j - subroutine parallel24 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=4 - character*9 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,BLOCK) - - tname='paral24' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$*, private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel3.fdv deleted file mode 100644 index a98de5e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel3.fdv +++ /dev/null @@ -1,456 +0,0 @@ - program PARALLEL3 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallel3========================' -C ------------------------------------------------- -c 31 PARALLEL ON arrA[i][2* j][k] stretching - call paral31 -C ------------------------------------------------- -c 32 PARALLEL ON arrA[i+2][ j][k] shift - call paral32 -C ------------------------------------------------- -c 33 PARALLEL ON arrA[i][ j][-k+8] reverse -c call paral33 -C ------------------------------------------------- -c 34 PARALLEL ON arrA[i][ j][2] -c compression !! - call paral34 -C ------------------------------------------------- -c 35 PARALLEL ON arrA[][ j][ k] -c replication - call paral35 -C ------------------------------------------------- -c 36 PARALLEL ON arrA[1][i][3] -c compression and replication - call paral36 -C ------------------------------------------------- - print *,'=== END OF parallel3 ========================' -C - end - -C ----------------------------------------------------paral31 -c 31 arrA4[BLOCK][BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k] stretching - - subroutine paral31 - integer, parameter :: AN1=6,AN2=6,AN3=4 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) - - tname='paral31' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$*reduction (min (erri)) -!dvm$*, private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs = 0 - - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral32 -c 32 PARALLEL ON arrA[i+2][ j][k] shift - - subroutine paral32 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) - - tname='paral32' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$*, private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs = 0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral33 -c 33 PARALLEL ON arrA[i][ j][-k+8] reverse - - subroutine paral33 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,ln=6 - character*9 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) - - tname='paral33' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$*, private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3)) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs = 0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral34 -c 34 PARALLEL ON arrA[i][ j][2] - - subroutine paral34 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=2 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,*) WITH A3(k1i*i+li,k2j*j+lj,ln) - - tname='paral34' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j) on A3(k1i*i+li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)), private(n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs = 0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral35 -c 35 PARALLEL ON arrA[][ j][ k] - - subroutine paral35 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=6,BN2=6,BN3=6 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[*][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(*,j,n) WITH A3(*,k2j*j+lj,k3n*n+ln) - - tname='paral35' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ region out(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A3,B3) - - do i=1,BN1 -!dvm$ parallel (j,n) on A3(*,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo - - s=0 - cs = 0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral36 -c 36 PARALLEL ON arrA[1][i][3] - - subroutine paral36 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: PN=2,NL=10000,ER=100000 - -c parameters for PARALLEL ON arrA[li][k2j*j+lj][ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=1 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=3 - character*9 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(li,k2j*j+lj,ln) - - tname='paral36' - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs = 0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel4.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel4.fdv deleted file mode 100644 index 8c8db72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/parallel4.fdv +++ /dev/null @@ -1,500 +0,0 @@ - program PARALLEL4 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallel4======================' -C ------------------------------------------------- -c 41 PARALLEL ON arrA[i][2* j][k][3*l] stretching - call paral41 -C ------------------------------------------------- -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - call paral42 -C ------------------------------------------------- -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse -c call paral43 -C ------------------------------------------------- -c 44 PARALLEL ON arrA[i][ j][2][ l] -c compression !! - call paral44 -C ------------------------------------------------- -c 45 PARALLEL ON arrA[i][ j][ ][ k] -c replication - call paral45 -C ------------------------------------------------- -c 46 PARALLEL ON arrA[i][ j][ ][3] -c compression and replication - call paral46 -C ------------------------------------------------- -C - print *,'=== END OF parallel4 ====================== ' - end - -C ----------------------------------------------------paral41 -c 41 arrA4[BLOCK][BLOCK] [BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k][3*l] stretching - - subroutine paral41 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=3,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='paral41' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral42 -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - - subroutine paral42 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 - character*9 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='paral42' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral43 -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse - - subroutine paral43 - integer, parameter :: AN1=6,AN2=6,AN3=7,AN4=7 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,k4n=0,ln=8 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=-1,lm=8 - character*9 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='paral42' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral44 -c 44 PARALLEL ON arrA[i][ j][2][ l] - - subroutine paral44 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=2 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - - tname='paral44' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral45 -c 45 PARALLEL ON arrA[i][ j][ ][ k] - - subroutine paral45 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm) - - tname='paral45' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral46 -c 46 PARALLEL ON arrA[i][ j][ ][3] - - subroutine paral46 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][*][lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=0,lm=3 - character*9 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,lm) - - tname='paral46' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus12.fdv deleted file mode 100644 index 882a882..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus12.fdv +++ /dev/null @@ -1,439 +0,0 @@ - program PARALLELPLUS2 - -c TESTING parallel CLAUSE . -c arrA2[*][ BLOCK] -c or arrA2[ BLOCK][*] - - print *,'===START OF paralplus12======================' -C -------------------------------------------------- -c 21 PARALLEL ON arrA[i][2*j] stretching along j - call parallel21 -C -------------------------------------------------- -c 22 PARALLEL ON arrA[i+4][j] shift along i - call parallel22 -C -------------------------------------------------- -c 23 PARALLEL ON arrA[-i+8][j] reverse on i -c call parallel23 -C -------------------------------------------------- -c 24 PARALLEL ON arrA[i+4][j+4] shift along i and j - call parallel24 -C -------------------------------------------------- -c 25 PARALLEL ON arrA[i][2*j] stretching along j - call parallel21 -C -------------------------------------------------- -c 26 PARALLEL ON arrA[i+4][j] shift along i - call parallel22 -C -------------------------------------------------- -c 27 PARALLEL ON arrA[-i+8][j] reverse on i -c call parallel23 -C -------------------------------------------------- -c 28 PARALLEL ON arrA[i+4][j+4] shift along i and j - call parallel24 -C -------------------------------------------------- - print *,'=== END OF paralplus12======================== ' - end - -C ----------------------------------------------------parallel21 -c 21 PARALLEL ON arrA[i][2*j] stretching along j - subroutine parallel21 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=2,lj=0 - - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(*,BLOCK) - - tname='paral+1221' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction (min (erri)) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel22 -c 22 PARALLEL ON arrA[i+4][j] shift along i - subroutine parallel22 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=0 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(*,BLOCK) - - tname='paral+1222' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri )) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel23 -c 23 PARALLEL ON arrA[-i+8][j] reverse on i - subroutine parallel23 - integer, parameter :: AN1=7,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=-1,k2i=0,li=8,k1j=0,k2j=1,lj=0 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(*,BLOCK) - - tname='paral+1223' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$* ,private(ia,ja) - do i=1,AN1 - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel24 -c 24 PARALLEL ON arrA[i+4][j+4] shift along i and j - subroutine parallel24 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=4 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(*,BLOCK) - - tname='paral+1224' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel25 -c 25 PARALLEL ON arrA[i][2*j] stretching along j - subroutine parallel25 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=2,lj=0 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,*) - - tname='paral+1225' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction (min (erri)) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel26 -c 26 PARALLEL ON arrA[i+4][j] shift along i - subroutine parallel26 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=0 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,*) - - tname='paral+1226' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri )) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel27 -c 27 PARALLEL ON arrA[-i+8][j] reverse on i - subroutine parallel27 - integer, parameter :: AN1=7,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=-1,k2i=0,li=8,k1j=0,k2j=1,lj=0 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,*) - - tname='paral+1227' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$* ,private(ia,ja) - do i=1,AN1 - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - - end -C ----------------------------------------------------parallel28 -c 28 PARALLEL ON arrA[i+4][j+4] shift along i and j - subroutine parallel28 - integer, parameter :: AN1=8,AN2=8,NL=1000,ER=10000 -c parameters for PARALLEL arrA2[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=4 - character*11 tname - integer, allocatable :: A2(:,:) - integer erri,i,j,n,m,ia,ja,na,ma - -!dvm$ distribute A2(BLOCK,*) - - tname='paral+1228' - allocate (A2(AN1,AN2)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A2) -!dvm$ parallel (i,j) on A2(i,j) - do i=1,AN1 - do j=1,AN2 - A2(i,j) =i*NL+j - enddo - enddo - -!dvm$ parallel (i,j) on A2(k1i*i+li,k2j*j+lj), reduction( min( erri ) ) -!dvm$* ,private(ia,ja) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - ia=k1i * i + li - ja=k2j * j + lj - if (A2(ia,ja) .eq.(ia*NL+ja)) then - else - erri = min(erri,ia*NL+ja) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A2) - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*11 name - print *,name,' - complete' - end - subroutine ansno(name) - character*11 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus14.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus14.fdv deleted file mode 100644 index 3b9dc2b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus14.fdv +++ /dev/null @@ -1,503 +0,0 @@ - program PARALLEL14 - -c TESTING parallel CLAUSE . -c arrA4[BLOCK][*][*][*] or arrA4[*][*][*][BLOCK] etc. - - print *,'===START OF paralplus14====================' -C ------------------------------------------------- -c 41 PARALLEL ON arrA[i][2* j][k][3*l] stretching - call paral41 -C ------------------------------------------------- -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - call paral42 -C ------------------------------------------------- -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse -c call paral43 -C ------------------------------------------------- -c 44 PARALLEL ON arrA[i][ j][2][ l] -c compression !! - call paral44 -C ------------------------------------------------- -c 45 PARALLEL ON arrA[i][ j][ ][ k] -c replication - call paral45 -C ------------------------------------------------- -c 46 PARALLEL ON arrA[i][ j][ ][3] -c compression and replication - call paral46 -C ------------------------------------------------- -C - print *,'=== END OF paralplus14======================' - end - -C ----------------------------------------------------paral41 -c 41 arrA4[*][*] [BLOCK] [*] -c PARALLEL ON arrA[i][2* j][k][3*l] stretching - - subroutine paral41 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=3,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,*,*) - - tname='paral+1441' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral42 -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - - subroutine paral42 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,*,*) - - tname='paral+1442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral43 -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse - - subroutine paral43 - integer, parameter :: AN1=6,AN2=6,AN3=7,AN4=7 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,k4n=0,ln=8 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=-1,lm=8 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,*,*) - - tname='paral+1442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER -c call strparal42 - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* ,private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral44 -c 44 PARALLEL ON arrA[i][ j][2][ l] - - subroutine paral44 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=2 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,*,*,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - - tname='paral+1444' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral45 -c 45 PARALLEL ON arrA[i][ j][ ][ k] - - subroutine paral45 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,*,BLOCK,*) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm) - - tname='paral+1445' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral46 -c 46 PARALLEL ON arrA[i][ j][ ][3] - - subroutine paral46 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: PN=2,NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][*][lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=0,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,*,BLOCK,*) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,lm) - - tname='paral+1446' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*11 name - print *,name,' - complete' - end - subroutine ansno(name) - character*11 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus23.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus23.fdv deleted file mode 100644 index 90aa08d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus23.fdv +++ /dev/null @@ -1,892 +0,0 @@ - program PARALLELPLUS23 -c TESTING parallel CLAUSE . -c arrA3[*][ BLOCK][BLOCK] -c or arrA3[ BLOCK][*][BLOCK] - - print *, '===START OF paralplus23=================' -C ------------------------------------------------- -c 31 PARALLEL ON arrA[i][2* j][k] stretching - call paral31 -C ------------------------------------------------- -c 32 PARALLEL ON arrA[i+2][ j][k] shift - call paral32 -C ------------------------------------------------- -c 33 PARALLEL ON arrA[i][ j][-k+8] reverse -c call paral33 -C ------------------------------------------------- -c 34 PARALLEL ON arrA[i][ j][2] -c compression !! - call paral34 -C ------------------------------------------------- -c 35 PARALLEL ON arrA[][ j][ k] -c replication - call paral35 -C ------------------------------------------------- -c 36 PARALLEL ON arrA[1][i][3] -c compression and replication - call paral36 -C ------------------------------------------------- -c 37 PARALLEL ON arrA[i][2* j][k] stretching - call paral37 -C ------------------------------------------------- -c 38 PARALLEL ON arrA[i+2][ j][k] shift - call paral38 -C ------------------------------------------------- -c 39 PARALLEL ON arrA[i][ j][-k+8] reverse -c call paral39 -C ------------------------------------------------- -c 310 PARALLEL ON arrA[i][ j][2] -c compression !! - call paral310 -C ------------------------------------------------- -c 311 PARALLEL ON arrA[][ j][ k] -c replication - call paral311 -C ------------------------------------------------- -c 312 PARALLEL ON arrA[1][i][3] -c compression and replication - call paral312 -C ------------------------------------------------- - print *, '=== END OF paralplus23=================' -C - end - -C ----------------------------------------------------paral31 -c 31 arrA4[*][BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k] stretching - - subroutine paral31 - integer, parameter :: AN1=6,AN2=6,AN3=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue -!dvm$ distribute A3(*,BLOCK,BLOCK) - - tname='paral+2331' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral32 -c 32 PARALLEL ON arrA[i+2][ j][k] shift - - subroutine paral32 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(*,BLOCK,BLOCK) - - tname='paral+2332' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral33 -c 33 PARALLEL ON arrA[i][ j][-k+8] reverse - - subroutine paral33 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,ln=6 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(*,BLOCK,BLOCK) - - tname='paral+2333' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral34 -c 34 PARALLEL ON arrA[i][ j][2] - - subroutine paral34 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=2 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(*,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,ln) - - tname='paral+2334' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral35 -c 35 PARALLEL ON arrA[][ j][ k] - - subroutine paral35 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=6,BN2=6,BN3=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[*][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(*,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(*,k2j*j+lj,k3n*n+ln) - - tname='paral+2335' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(*,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral36 -c 36 PARALLEL ON arrA[1][i][3] - - subroutine paral36 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[li][k2j*j+lj][ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=1 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=3 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(*,BLOCK,BLOCK) -!dvm$ ALIGN B3(*,j,*) WITH A3(li,k2j*j+lj,ln) - - tname='paral+2336' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region out(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A3,B3) - - do i=1,BN1 - do n=1,BN3 -!dvm$ parallel (j) on A3(li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)) - do j=1,BN2 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,B3 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral37 -c 37 arrA4[BLOCK][BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k] stretching - - subroutine paral37 - integer, parameter :: AN1=6,AN2=6,AN3=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) - - tname='paral+2337' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* private (ia,ja,na), reduction (min (erri)) - - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral38 -c 38 PARALLEL ON arrA[i+2][ j][k] shift - - subroutine paral38 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) - - tname='paral+2338' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral39 -c 39 PARALLEL ON arrA[i][ j][-k+8] reverse - - subroutine paral39 - integer, parameter :: AN1=5,AN2=5,AN3=5 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,ln=6 - character*11 tname - integer, allocatable :: A3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) - - tname='paral+2339' - allocate (A3(AN1,AN2,AN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - if (A3(ia,ja,na).eq.(ia*NL/10+ja*NL/100+na*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A3 - endif - deallocate (A3) - - end - -C ----------------------------------------------------paral310 -c 310 PARALLEL ON arrA[i][ j][2] - - subroutine paral310 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln] - integer, parameter :: k1i=1,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=2 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,ln) - - tname='paral+23310' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(k1i*i+li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral311 -c 311 PARALLEL ON arrA[][ j][ k] - - subroutine paral311 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=6,BN2=6,BN3=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[*][k2j*j+lj][k3n*n+ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,ln=0 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(*,k2j*j+lj,k3n*n+ln) - - tname='paral+23311' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(*,k2j*j+lj,k3n*n+ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ----------------------------------------------------paral312 -c 312 PARALLEL ON arrA[1][i][3] - - subroutine paral312 - integer, parameter :: AN1=6,AN2=6,AN3=6,BN1=3,BN2=3,BN3=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[li][k2j*j+lj][ln] - integer, parameter :: k1i=0,k2i=0,k3i=0,li=1 - integer, parameter :: k1j=0,k2j=1,k3j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,ln=3 - character*11 tname - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A3(BLOCK,*,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(li,k2j*j+lj,ln) - - tname='paral+23312' - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) =i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(li,k2j*j+lj,ln), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - if (B3(i,j,n).eq.(i*NL/10+j*NL/100+n*NL/1000)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B3,A3) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*11 name - print *,name,' - complete' - end - subroutine ansno(name) - character*11 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus24.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus24.fdv deleted file mode 100644 index 37e51ca..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus24.fdv +++ /dev/null @@ -1,502 +0,0 @@ - program PARALLELPLUS24 - -c TESTING parallel CLAUSE . -c arrA4[BLOCK][*][*][BLOCK] or arrA4[*][BLOCK][*][BLOCK] etc. - - print *, '====START OF paralplus24=====================' -C ------------------------------------------------- -c 41 PARALLEL ON arrA[i][2* j][k][3*l] stretching - call paral41 -C ------------------------------------------------- -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - call paral42 -C ------------------------------------------------- -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse -c call paral43 -C ------------------------------------------------- -c 44 PARALLEL ON arrA[i][ j][2][ l] -c compression !! - call paral44 -C ------------------------------------------------- -c 45 PARALLEL ON arrA[i][ j][ ][ k] -c replication - call paral45 -C ------------------------------------------------- -c 46 PARALLEL ON arrA[i][ j][ ][3] -c compression and replication - call paral46 -C ------------------------------------------------- - print *, '==== END OF paralplus24=====================' -C - end - -C ----------------------------------------------------paral41 -c 41 arrA4[*][*] [BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k][3*l] stretching - - subroutine paral41 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=3,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,*,BLOCK,BLOCK) - - tname='paral+2441' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral42 -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - - subroutine paral42 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,*,BLOCK) - - tname='paral+2442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral43 -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse - - subroutine paral43 - integer, parameter :: AN1=6,AN2=6,AN3=7,AN4=7 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,k4n=0,ln=8 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=-1,lm=8 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,*,*) - - tname='paral+2442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral44 -c 44 PARALLEL ON arrA[i][ j][2][ l] - - subroutine paral44 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=2 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,*,*,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - - tname='paral+2444' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral45 -c 45 PARALLEL ON arrA[i][ j][ ][ k] - - subroutine paral45 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,BLOCK,*) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm) - - tname='paral+2445' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral46 -c 46 PARALLEL ON arrA[i][ j][ ][3] - - subroutine paral46 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][*][lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=0,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,*,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,lm) - - tname='paral+2446' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*11 name - print *,name,' - complete' - end - subroutine ansno(name) - character*11 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus34.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus34.fdv deleted file mode 100644 index 333410d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL/paralplus34.fdv +++ /dev/null @@ -1,501 +0,0 @@ - program PARALLELPLUS34 - -c TESTING parallel CLAUSE . -c arrA4[BLOCK][*][ BLOCK][BLOCK] or arrA4[*][BLOCK][ BLOCK][BLOCK] etc. - - print *, '====START OF paralplus34=====================' -C ------------------------------------------------- -c 41 PARALLEL ON arrA[i][2* j][k][3*l] stretching - call paral41 -C ------------------------------------------------- -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - call paral42 -C ------------------------------------------------- -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse -c call paral43 -C ------------------------------------------------- -c 44 PARALLEL ON arrA[i][ j][2][ l] -c compression !! - call paral44 -C ------------------------------------------------- -c 45 PARALLEL ON arrA[i][ j][ ][ k] -c replication - call paral45 -C ------------------------------------------------- -c 46 PARALLEL ON arrA[i][ j][ ][3] -c compression and replication - call paral46 -C ------------------------------------------------- - print *, '==== END OF paralplus34=====================' -C - end - -C ----------------------------------------------------paral41 -c 41 arrA4[BLOCK][*] [BLOCK] [BLOCK] -c PARALLEL ON arrA[i][2* j][k][3*l] stretching - - subroutine paral41 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=2,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=3,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,*,BLOCK,BLOCK) - - tname='paral+3441' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral42 -c 42 PARALLEL ON arrA[i+2][ j][k][ l+3] shift - - subroutine paral42 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,BLOCK,BLOCK) - - tname='paral+3442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral43 -c 43 PARALLEL ON arrA[i][ j][-k+8][- l+8] reverse - - subroutine paral43 - integer, parameter :: AN1=6,AN2=6,AN3=7,AN4=7 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=-1,k4n=0,ln=8 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=-1,lm=8 - character*11 tname - integer, allocatable :: A4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,*,BLOCK) - - tname='paral+3442' - allocate (A4(AN1,AN2,AN3,AN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4) -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm), -!dvm$* reduction (min (erri)) -!dvm$* , private(ia,ja,na,ma) - do i=1,((AN1-li)/k1i) - do j=1,((AN2-lj)/k2j) - do n=1,((AN3-ln)/k3n) - do m=1,((AN4-lm)/k4m) - ia=k1i * i + li - ja=k2j * j + lj - na=k3n * n + ln - ma=k4m * m + lm - if (A4(ia,ja,na,ma).eq. - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) - write (*,*) erri -c print *,A4 - endif - deallocate (A4) - - end - -C ----------------------------------------------------paral44 -c 44 PARALLEL ON arrA[i][ j][2][ l] - - subroutine paral44 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][ln][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=2 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,*,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm) - - tname='paral+3444' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,ln,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral45 -c 45 PARALLEL ON arrA[i][ j][ ][ k] - - subroutine paral45 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][][k4m*m+lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=0 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,*) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm) - - tname='paral+3445' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,k4m*m+lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ----------------------------------------------------paral46 -c 46 PARALLEL ON arrA[i][ j][ ][3] - - subroutine paral46 - integer, parameter :: AN1=6,AN2=6,AN3=6,AN4=6 - integer, parameter :: BN1=3,BN2=3,BN3=3,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for PARALLEL ON arrA[k1i*i+li][k2j*j+lj][*][lm] - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=0 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=0,lm=3 - character*11 tname - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,Avalue,Bvalue - -!dvm$ distribute A4(*,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,*,lm) - - tname='paral+3446' - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region local(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) =i*NL/10+j*NL/100+n*NL/1000+m - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(k1i*i+li,k2j*j+lj,*,lm), -!dvm$* reduction (min (erri)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - if (B4(i,j,n,m).eq.(i*NL/10+j*NL/100+n*NL/1000+m)) - * then - else - erri = min(erri,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - s=0 - cs=0 - if ((erri .eq.ER) .and. - * (s .eq. cs)) then - call ansyes(tname) - else - call ansno(tname) -c write (*,*) erri -c print *,A4 - endif - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character*11 name - print *,name,' - complete' - end - subroutine ansno(name) - character*11 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn1.fdv deleted file mode 100644 index 03cf886..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn1.fdv +++ /dev/null @@ -1,261 +0,0 @@ - program PARALLELNoOn1 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallelNoOn1========================' -C -------------------------------------------------- -c 11 PARALLEL , REDUCTION - call parallelNoOn11 -C -------------------------------------------------- -c 12 PARALLEL, PRIVATE, REDUCTION - call parallelNoOn12 -C -------------------------------------------------- -c 13 PARALLEL, ACROSS , TIE, REDUCTION - call parallelNoOn13 -C -------------------------------------------------- -c 14 PARALLEL, ACROSS, TIE, REDUCTION - call parallelNoOn14 -C -------------------------------------------------- - print *,'=== END OF parallelNoOn1 ========================= ' - end - -C ---------------------------------------------parallelNoOn11 - subroutine parallelNoOn11 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn11' - integer, allocatable :: A(:),B(:),AS(:),BS(:) - integer:: erri=ER - - allocate (B(N),A(N),BS(N),AS(N)) - - - do i=1,N - if(i == N .or. i==1) then - AS(i) = 0 - else - AS(i) = 1+i - endif - enddo - - do i=2,N-1 - BS(i) = AS(i-1)+AS(i+1) - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (i) - do i=1,N - if(i == N .or. i==1) then - A(i) = 0 - else - A(i) = 1+i - endif - - enddo - -!dvm$ parallel (i) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i), reduction( min( erri ) ) - do i=2,N-1 - if(B(i) .ne. BS(i)) erri = min(erri, ABS(B(i)-BS(i))) - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn12 - subroutine parallelNoOn12 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn12' - integer, allocatable :: A(:),B(:),AS(:),BS(:) - integer:: erri=ER - - allocate (B(N),A(N),BS(N),AS(N)) - - - do i=1,N - if(i == N .or. i==1) then - AS(i) = 0 - else - AS(i) = 1+i - endif - enddo - - do i=2,N-1 - BS(i) = AS(i-1)+AS(i+1) - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (i) - do i=1,N - if(i == N .or. i==1) then - A(i) = 0 - else - A(i) = 1+i - endif - - enddo - -!dvm$ parallel (i), private(IA1,IA2) - do i=2,N-1 - IA1 = A(i-1) - IA2 = A(i+1) - B(i) = IA1+IA2 - enddo - -!dvm$ parallel (i), reduction( min( erri ) ) - do i=2,N-1 - if(B(i) .ne. BS(i)) erri = min(erri, ABS(B(i)-BS(i))) - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - - -C ---------------------------------------------parallelNoOn13 - subroutine parallelNoOn13 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn13' - integer, allocatable :: A(:),AS(:) - integer:: erri=ER - - allocate (A(N),AS(N)) - - - do i=1,N - if(i == N .or. i==1) then - AS(i) = 0 - else - AS(i) = 1+i - endif - enddo - - do i=2,N-1 - AS(i) = AS(i-1)+AS(i+1) - enddo - -!dvm$ actual(erri) -!dvm$ region local(A) -!dvm$ parallel (i) - do i=1,N - if(i == N .or. i==1) then - A(i) = 0 - else - A(i) = 1+i - endif - - enddo - -!dvm$ parallel (i), across(A(1:1)), tie(A(i)) - do i=2,N-1 - A(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i), reduction( min( erri ) ) - do i=2,N-1 - if(A(i) .ne. AS(i)) erri = min(erri, ABS(A(i)-AS(i))) - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,AS) - - end - -C ---------------------------------------------parallelNoOn14 - subroutine parallelNoOn14 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn14' - integer, allocatable :: A(:),B(:),AS(:),BS(:) - integer:: erri=ER - - allocate (B(N),A(N),BS(N),AS(N)) - - - do i=1,N - if(i == N .or. i==1) then - AS(i) = 0 - BS(i) = 0 - else - AS(i) = 1+i - BS(i) = i - endif - enddo - - do i=3,N-1 - AS(i) = AS(i-1)+AS(i+1) - BS(i) = BS(i-2) - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (i) - do i=1,N - if(i == N .or. i==1) then - A(i) = 0 - B(i) = 0 - else - A(i) = 1+i - B(i) = i - endif - - enddo - -!dvm$ parallel (i), across(A(1:1),B(2:0)), tie(A(i),B(i)) - do i=3,N-1 - A(i) = A(i-1)+A(i+1) - B(i) = B(i-2) - enddo - -!dvm$ parallel (i), reduction( min( erri ) ) - do i=2,N-1 - if(A(i) .ne. AS(i)) erri = min(erri, ABS(A(i)-AS(i))) - if(B(i) .ne. BS(i)) erri = min(erri, ABS(B(i)-BS(i))) - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*14 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn12.fdv deleted file mode 100644 index 3d0e659..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn12.fdv +++ /dev/null @@ -1,305 +0,0 @@ - program PARALLELNoOn2 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallelNoOn2========================' -C -------------------------------------------------- -c 11 PARALLEL , REDUCTION - call parallelNoOn21 -C -------------------------------------------------- -c 12 PARALLEL, PRIVATE, REDUCTION - call parallelNoOn22 -C -------------------------------------------------- -c 13 PARALLEL, ACROSS , TIE, REDUCTION - call parallelNoOn23 -C -------------------------------------------------- -c 14 PARALLEL, ACROSS, TIE, REDUCTION - call parallelNoOn24 -C -------------------------------------------------- - print *,'=== END OF parallelNoOn2 ========================= ' - end - -C ---------------------------------------------parallelNoOn21 - subroutine parallelNoOn21 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn21' - integer, allocatable :: A(:,:),B(:,:),AS(:,:),BS(:,:) - integer:: erri=ER - - allocate (B(N,N),A(N,N),BS(N,N),AS(N,N)) - - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - AS(i,j) = 0 - else - AS(i,j) = i+j - endif - enddo - enddo - - do j=2,N-1 - do i=2,N-1 - BS(i,j) = AS(i-1,j)+AS(i+1,j)+AS(i,j+1)+AS(i,j-1) - enddo - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (j,i) - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - A(i,j) = 0 - else - A(i,j) = i+j - endif - enddo - enddo - -!dvm$ parallel (j,i) - do j=2,N-1 - do i=2,N-1 - B(i,j) = A(i-1,j)+A(i+1,j)+A(i,j+1)+A(i,j-1) - enddo - enddo - -!dvm$ parallel (j,i), reduction( min( erri ) ) - do j=2,N-1 - do i=2,N-1 - if(B(i,j) .ne. BS(i,j)) erri = min(erri, ABS(B(i,j)-BS(i,j))) - enddo - enddo - -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn22 - subroutine parallelNoOn22 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn22' - integer, allocatable :: A(:,:),B(:,:),AS(:,:),BS(:,:) - integer:: erri=ER - - allocate (B(N,N),A(N,N),BS(N,N),AS(N,N)) - - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - AS(i,j) = 0 - else - AS(i,j) = i+j - endif - enddo - enddo - - do j=2,N-1 - do i=2,N-1 - BS(i,j) = AS(i-1,j)+AS(i+1,j)+AS(i,j+1)+AS(i,j-1) - enddo - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (j,i), private(ij) - do j=1,N - do i=1,N - ij = i+j - if(i == N .or. i==1 .or. j==N .or. j==1) then - A(i,j) = 0 - else - A(i,j) = ij - endif - - enddo - enddo - -!dvm$ parallel (j,i), private(iai,iaj) - do j=2,N-1 - do i=2,N-1 - iai = A(i-1,j)+A(i+1,j) - iaj = A(i,j+1)+A(i,j-1) - B(i,j) = iai+iaj - enddo - enddo - -!dvm$ parallel (j,i), reduction( min( erri ) ) - do j=2,N-1 - do i=2,N-1 - if(B(i,j) .ne. BS(i,j)) erri = min(erri, ABS(B(i,j)-BS(i,j))) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn23 - subroutine parallelNoOn23 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn23' - integer, allocatable :: A(:,:),B(:,:),AS(:,:),BS(:,:) - integer:: erri=ER - - allocate (B(N,N),A(N,N),BS(N,N),AS(N,N)) - - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - AS(i,j) = 0 - BS(i,j) = 0 - else - AS(i,j) = i+j - BS(i,j) = i+j+2 - endif - enddo - enddo - - do j=2,N-1 - do i=2,N-2 - AS(i,j) = AS(i-1,j)+AS(i+1,j)+AS(i,j+1)+AS(i,j-1) - BS(i,j) = BS(i-1,j)+BS(i+2,j)+AS(i,j) - enddo - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (j,i) - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - A(i,j) = 0 - B(i,j) = 0 - else - A(i,j) = i+j - B(i,j) = i+j+2 - endif - - enddo - enddo - -!dvm$ parallel (j,i), across(A(1:1,1:1),B(1:2,0:0)),tie(A(i,j),B(i,j)) - do j=2,N-1 - do i=2,N-2 - A(i,j) = A(i-1,j)+A(i+1,j)+A(i,j+1)+A(i,j-1) - B(i,j) = B(i-1,j)+B(i+2,j)+A(i,j) - enddo - enddo - -!dvm$ parallel (j,i), reduction( min( erri ) ) - do j=1,N - do i=1,N - if(A(i,j) .ne. AS(i,j)) erri = min(erri, ABS(A(i,j)-AS(i,j))) - if(B(i,j) .ne. BS(i,j)) erri = min(erri, ABS(B(i,j)-BS(i,j))) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn24 - subroutine parallelNoOn24 - integer, parameter :: N = 100, ER=10000 - character*14:: tname='parallelNoOn24' - integer, allocatable :: A(:,:),B(:,:),AS(:,:),BS(:,:) - integer:: erri=ER - - allocate (B(N,N),A(N,N),BS(N,N),AS(N,N)) - - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - AS(i,j) = 0 - BS(i,j) = 0 - else - AS(i,j) = i+j - BS(i,j) = i+j+2 - endif - enddo - enddo - - do j=2,N-1 - do i=2,N-1 - AS(i,j) = AS(i-1,j)+AS(i+1,j)+AS(i,j+1)+AS(i,j-1) - BS(i+1,j) = BS(i-1,j)+BS(i+1,j)+AS(i,j) - enddo - enddo - -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (j,i) - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1) then - A(i,j) = 0 - B(i,j) = 0 - else - A(i,j) = i+j - B(i,j) = i+j+2 - endif - - enddo - enddo - -!dvm$ parallel (j,i),across(A(1:1,1:1),B(2:0,0:0)),tie(A(i,j),B(i+1,j)) - do j=2,N-1 - do i=2,N-1 - A(i,j) = A(i-1,j)+A(i+1,j)+A(i,j+1)+A(i,j-1) - B(i+1,j) = B(i-1,j)+B(i+1,j)+A(i,j) - enddo - enddo - -!dvm$ parallel (j,i), reduction( min( erri ) ) - do j=1,N - do i=1,N - if(A(i,j) .ne. AS(i,j)) erri = min(erri, ABS(A(i,j)-AS(i,j))) - if(B(i,j) .ne. BS(i,j)) erri = min(erri, ABS(B(i,j)-BS(i,j))) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*14 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn13.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn13.fdv deleted file mode 100644 index 3e24af7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/parallelNoOn13.fdv +++ /dev/null @@ -1,346 +0,0 @@ - program PARALLELNoOn3 - -c TESTING parallel CLAUSE . - - print *,'===START OF parallelNoOn3========================' -C -------------------------------------------------- -c 11 PARALLEL , REDUCTION - call parallelNoOn31 -C -------------------------------------------------- -c 12 PARALLEL, PRIVATE, REDUCTION - call parallelNoOn32 -C -------------------------------------------------- -c 13 PARALLEL, ACROSS , TIE, REDUCTION - call parallelNoOn33 -C -------------------------------------------------- -c 14 PARALLEL, ACROSS, TIE, REDUCTION - call parallelNoOn34 -C -------------------------------------------------- - print *,'=== END OF parallelNoOn3 ========================= ' - end - -C ---------------------------------------------parallelNoOn31 - subroutine parallelNoOn31 - integer, parameter :: N = 10, ER=10000 - character*14:: tname='parallelNoOn31' - integer, allocatable :: A(:,:,:),B(:,:,:),AS(:,:,:),BS(:,:,:) - integer:: erri=ER - - allocate (B(N,N,N),A(N,N,N),BS(N,N,N),AS(N,N,N)) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - AS(i,j,k) = 0 - BS(i,j,k) = 0 - else - AS(i,j,k) = i+j+k - endif - enddo - enddo - enddo - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - BS(i,j,k) = AS(i-1,j,k)+AS(i+1,j,k)+AS(i,j+1,k)+AS(i,j-1,k) - & + AS(i,j,k-1) + AS(i,j,k+1) - enddo - enddo - enddo -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (k,j,i) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - A(i,j,k) = 0 - B(i,j,k) = 0 - else - A(i,j,k) = i+j+k - endif - enddo - enddo - enddo -!dvm$ parallel (k,j,i) - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - B(i,j,k) = A(i-1,j,k)+A(i+1,j,k)+A(i,j+1,k)+A(i,j-1,k) - & + A(i,j,k-1) + A(i,j,k+1) - enddo - enddo - enddo -!dvm$ parallel (k,j,i), reduction( min( erri ) ) - do k=1,N - do j=1,N - do i=1,N - if(B(i,j,k) .ne. BS(i,j,k)) - & erri = min(erri, ABS(B(i,j,k)-BS(i,j,k))) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn32 - subroutine parallelNoOn32 - integer, parameter :: N = 10, ER=10000 - character*14:: tname='parallelNoOn32' - integer, allocatable :: A(:,:,:),B(:,:,:),AS(:,:,:),BS(:,:,:) - integer:: erri=ER - - allocate (B(N,N,N),A(N,N,N),BS(N,N,N),AS(N,N,N)) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - AS(i,j,k) = 0 - BS(i,j,k) = 0 - else - AS(i,j,k) = i+j+k - endif - enddo - enddo - enddo - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - BS(i,j,k) = AS(i-1,j,k)+AS(i+1,j,k)+AS(i,j+1,k)+AS(i,j-1,k) - & + AS(i,j,k-1) + AS(i,j,k+1) - enddo - enddo - enddo -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (k,j,i), private(i0) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - i0 = 0 - A(i,j,k) = i0 - B(i,j,k) = i0 - else - A(i,j,k) = i+j+k - endif - enddo - enddo - enddo -!dvm$ parallel (k,j,i),private(ia1,ja1,ka1) - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - ia1 = A(i-1,j,k) - ja1 = A(i,j-1,k) - ka1 = A(i,j,k-1) - B(i,j,k) = ia1+A(i+1,j,k)+A(i,j+1,k)+ ja1 - & + ka1 + A(i,j,k+1) - enddo - enddo - enddo -!dvm$ parallel (k,j,i), reduction( min( erri ) ) - do k=1,N - do j=1,N - do i=1,N - if(B(i,j,k) .ne. BS(i,j,k)) - & erri = min(erri, ABS(B(i,j,k)-BS(i,j,k))) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ---------------------------------------------parallelNoOn33 - subroutine parallelNoOn33 - integer, parameter :: N = 10, ER=10000 - character*14:: tname='parallelNoOn33' - integer, allocatable :: A(:,:,:),B(:,:,:),AS(:,:,:),BS(:,:,:) - integer:: erri=ER - - allocate (B(N,N,N),A(N,N,N),BS(N,N,N),AS(N,N,N)) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - AS(i,j,k) = 0 - BS(i,j,k) = 0 - else - AS(i,j,k) = i+j+k - BS(i,j,k) = i+j+k+1 - endif - enddo - enddo - enddo - do k=2,N-2 - do j=2,N-1 - do i=2,N-1 - AS(i,j,k) = AS(i-1,j,k)+AS(i+1,j,k)+AS(i,j+1,k)+AS(i,j-1,k) - & + AS(i,j,k-1) + AS(i,j,k+1) - BS(i,j,k) = BS(i,j,k) + BS(i-1,j,k) + BS(i,j,k+2) - enddo - enddo - enddo -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (k,j,i) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - A(i,j,k) = 0 - B(i,j,k) = 0 - else - A(i,j,k) = i+j+k - B(i,j,k) = i+j+k+1 - endif - enddo - enddo - enddo -!dvm$ parallel (k,j,i), tie(A(i,j,k),B(i,j,k)), -!dvm$& across(A(1:1,1:1,1:1),B(1:0,0:0,0:2)) - do k=2,N-2 - do j=2,N-1 - do i=2,N-1 - - A(i,j,k) = A(i-1,j,k)+A(i+1,j,k)+A(i,j+1,k)+A(i,j-1,k) - & + A(i,j,k-1) + A(i,j,k+1) - B(i,j,k) = B(i,j,k) + B(i-1,j,k) + B(i,j,k+2) - enddo - enddo - enddo -!dvm$ parallel (k,j,i), reduction( min( erri ) ) - do k=1,N - do j=1,N - do i=1,N - if(A(i,j,k) .ne. AS(i,j,k)) - & erri = min(erri, ABS(A(i,j,k)-AS(i,j,k))) - if(B(i,j,k) .ne. BS(i,j,k)) - & erri = min(erri, ABS(B(i,j,k)-BS(i,j,k))) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end -C ---------------------------------------------parallelNoOn34 - subroutine parallelNoOn34 - integer, parameter :: N = 10, ER=10000 - character*14:: tname='parallelNoOn34' - integer, allocatable :: A(:,:,:),B(:,:,:),AS(:,:,:),BS(:,:,:) - integer:: erri=ER - - allocate (B(N,N,N),A(N,N,N),BS(N,N,N),AS(N,N,N)) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - AS(i,j,k) = 0 - BS(i,j,k) = 0 - else - AS(i,j,k) = i+j+k - BS(i,j,k) = i+j+k+1 - endif - enddo - enddo - enddo - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - AS(i,j,k) = AS(i-1,j,k)+AS(i+1,j,k)+AS(i,j+1,k)+AS(i,j-1,k) - & + AS(i,j,k-1) + AS(i,j,k+1) - BS(i+1,j,k-1) = BS(i+1,j,k) + BS(i-1,j,k-1) + BS(i+1,j,k+1) - enddo - enddo - enddo -!dvm$ actual(erri) -!dvm$ region local(A,B) -!dvm$ parallel (k,j,i) - do k=1,N - do j=1,N - do i=1,N - if(i == N .or. i==1 .or. j==N .or. j==1 .or.k==N .or.k==1) then - A(i,j,k) = 0 - B(i,j,k) = 0 - else - A(i,j,k) = i+j+k - B(i,j,k) = i+j+k+1 - endif - enddo - enddo - enddo -!dvm$ parallel (k,j,i), tie(A(i,j,k),B(i+1,j,k-1)), -!dvm$& across(A(1:1,1:1,1:1),B(2:0,0:0,0:2)) - do k=2,N-1 - do j=2,N-1 - do i=2,N-1 - - A(i,j,k) = A(i-1,j,k)+A(i+1,j,k)+A(i,j+1,k)+A(i,j-1,k) - & + A(i,j,k-1) + A(i,j,k+1) - B(i+1,j,k-1) = B(i+1,j,k) + B(i-1,j,k-1) + B(i+1,j,k+1) - enddo - enddo - enddo -!dvm$ parallel (k,j,i), reduction( min( erri ) ) - do k=1,N - do j=1,N - do i=1,N - if(A(i,j,k) .ne. AS(i,j,k)) - & erri = min(erri, ABS(A(i,j,k)-AS(i,j,k))) - if(B(i,j,k) .ne. BS(i,j,k)) - & erri = min(erri, ABS(B(i,j,k)-BS(i,j,k))) - enddo - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erri) - - if (erri .eq. ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,AS,BS) - - end - -C ------------------------------------------------- - - subroutine ansyes(name) - character*14 name - print *,name,' - complete' - end - subroutine ansno(name) - character*14 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/settings deleted file mode 100644 index fd6919c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PARALLEL_NO_ON/settings +++ /dev/null @@ -1 +0,0 @@ -ALLOW_MULTIDEV=0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf11.fdv deleted file mode 100644 index d6e257d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf11.fdv +++ /dev/null @@ -1,293 +0,0 @@ - program PRF11 - -c TESTING OF THE PREFETCH DIRECTIVE . - - print *,'===START OF PRF11========================' -C -------------------------------------------------- - call prf1101 - call prf1102 - call prf1103 -C -------------------------------------------------- - -C - print *,'=== END OF PRF11 ========================= ' - end -C ---------------------------------------------PRF1101 - subroutine PRF1101 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop, ib1,ib2,ib3,ib4,ib5,ib6,ib7,ib8,ib9 - character*7 tname - -cdvm$ distribute B(BLOCK) - -cdvm$ align (I) with B(I) ::A,D -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1101' - allocate (B(N),A(N),C(N),D(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - B(i)=NL+i - D(i)=NL+i - enddo - - it=0 - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1)) - ib1=A(1) - -cdvm$ remote_access (GR2:A(N/2)) - ib2=A(N/2) -cdvm$ remote_access (GR3:A(N)) - ib3=A(N) - -cdvm$ remote_access (GR1:B(2)) - ib4=B(2) - -cdvm$ remote_access (GR2:B(N/2-1)) - ib5=B(N/2-1) -cdvm$ remote_access (GR3:B(N-1)) - ib6=B(N-1) -cdvm$ remote_access (GR1:D(3)) - ib7=D(3) - -cdvm$ remote_access (GR2:D(N/2-2)) - ib8=D(N/2-2) -cdvm$ remote_access (GR3:D(N-2)) - ib9=D(N-2) - - - if ((ib1 .eq.C(1)).and.(ib2.eq.C(N/2)).and.(ib3.eq.C(N)) - * .and.(ib4 .eq.C(2)) .and.(ib5 .eq.C(N/2-1)) - * .and.(ib6 .eq.C(N-1)) - * .and.(ib7 .eq.C(3)).and.(ib8 .eq.C(N/2-2)) - * .and.(ib9 .eq.C(N-2))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - end -C ---------------------------------------------PRF1102 - subroutine PRF1102 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop - character*7 tname - -cdvm$ distribute B(BLOCK) - -cdvm$ align (I) with B(I) ::A -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1102' - allocate (B(N),A(N),C(N),D(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - it=0 - do it=1,NIT - - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:)) - - do i=1,N - D(i)=A(i) - isumc1=isumc1+C(i) - isuma1=isuma1+D(i) - enddo - isumc2=0 - isuma2=0 - - - kk=2 - kk1=3 -cdvm$ remote_access (GR2:A(:)) - do i=1,N/kk-kk1 - D(i)=A(kk*i+kk1) - isumc2=isumc2+C(kk*i+kk1) - isuma2=isuma2+D(i) - enddo - - - if ((isumc1 .eq.isuma1) .and.(isumc2 .eq.isuma2)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,D) - - end -C ---------------------------------------------PRF1103 - subroutine PRF1103 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),A1(:) - integer nloop - character*7 tname - -cdvm$ distribute B(BLOCK) - -cdvm$ align (I) with B(I) ::A,A1 -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1103' - allocate (B(N),A(N),C(N),A1(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - A1(i) = NL+i - enddo - - it=0 - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloop1=NL - -*dvm$ parallel (i) on B(i),remote_access(GR1:A(1)) - do i=1,N - B(i) = A(1) - enddo -*dvm$ parallel (i) on A(i), reduction( min( nloop1 ) ) - do i=1,N - if (B(i).ne.C(1)) nloop1=min(nloop1,i) - enddo - - nloop2=NL - -*dvm$ parallel (i) on B(i),remote_access(GR1:A(N)) - do i=1,N - B(i) = A(N) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop2 ) ) - do i=1,N - - if (B(i).ne.C(N)) nloop2=min(nloop2,i) - enddo - nloop3=NL - -*dvm$ parallel (i) on B(i),remote_access(GR2:A(N/2)) - do i=1,N - B(i) = A(N/2) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop3 ) ) - do i=1,N - if (B(i).ne.C(N/2)) nloop3=min(nloop3,i) - enddo - - nloop4=NL - -*dvm$ parallel (i) on B(i),remote_access(GR2:A) - do i=1,N - B(i) = A(i) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop4 ) ) - do i=1,N - if (B(i).ne.C(i)) nloop4=min(nloop4,i) - enddo - nloop5=NL - -*dvm$ parallel (i) on B(i),remote_access(GR3:A1(i)) - do i=1,N - B(i) = A1(i) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop,i) - enddo - - nloop6=NL - kk=2 - kk1=3 -*dvm$ parallel (i) on B(i),remote_access(GR3:A(kk*i+kk1)) - do i=1,N/kk-kk1 - B(i) = A(kk*i+kk1) - enddo - -*dvm$ parallel (i) on B(i), reduction( min( nloop6 ) ) - do i=1,N/kk-kk1 - if (B(i).ne.C(kk*i+kk1)) nloop6=min(nloop6,i) - enddo - - - if ((nloop1 .eq.NL) .and.(nloop2 .eq.NL).and.(nloop2 .eq.NL) - * .and.(nloop3 .eq.NL).and.(nloop4 .eq.NL).and.(nloop5 .eq.NL) - * .and.(nloop6 .eq.NL) ) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf12.fdv deleted file mode 100644 index ee5f7b3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf12.fdv +++ /dev/null @@ -1,285 +0,0 @@ - program PRF12 - -c TESTING OF THE PREFETCH DIRECTIVE . - - print *,'===START OF PRF11========================' -C -------------------------------------------------- - call prf1201 - call prf1202 - call prf1203 -C -------------------------------------------------- - -C - print *,'=== END OF PRF12 ========================= ' - end -C ---------------------------------------------PRF1201 - subroutine PRF1201 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop - character*7 tname - -cdvm$ distribute B(*) - -cdvm$ align (I) with B(I) ::A,D -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1201' - allocate (B(N),A(N),C(N),D(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - B(i)=NL+i - D(i)=NL+i - enddo - it=0 - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1)) - ib1=A(1) - -cdvm$ remote_access (GR2:A(N/2)) - ib2=A(N/2) - -cdvm$ remote_access (GR3:A(N)) - ib3=A(N) - -cdvm$ remote_access (GR1:B(2)) - ib4=B(2) - -cdvm$ remote_access (GR2:B(N/2-1)) - ib5=B(N/2-1) - -cdvm$ remote_access (GR3:B(N-1)) - ib6=B(N-1) - -cdvm$ remote_access (GR1:D(3)) - ib7=D(3) - -cdvm$ remote_access (GR2:D(N/2-2)) - ib8=D(N/2-2) - -cdvm$ remote_access (GR3:D(N-2)) - ib9=D(N-2) - - if ((ib1 .eq.C(1)).and.(ib2.eq.C(N/2)).and.(ib3.eq.C(N)) - * .and.(ib4 .eq.C(2)) .and.(ib5 .eq.C(N/2-1)) - * .and.(ib6 .eq.C(N-1)) - * .and.(ib7 .eq.C(3)).and.(ib8 .eq.C(N/2-2)) - * .and.(ib9 .eq.C(N-2))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,D) - end -C ---------------------------------------------PRF1202 - subroutine PRF1202 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop - character*7 tname - -cdvm$ distribute B(*) - -cdvm$ align (I) with B(I) ::A -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1202' - allocate (B(N),A(N),C(N),D(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - it=0 - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:)) - do i=1,N - D(i)=A(i) - isumc1=isumc1+C(i) - isuma1=isuma1+D(i) - enddo - - isumc2=0 - isuma2=0 - - kk=2 - kk1=3 -cdvm$ remote_access (GR2:A(:)) - do i=1,N/kk-kk1 - D(i)=A(kk*i+kk1) - isumc2=isumc2+C(kk*i+kk1) - isuma2=isuma2+D(i) - enddo - if ((isumc1 .eq.isuma1) .and.(isumc2 .eq.isuma2)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - end -C ---------------------------------------------PRF1203 - subroutine PRF1203 - integer, parameter :: N = 16,NL=1000,NIT=3 - integer, allocatable :: A(:),B(:),C(:),A1(:) - integer nloop - character*7 tname - -cdvm$ distribute B(*) - -cdvm$ align (I) with B(I) ::A,A1 -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF1203' - allocate (B(N),A(N),C(N),A1(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - A1(i) = NL+i - enddo - - it=0 - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloop1=NL - -*dvm$ parallel (i) on B(i),remote_access(GR1:A(1)) - do i=1,N - B(i) = A(1) - enddo -*dvm$ parallel (i) on A(i), reduction( min( nloop1 ) ) - do i=1,N - if (B(i).ne.C(1)) nloop1=min(nloop1,i) - enddo - - nloop2=NL - -*dvm$ parallel (i) on B(i),remote_access(GR1:A(N)) - do i=1,N - B(i) = A(N) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop2 ) ) - do i=1,N - if (B(i).ne.C(N)) nloop2=min(nloop2,i) - enddo - nloop3=NL - -*dvm$ parallel (i) on B(i),remote_access(GR2:A(N/2)) - do i=1,N - B(i) = A(N/2) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop3 ) ) - do i=1,N - if (B(i).ne.C(N/2)) nloop3=min(nloop3,i) - enddo - - nloop4=NL - -*dvm$ parallel (i) on B(i),remote_access(GR2:A) - do i=1,N - B(i) = A(i) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop4 ) ) - do i=1,N - if (B(i).ne.C(i)) nloop4=min(nloop4,i) - enddo - nloop5=NL - -*dvm$ parallel (i) on B(i),remote_access(GR3:A1(i)) - do i=1,N - B(i) = A1(i) - enddo -*dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop,i) - enddo - - nloop6=NL - kk=2 - kk1=3 -*dvm$ parallel (i) on B(i),remote_access(GR3:A(kk*i+kk1)) - do i=1,N/kk-kk1 - B(i) = A(kk*i+kk1) - enddo - -*dvm$ parallel (i) on B(i), reduction( min( nloop6 ) ) - do i=1,N/kk-kk1 - if (B(i).ne.C(kk*i+kk1)) nloop6=min(nloop6,i) - enddo - - if ((nloop1 .eq.NL) .and.(nloop2 .eq.NL).and.(nloop2 .eq.NL) - * .and.(nloop3 .eq.NL).and.(nloop4 .eq.NL).and.(nloop5 .eq.NL) - * .and.(nloop6 .eq.NL) ) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf21.fdv deleted file mode 100644 index ac15437..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf21.fdv +++ /dev/null @@ -1,452 +0,0 @@ - program PRF21 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF21========================' -C -------------------------------------------------- - call prf2101 - call prf2102 - call prf2103 -C - print *,'=== END OF PRF21 ========================= ' - end -C ---------------------------------------------------------PRF2101 - subroutine PRF2101 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer, allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2101' - allocate (B(N,M),A(N,M)) - allocate (C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1)) - ib1=A(1,1) -cdvm$ remote_access (GR1:A(N,M)) - ib2=A(N,M) -cdvm$ remote_access (GR2:A(1,M)) - ib3=A(1,M) -cdvm$ remote_access (GR3:A(N,1)) - ib4=A(N,1) - if ((ib1 .eq.C(1,1)).and.(ib2.eq.C(N,M)).and.(ib3.eq.C(1,M)).and. - * (ib4 .eq. C(N,1)) ) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - end -C ---------------------------------------------------------PRF2102 - subroutine PRF2102 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer, allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2102' - allocate (B(N,M),A(N,M),C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - A1(i,j) =NL+i+j - A2(i,j) =NL+i+j - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 -cdvm$ remote_access (GR1:A(:,:)) - do i=1,N - do j=i,M - D(i,j)=A(i,j) - isumc1=isumc1+C(i,j) - isuma1=isuma1+D(i,j) - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(:,1)) - do i=1,N - D(i,1)=A(i,1) - isumc2=isumc2+C(i,1) - isuma2=isuma2+D(i,1) - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR2:A(1,:)) - do j=1,M - D(1,j)=A(1,j) - isumc3=isumc3+C(1,j) - isuma3=isuma3+D(1,j) - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR2:A(:,M)) - do i=1,N - D(i,M)=A(i,M) - isumc4=isumc4+C(i,M) - isuma4=isuma4+D(i,M) - enddo - - isumc5=0 - isuma5=0 - -cdvm$ remote_access (GR2:A1(N,:)) - do j=1,M - D(N,j)=A1(N,j) - isumc5=isumc5+C(N,j) - isuma5=isuma5+D(N,j) - enddo - - isumc6=0 - isuma6=0 - -cdvm$ remote_access (GR3:A1(:,:)) - do i=1,N - do j=i,M - D(i,j)=A1(i,j) - isumc6=isumc6+C(i,j) - isuma6=isuma6+D(i,j) - enddo - enddo - - isumc7=0 - isuma7=0 - - ki=2 - ki1=3 - kj=2 - kj1=3 - -cdvm$ remote_access (GR3:A2(:,:)) - do i=1,N/ki-ki1 - do j=i,M/kj-kj1 - D(i,j)=A2(ki*i+ki1,kj*j+kj1) - isumc7=isumc7+C(ki*i+ki1,kj*j+kj1 ) - isuma7=isuma7+D(i,j) - enddo - enddo - if ((isumc1.eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3.eq.isuma3) - * .and.(isumc4 .eq.isuma4).and.(isumc5 .eq.isuma5).and. - * (isumc6 .eq.isuma6).and.(isumc7 .eq.isuma7)) then - call ansyes(tname) - else - call ansno(tname) - endif -c print *,isumc1,isuma1,isumc2,isuma2 - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - end -C ---------------------------------------------------------PRF2103 - subroutine PRF2103 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer, allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2103' - allocate (B(N,M),A(N,M),C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - A1(i,j) = NL+i+j - enddo - enddo - - do it=1,NIT - -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloopi1=NL - nloopj1=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR1:A(1,1)) - do i=1,N - do j=1,M - B(i,j) = A(1,1) - enddo - enddo -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi1),min(nloopj1)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - endif - enddo - enddo - - nloopi2=NL - nloopj2=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR1:A(N,M)) - do i=1,N - do j=1,M - B(i,j) = A(N,M) - enddo - enddo -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi2),min(nloopj2)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,M)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - endif - enddo - enddo - - nloopi3=NL - nloopj3=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR2:A(1,M)) - do i=1,N - do j=1,M - B(i,j) = A(1,M) - - enddo - enddo -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi3),min(nloopj3)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,M)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - endif - enddo - enddo - - nloopi4=NL - nloopj4=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR2:A(N,1)) - do i=1,N - do j=1,M - B(i,j) = A(N,1) - enddo - enddo -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi4),min(nloopj4)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,1)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - endif - enddo - enddo - - nloopi5=NL - nloopj5=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A) -c *dvm$ parallel (i,J) on B(i,j),remote_access(A(:,:)) - do i=1,N - do j=1,M - B(i,j) = A(i,j) - - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi5),min(nloopj5)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,j)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - endif - enddo - enddo - - nloopi6=NL - nloopj6=NL - -*dvm$ parallel (i) on B(i,1),remote_access(GR3:A1(:,1)) - do i=1,N - B(i,1) = A1(i,1) - enddo - -*dvm$ parallel (i) on B(i,1), reduction( min( nloopi6),min(nloopj6)) - do i=1,N - if (B(i,1).ne.C(i,1)) then - nloopi6=min(nloopi6,i) - nloopj6=j - endif - enddo - - nloopi7=NL - nloopj7=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A1(1,:)) - do i=1,N - do j=1,M - B(i,j) = A1(1,j) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi7),min(nloopj7)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,j)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - endif - enddo - enddo - - nloopi8=NL - nloopj8=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR3:A1(:,M)) - do i=1,N - do j=1,M - B(i,j) = A1(i,M) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi8),min(nloopj8)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,M)) then - nloopi8=min(nloopi8,i) - nloopj8=min(nloopj8,j) - endif - enddo - enddo - - nloopi9=NL - nloopj9=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A1(N,:)) - do i=1,N - do j=1,M - B(i,j) = A1(N,j) - enddo - enddo - -*dvm$ parallel (i,j) on A(i,j), reduction( min( nloopi9),min(nloopj9)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,j)) then - nloopi9=min(nloopi9,i) - nloopj9=min(nloopj9,j) - endif - enddo - enddo - if ((nloopi1 .eq.NL).and.(nloopj1 .eq.NL) .and. - * (nloopi2 .eq.NL).and.(nloopj2 .eq.NL) .and. - * (nloopi3 .eq.NL).and.(nloopj3 .eq.NL) .and. - * (nloopi4 .eq.NL).and.(nloopj4 .eq.NL) .and. - * (nloopi5 .eq.NL).and.(nloopj5 .eq.NL) .and. - * (nloopi6 .eq.NL).and.(nloopj6 .eq.NL) .and. - * (nloopi7 .eq.NL).and.(nloopj7 .eq.NL) .and. - * (nloopi8 .eq.NL).and.(nloopj8 .eq.NL) .and. - * (nloopi9 .eq.NL).and.(nloopj9 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - end - -C --------------------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf22.fdv deleted file mode 100644 index 4d19ada..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf22.fdv +++ /dev/null @@ -1,460 +0,0 @@ - program PRF22 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF22========================' -C -------------------------------------------------- - call prf2201 - call prf2202 - call prf2203 -C - print *,'=== END OF PRF22 ========================= ' - end -C ---------------------------------------------------------PRF2201 - subroutine PRF2201 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer,allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(BLOCK,*) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2201' - allocate (B(N,M),A(N,M),C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1)) - ib1=A(1,1) - -cdvm$ remote_access (GR1:A(N,M)) - ib2=A(N,M) - -cdvm$ remote_access (GR2:A(1,M)) - ib3=A(1,M) - -cdvm$ remote_access (GR3:A(N,1)) - ib4=A(N,1) - - if ((ib1 .eq.C(1,1)).and.(ib2.eq.C(N,M)).and.(ib3.eq.C(1,M)).and. - * (ib4 .eq. C(N,1)) ) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - - end -C ---------------------------------------------------------PRF2202 - subroutine PRF2202 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer,allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(*,BLOCK) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2202' - allocate (B(N,M),A(N,M),C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - A1(i,j) =NL+i+j - A2(i,j) =NL+i+j - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:)) - do i=1,N - do j=i,M - D(i,j)=A(i,j) - isumc1=isumc1+C(i,j) - isuma1=isuma1+D(i,j) - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(:,1)) - do i=1,N - D(i,1)=A(i,1) - isumc2=isumc2+C(i,1) - isuma2=isuma2+D(i,1) - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR2:A(1,:)) - do j=1,M - D(1,j)=A(1,j) - isumc3=isumc3+C(1,j) - isuma3=isuma3+D(1,j) - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR2:A(:,M)) - do i=1,N - D(i,M)=A(i,M) - isumc4=isumc4+C(i,M) - isuma4=isuma4+D(i,M) - enddo - - isumc5=0 - isuma5=0 -cdvm$ remote_access (GR2:A1(N,:)) - do j=1,M - D(N,j)=A1(N,j) - isumc5=isumc5+C(N,j) - isuma5=isuma5+D(N,j) - enddo - - isumc6=0 - isuma6=0 - -cdvm$ remote_access (GR3:A1(:,:)) - do i=1,N - do j=i,M - D(i,j)=A1(i,j) - isumc6=isumc6+C(i,j) - isuma6=isuma6+D(i,j) - enddo - enddo - - isumc7=0 - isuma7=0 - - ki=2 - ki1=3 - kj=2 - kj1=3 - -cdvm$ remote_access (GR3:A2(:,:)) - do i=1,N/ki-ki1 - do j=i,M/kj-kj1 - D(i,j)=A2(ki*i+ki1,kj*j+kj1) - isumc7=isumc7+C(ki*i+ki1,kj*j+kj1 ) - isuma7=isuma7+D(i,j) - enddo - enddo - - if ((isumc1.eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3.eq.isuma3) - * .and.(isumc4 .eq.isuma4).and.(isumc5 .eq.isuma5).and. - * (isumc6 .eq.isuma6).and.(isumc7 .eq.isuma7)) then - call ansyes(tname) - else - call ansno(tname) - endif -c print *,isumc1,isuma1,isumc2,isuma2 - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - - end -C ---------------------------------------------------------PRF2203 - subroutine PRF2203 - integer, parameter :: N = 4,M=4,NL=1000,NIT=3 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer,allocatable :: A1(:,:),A2(:,:),A3(:,:) - integer nloopi,nloopj - character*7 tname - -cdvm$ distribute B(BLOCK,*) -cdvm$ align(:,:) with B(:,:) :: A,A1,A2,A3 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF2203' - allocate (B(N,M),A(N,M),C(N,M),D(N,M)) - allocate (A1(N,M),A2(N,M),A3(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - A1(i,j) = NL+i+j - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloopi1=NL - nloopj1=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR1:A(1,1)) - do i=1,N - do j=1,M - B(i,j) = A(1,1) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi1),min(nloopj1)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - endif - enddo - enddo - - nloopi2=NL - nloopj2=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR1:A(N,M)) - do i=1,N - do j=1,M - B(i,j) = A(N,M) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi2),min(nloopj2)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,M)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - endif - enddo - enddo - - nloopi3=NL - nloopj3=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR2:A(1,M)) - do i=1,N - do j=1,M - B(i,j) = A(1,M) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi3),min(nloopj3)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,M)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - endif - enddo - enddo - - nloopi4=NL - nloopj4=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR2:A(N,1)) - do i=1,N - do j=1,M - B(i,j) = A(N,1) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi4),min(nloopj4)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,1)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - endif - enddo - enddo - - nloopi5=NL - nloopj5=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A) -c *dvm$ parallel (i,J) on B(i,j),remote_access(A(:,:)) - do i=1,N - do j=1,M - B(i,j) = A(i,j) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi5),min(nloopj5)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,j)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - endif - enddo - enddo - - nloopi6=NL - nloopj6=NL - -*dvm$ parallel (i) on B(i,1),remote_access(GR3:A1(:,1)) - do i=1,N - B(i,1) = A1(i,1) - enddo - -*dvm$ parallel (i) on B(i,1), reduction( min( nloopi6),min(nloopj6)) - do i=1,N - if (B(i,1).ne.C(i,1)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - endif - enddo - - nloopi7=NL - nloopj7=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A1(1,:)) - do i=1,N - do j=1,M - B(i,j) = A1(1,j) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi7),min(nloopj7)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,j)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - endif - enddo - enddo - - nloopi8=NL - nloopj8=NL - -*dvm$ parallel (i,J) on B(i,j),remote_access(GR3:A1(:,M)) - do i=1,N - do j=1,M - B(i,j) = A1(i,M) - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi8),min(nloopj8)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,M)) then - nloopi8=min(nloopi8,i) - nloopj8=min(nloopj8,j) - endif - enddo - enddo - - nloopi9=NL - nloopj9=NL - -*dvm$ parallel (i,J) on A(i,j),remote_access(GR3:A1(N,:)) - do i=1,N - do j=1,M - B(i,j) = A1(N,j) - enddo - enddo - -*dvm$ parallel (i,j) on A(i,j), reduction( min( nloopi9),min(nloopj9)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,j)) then - nloopi9=min(nloopi9,i) - nloopj9=min(nloopj9,j) - endif - enddo - enddo - if ((nloopi1 .eq.NL).and.(nloopj1 .eq.NL) .and. - * (nloopi2 .eq.NL).and.(nloopj2 .eq.NL) .and. - * (nloopi3 .eq.NL).and.(nloopj3 .eq.NL) .and. - * (nloopi4 .eq.NL).and.(nloopj4 .eq.NL) .and. - * (nloopi5 .eq.NL).and.(nloopj5 .eq.NL) .and. - * (nloopi6 .eq.NL).and.(nloopj6 .eq.NL) .and. - * (nloopi7 .eq.NL).and.(nloopj7 .eq.NL) .and. - * (nloopi8 .eq.NL).and.(nloopj8 .eq.NL) .and. - * (nloopi9 .eq.NL).and.(nloopj9 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - deallocate (A1,A2,A3) - - end - -C --------------------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do 10 i=1,N - do 10 j=1,M - 10 AR(i,j) = NL+i+j - - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf23.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf23.f90 deleted file mode 100644 index eaef382..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf23.f90 +++ /dev/null @@ -1,268 +0,0 @@ -program prf23 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF23========================' - - call prf2301 - call prf2302 - call prf2303 - - print *, '===END OF PRF23==========================' -end - -subroutine prf2301 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), D( :, : ) - character * 7 :: tname = 'PRF2301' - - !dvm$ distribute B( block, block ) - !dvm$ align ( :, : ) with B( :, : ) :: A, D - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate( B( N, M ), A( N, M ), C( N, M ), D( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - B( i, j ) = NL + i + j - D( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access( GR1:A( N / 2, M / 2 ) ) - ib1 = A( N / 2, M / 2 ) - - !dvm$ remote_access( GR1:B( N / 2, M ) ) - ib2 = B( N / 2, M ) - - !dvm$ remote_access( GR2:D( N, M / 2 ) ) - ib3 = D( N, M / 2 ) - - !dvm$ remote_access( GR3:D( N / 2, 1 ) ) - ib4 = D( N / 2, 1 ) - - if ( ( ib1 .eq. C( N / 2, M / 2 ) ) .and. ( ib2 .eq. C( N / 2, M ) ) .and. & - ( ib3 .eq. C( N, M / 2 ) ) .and. ( ib4 .eq. C( N / 2, 1 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf2302 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), D( :, : ) - integer, allocatable :: A1( :, : ) - character * 7 :: tname = 'prf2302' - - !dvm$ distribute B( block, block ) - !dvm$ align( :, : ) with B( :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate( B( N, M ), A( N, M ), C( N, M ), D( N, M ), A1( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - A1( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( :, M / 2 ) ) - do i = 1, N - D( i, M / 2 ) = A( i, M / 2 ) - isumc1 = isumc1 + C( i, M / 2 ) - isuma1 = isuma1 + D( i, M / 2 ) - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR2:A( N / 2, : ) ) - do j = 1, M - D( N / 2, j ) = A( N / 2, j ) - isumc2 = isumc2 + C( N / 2, j ) - isuma2 = isuma2 + D( N / 2, j ) - enddo - - isumc3 = 0 - isuma3 = 0 - ki = 2 - ki1 = 3 - !dvm$ remote_access ( GR3:A1( :, M / 2 ) ) - do i = 1, N / ki - ki1 - D( i, M / 2 ) = A1( ki * i + ki1, M / 2 ) - isumc3 = isumc3 + C( ki * i + ki1, M / 2 ) - isuma3 = isuma3 + D( i, M / 2 ) - enddo - - isumc4 = 0 - isuma4 = 0 - kj = 2 - kj1 = 3 - !dvm$ remote_access ( GR3:A1( N / 2, : ) ) - do j = 1, M/kj-kj1 - D( N / 2, j ) = A1( N / 2, kj * j + kj1 ) - isumc7 = isumc7 + C( N / 2, kj * j + kj1 ) - isuma7 = isuma7 + D( N / 2, j ) - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. ( isumc3 .eq. isuma3 ) .and. & - ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D, A1 ) -end - -subroutine prf2303 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), A1( :, : ) - character * 7 :: tname ='PRF2303' - - !dvm$ distribute B( block, block ) - !dvm$ align( :, : ) with B( :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M ), A( N, M ), C( N, M ), A1( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - A1( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - - nloopi1 = NL - nloopj1 = NL - !dvm$ parallel ( i, J ) on B( i, j ), remote_access( GR1:A( N / 2, M / 2 ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A( N / 2, M / 2 ) - enddo - enddo - !dvm$ parallel ( i, j ) on B( i, j ), reduction( min( nloopi1 ), min( nloopj1 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ).ne.C( N / 2, M / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - endif - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - !dvm$ parallel ( i, J ) on B( i, j ), remote_access( GR2:A1( :, M / 2 ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A1( i, M / 2 ) - enddo - enddo - !dvm$ parallel ( i, j ) on B( i, j ), reduction( min( nloopi2 ), min( nloopj2 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ).ne.C( i, M / 2 ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - endif - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - !dvm$ parallel ( i, j ) on A( i, j ), remote_access( GR2:A1( N / 2, : ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A1( N / 2, j ) - enddo - enddo - !dvm$ parallel ( i, j ) on A( i, j ), reduction( min( nloopi3 ), min( nloopj3 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ).ne.C( N / 2, j ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - endif - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopj1 .eq. NL ) .and. & - ( nloopi2 .eq. NL ) .and. ( nloopj2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopj3 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - enddo - - deallocate( A, B, C, A1 ) -end - -subroutine serial2( AR, N, M, NL ) - integer AR( N, M ) - integer NL - do i = 1, N - do j = 1, M - AR( i, j ) = NL + i + j - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf24.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf24.f90 deleted file mode 100644 index 722dcf3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf24.f90 +++ /dev/null @@ -1,268 +0,0 @@ -program prf24 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF24========================' - - call prf2401 - call prf2402 - call prf2403 - - print *, '===END OF PRF24==========================' -end - -subroutine prf2401 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), D( :, : ) - character * 7 :: tname = 'PRF2401' - - !dvm$ distribute B( block, * ) - !dvm$ align ( :, : ) with B( :, : ) :: A, D - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate( B( N, M ), A( N, M ), C( N, M ), D( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - B( i, j ) = NL + i + j - D( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access( GR1:A( N / 2, M / 2 ) ) - ib1 = A( N / 2, M / 2 ) - - !dvm$ remote_access( GR1:B( N / 2, M ) ) - ib2 = B( N / 2, M ) - - !dvm$ remote_access( GR2:D( N, M / 2 ) ) - ib3 = D( N, M / 2 ) - - !dvm$ remote_access( GR3:D( N / 2, 1 ) ) - ib4 = D( N / 2, 1 ) - - if ( ( ib1 .eq. C( N / 2, M / 2 ) ) .and. ( ib2 .eq. C( N / 2, M ) ) .and. & - ( ib3 .eq. C( N, M / 2 ) ) .and. ( ib4 .eq. C( N / 2, 1 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf2402 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), D( :, : ) - integer, allocatable :: A1( :, : ) - character * 7 :: tname = 'PRF2402' - - !dvm$ distribute B( *, block ) - !dvm$ align( :, : ) with B( :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate( B( N, M ), A( N, M ), C( N, M ), D( N, M ), A1( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - A1( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( :, M / 2 ) ) - do i = 1, N - D( i, M / 2 ) = A( i, M / 2 ) - isumc1 = isumc1 + C( i, M / 2 ) - isuma1 = isuma1 + D( i, M / 2 ) - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR2:A( N / 2, : ) ) - do j = 1, M - D( N / 2, j ) = A( N / 2, j ) - isumc2 = isumc2 + C( N / 2, j ) - isuma2 = isuma2 + D( N / 2, j ) - enddo - - isumc3 = 0 - isuma3 = 0 - ki = 2 - ki1 = 3 - !dvm$ remote_access ( GR3:A1( :, M / 2 ) ) - do i = 1, N / ki - ki1 - D( i, M / 2 ) = A1( ki * i + ki1, M / 2 ) - isumc3 = isumc3 + C( ki * i + ki1, M / 2 ) - isuma3 = isuma3 + D( i, M / 2 ) - enddo - - isumc4 = 0 - isuma4 = 0 - kj = 2 - kj1 = 3 - !dvm$ remote_access ( GR3:A1( N / 2, : ) ) - do j = 1, M/kj-kj1 - D( N / 2, j ) = A1( N / 2, kj * j + kj1 ) - isumc7 = isumc7 + C( N / 2, kj * j + kj1 ) - isuma7 = isuma7 + D( N / 2, j ) - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. ( isumc3 .eq. isuma3 ) .and. & - ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D, A1 ) -end - -subroutine prf2403 - integer, parameter :: N = 4, M = 4, NL = 1000, NIT = 3 - integer, allocatable :: A( :, : ), B( :, : ), C( :, : ), A1( :, : ) - character * 7 :: tname ='PRF2403' - - !dvm$ distribute B( block, * ) - !dvm$ align( :, : ) with B( :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M ), A( N, M ), C( N, M ), A1( N, M ) ) - call serial2( C, N, M, NL ) - - !dvm$ parallel ( i, j ) on A( i, j ) - do i = 1, N - do j = 1, M - A( i, j ) = NL + i + j - A1( i, j ) = NL + i + j - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - - nloopi1 = NL - nloopj1 = NL - !dvm$ parallel ( i, j ) on B( i, j ), remote_access( GR1:A( N / 2, M / 2 ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A( N / 2, M / 2 ) - enddo - enddo - !dvm$ parallel ( i, j ) on B( i, j ), reduction( min( nloopi1 ), min( nloopj1 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ) .ne. C( N / 2, M / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - endif - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - !dvm$ parallel ( i, j ) on B( i, j ), remote_access( GR2:A1( :, M / 2 ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A1( i, M / 2 ) - enddo - enddo - !dvm$ parallel ( i, j ) on B( i, j ), reduction( min( nloopi2 ), min( nloopj2 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ) .ne. C( i, M / 2 ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - endif - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - !dvm$ parallel ( i, j ) on A( i, j ), remote_access( GR2:A1( N / 2, : ) ) - do i = 1, N - do j = 1, M - B( i, j ) = A1( N / 2, j ) - enddo - enddo - !dvm$ parallel ( i, j ) on A( i, j ), reduction( min( nloopi3 ), min( nloopj3 ) ) - do i = 1, N - do j = 1, M - if ( B( i, j ) .ne. C( N / 2, j ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - endif - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopj1 .eq. NL ) .and. & - ( nloopi2 .eq. NL ) .and. ( nloopj2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopj3 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - enddo - - deallocate( A, B, C, A1 ) -end - -subroutine serial2( AR, N, M, NL ) - integer AR( N, M ) - integer NL - do i = 1, N - do j = 1, M - AR( i, j ) = NL + i + j - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf31.fdv deleted file mode 100644 index c234a8f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf31.fdv +++ /dev/null @@ -1,457 +0,0 @@ - program PRF31 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF31========================' -C -------------------------------------------------- - call prf3101 - call prf3102 - call prf3103 -C - print *,'=== END OF PRF31 ========================= ' - end -C ---------------------------------------------------------PRF3101 - subroutine PRF3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),A1(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:) with B(:,:,:) :: A,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3101' - allocate (B(N,M,K),A(N,M,K),C(N,M,K),A1(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1,1)) - ib1=A(1,1,1) - -cdvm$ remote_access (GR1:A(N,M,K)) - ib2=A(N,M,K) - -cdvm$ remote_access (GR2:A(1,M,K)) - ib3=A(1,M,K) - -cdvm$ remote_access (GR3:A(N,1,K)) - ib4=A(N,1,K) - -cdvm$ remote_access (GR3:A(N,M,1)) - ib5=A(N,M,1) - - if ((ib1 .eq.C(1,1,1)) .and.(ib2 .eq.C(N,M,K)) .and. - * (ib3 .eq.C(1,M,K)) .and.(ib4 .eq.C(N,1,K)) .and. - * (ib5 .eq.C(N,M,1))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - end - -C ------------------------------------------------------PRF3102 - subroutine PRF3102 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:) with A(:,:,:) :: B - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3102' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:,:)) - do i=1,N - do j=i,M - do ii=1,K - D(i,j,ii)=A(i,j,ii) - isumc1=isumc1+C(i,j,ii) - isuma1=isuma1+D(i,j,ii) - enddo - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(1,:,:)) - do j=1,M - do ii=1,K - D(1,j,ii)=A(1,j,ii) - isumc2=isumc2+C(1,j,ii) - isuma2=isuma2+D(1,j,ii) - enddo - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR1:A(:,M,:)) - do i=1,N - do ii=1,K - D(i,M,ii)=A(i,M,ii) - isumc3=isumc3+C(i,M,ii) - isuma3=isuma3+D(i,M,ii) - enddo - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR2:A(:,:,K)) - do i=1,N - do j=1,M - D(i,j,K)=A(i,j,K) - isumc4=isumc4+C(i,j,K) - isuma4=isuma4+D(i,j,K) - enddo - enddo - - ki=2 - ki1=3 - kj=2 - kj1=3 - kii=2 - kii1=3 - - isumc5=0 - isuma5=0 -cdvm$ remote_access (GR3:A(:,:,:)) - do i=1,N/ki-ki1 - do j=1,M/kj-kj1 - do ii=1,K/kii-kii1 - D(i,j,ii)=A(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isumc5=isumc5+C(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isuma5=isuma5+D(i,j,ii) - enddo - enddo - enddo - if ((isumc1 .eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3 .eq.isuma3).and.(isumc4 .eq.isuma4).and. - * (isumc5 .eq.isuma5)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - - end -C ------------------------------------------------------PRF3103 - subroutine PRF3103 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),A1(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:) with A(:,:,:) :: B ,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3102' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),A1(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - A1(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloopi1=NL - nloopj1=NL - nloopii1=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR1:A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi1),min(nloopj1),min(nloopii1)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - nloopii1=min(nloopii1,ii) - endif - enddo - enddo - enddo - - nloopi2=NL - nloopj2=NL - nloopii2=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR1:A(N,M,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(N,M,K) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$*reduction( min( nloopi2),min(nloopj2),min(nloopii2)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(N,M,K)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - nloopii2=min(nloopii2,ii) - endif - enddo - enddo - enddo - - nloopi3=NL - nloopj3=NL - nloopii3=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR2:A) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi3),min(nloopj3),min(nloopii3)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,ii)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - nloopii3=min(nloopii3,ii) - endif - enddo - enddo - enddo - - nloopi4=NL - nloopj4=NL - nloopii4=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR2:A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi4),min(nloopj4),min(nloopii4)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - nloopii4=min(nloopii4,ii) - endif - enddo - enddo - enddo - - nloopi5=NL - nloopj5=NL - nloopii5=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),remote_access(GR3:A(1,:,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,j,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$*reduction( min( nloopi5),min(nloopj5),min(nloopii5)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,j,ii)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - nloopii5=min(nloopii5,ii) - endif - enddo - enddo - enddo - - nloopi6=NL - nloopj6=NL - nloopii6=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR3:A1(:,M,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A1(i,M,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi6),min(nloopj6),min(nloopii6)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,M,ii)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - nloopii6=min(nloopii6,ii) - endif - enddo - enddo - enddo - - nloopi7=NL - nloopj7=NL - nloopii7=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*remote_access(GR3:A1(:,:,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A1(i,j,K) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction( min( nloopi7),min(nloopj7),min(nloopii7)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,K)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - nloopii7=min(nloopii7,ii) - endif - enddo - enddo - enddo - if ((nloopi1 .eq.NL).and.(nloopi2 .eq.NL).and. - * (nloopi3 .eq.NL).and. (nloopi4 .eq.NL).and. - * (nloopi5 .eq.NL).and.(nloopi6 .eq.NL).and. - * (nloopi7 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,A1) - end - - - -C --------------------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do 10 i=1,N - do 10 j=1,M - do 10 ii=1,K - 10 AR(i,j,ii) = NL+i+j+ii - - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf32.fdv deleted file mode 100644 index ab289e8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf32.fdv +++ /dev/null @@ -1,457 +0,0 @@ - program PRF32 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF32========================' -C -------------------------------------------------- - call prf3201 - call prf3202 - call prf3203 -C - print *,'=== END OF PRF32 ========================= ' - end -C ---------------------------------------------------------PRF3201 - subroutine PRF3201 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),A1(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK,*) -cdvm$ align(:,:,:) with B(:,:,:) :: A,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3201' - allocate (B(N,M,K),A(N,M,K),C(N,M,K),A1(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1,1)) - ib1=A(1,1,1) - -cdvm$ remote_access (GR1:A(N,M,K)) - ib2=A(N,M,K) - -cdvm$ remote_access (GR2:A(1,M,K)) - ib3=A(1,M,K) - -cdvm$ remote_access (GR3:A(N,1,K)) - ib4=A(N,1,K) - -cdvm$ remote_access (GR3:A(N,M,1)) - ib5=A(N,M,1) - - if ((ib1 .eq.C(1,1,1)) .and.(ib2 .eq.C(N,M,K)) .and. - * (ib3 .eq.C(1,M,K)) .and.(ib4 .eq.C(N,1,K)) .and. - * (ib5 .eq.C(N,M,1))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - end - -C ------------------------------------------------------PRF3202 - subroutine PRF3202 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute A(BLOCK,*,BLOCK) -cdvm$ align(:,:,:) with A(:,:,:) :: B - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3202' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:,:)) - do i=1,N - do j=i,M - do ii=1,K - D(i,j,ii)=A(i,j,ii) - isumc1=isumc1+C(i,j,ii) - isuma1=isuma1+D(i,j,ii) - enddo - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(1,:,:)) - do j=1,M - do ii=1,K - D(1,j,ii)=A(1,j,ii) - isumc2=isumc2+C(1,j,ii) - isuma2=isuma2+D(1,j,ii) - enddo - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR1:A(:,M,:)) - do i=1,N - do ii=1,K - D(i,M,ii)=A(i,M,ii) - isumc3=isumc3+C(i,M,ii) - isuma3=isuma3+D(i,M,ii) - enddo - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR2:A(:,:,K)) - do i=1,N - do j=1,M - D(i,j,K)=A(i,j,K) - isumc4=isumc4+C(i,j,K) - isuma4=isuma4+D(i,j,K) - enddo - enddo - - ki=2 - ki1=3 - kj=2 - kj1=3 - kii=2 - kii1=3 - - isumc5=0 - isuma5=0 -cdvm$ remote_access (GR3:A(:,:,:)) - do i=1,N/ki-ki1 - do j=1,M/kj-kj1 - do ii=1,K/kii-kii1 - D(i,j,ii)=A(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isumc5=isumc5+C(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isuma5=isuma5+D(i,j,ii) - enddo - enddo - enddo - if ((isumc1 .eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3 .eq.isuma3).and.(isumc4 .eq.isuma4).and. - * (isumc5 .eq.isuma5)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - - end -C ------------------------------------------------------PRF3203 - subroutine PRF3203 - integer, parameter :: N = 16,M=8,K=8,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),A1(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -cdvm$ distribute A(*,BLOCK,BLOCK) -cdvm$ align(:,:,:) with A(:,:,:) :: B ,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF3202' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),A1(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - A1(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - nloopi1=NL - nloopj1=NL - nloopii1=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR1:A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi1),min(nloopj1),min(nloopii1)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - nloopii1=min(nloopii1,ii) - endif - enddo - enddo - enddo - - nloopi2=NL - nloopj2=NL - nloopii2=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR1:A(N,M,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(N,M,K) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$*reduction( min( nloopi2),min(nloopj2),min(nloopii2)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(N,M,K)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - nloopii2=min(nloopii2,ii) - endif - enddo - enddo - enddo - - nloopi3=NL - nloopj3=NL - nloopii3=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR2:A) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi3),min(nloopj3),min(nloopii3)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,ii)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - nloopii3=min(nloopii3,ii) - endif - enddo - enddo - enddo - - nloopi4=NL - nloopj4=NL - nloopii4=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR2:A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi4),min(nloopj4),min(nloopii4)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - nloopii4=min(nloopii4,ii) - endif - enddo - enddo - enddo - - nloopi5=NL - nloopj5=NL - nloopii5=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),remote_access(GR3:A(1,:,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,j,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$*reduction( min( nloopi5),min(nloopj5),min(nloopii5)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,j,ii)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - nloopii5=min(nloopii5,ii) - endif - enddo - enddo - enddo - - nloopi6=NL - nloopj6=NL - nloopii6=NL - -*dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(GR3:A1(:,M,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A1(i,M,ii) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii), -*dvm$* reduction( min( nloopi6),min(nloopj6),min(nloopii6)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,M,ii)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - nloopii6=min(nloopii6,ii) - endif - enddo - enddo - enddo - - nloopi7=NL - nloopj7=NL - nloopii7=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*remote_access(GR3:A1(:,:,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A1(i,j,K) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction( min( nloopi7),min(nloopj7),min(nloopii7)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,K)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - nloopii7=min(nloopii7,ii) - endif - enddo - enddo - enddo - if ((nloopi1 .eq.NL).and.(nloopi2 .eq.NL).and. - * (nloopi3 .eq.NL).and. (nloopi4 .eq.NL).and. - * (nloopi5 .eq.NL).and.(nloopi6 .eq.NL).and. - * (nloopi7 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - enddo - deallocate (A,B,C,A1) - end - - - -C --------------------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do 10 i=1,N - do 10 j=1,M - do 10 ii=1,K - 10 AR(i,j,ii) = NL+i+j+ii - - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf33.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf33.f90 deleted file mode 100644 index 85e3c90..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf33.f90 +++ /dev/null @@ -1,326 +0,0 @@ -program prf33 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF33========================' - - call prf3301 - call prf3302 - call prf3303 - - print *, '===END OF PRF33==========================' -end - -subroutine prf3301 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ) - character * 7 :: tname = 'PRF3301' - - !dvm$ distribute B( block, block, block ) - !dvm$ align( :, :, : ) with B( :, :, : ) :: A - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M, K ), A( N, M, K ), C( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access ( GR1:A( N / 2, M / 2, K / 2 ) ) - ib1 = A( N / 2, M / 2, K / 2 ) - - !dvm$ remote_access ( GR1:A( N / 2, M, K ) ) - ib2 = A( N / 2, M, K ) - - !dvm$ remote_access ( GR2:A( N, M / 2, K ) ) - ib3 = A( N, M / 2, K ) - - !dvm$ remote_access ( GR2:A( N, M, K / 2 ) ) - ib4 = A( N, M, K / 2 ) - - !dvm$ remote_access ( GR3:A( N / 2, M, 1 ) ) - ib5 = A( N / 2, M, 1 ) - - if ( ( ib1 .eq. C( N / 2, M / 2, K / 2 ) ) .and. ( ib2 .eq. C( N / 2, M, K ) ) .and. & - ( ib3 .eq. C( N, M / 2, K ) ) .and. ( ib4 .eq. C( N, M, K / 2 ) ) .and. & - ( ib5 .eq. C( N / 2, M, 1 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C ) -end - -subroutine prf3302 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ), D( :, :, : ) - character * 7 :: tname = 'PRF3302' - - !dvm$ distribute A( block, block, block ) - !dvm$ align( :, :, : ) with A( :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K ), B( N, M, K ), C( N, M, K ), D( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( N / 2, :, : ) ) - do j = 1, M - do ii = 1, K - D( N / 2, j, ii ) = A( N / 2, j, ii ) - isumc1 = isumc1 + C( N / 2, j, ii ) - isuma1 = isuma1 + D( N / 2, j, ii ) - enddo - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR1:A( :, M / 2, : ) ) - do i = 1, N - do ii = 1, K - D( i, M / 2, ii ) = A( i, M / 2, ii ) - isumc2 = isumc2 + C( i, M / 2, ii ) - isuma2 = isuma2 + D( i, M / 2, ii ) - enddo - enddo - - isumc3 = 0 - isuma3 = 0 - !dvm$ remote_access ( GR2:A( :, :, K / 2 ) ) - do i = 1, N - do j = 1, M - D( i, j, K / 2 ) = A( i, j, K / 2 ) - isumc3 = isumc3 + C( i, j, K / 2 ) - isuma3 = isuma3 + D( i, j, K / 2 ) - enddo - enddo - - isumc4 = 0 - isuma4 = 0 - kj = 2 - kj1 = 3 - kii = 2 - kii1 = 3 - !dvm$ remote_access ( GR3:A( N / 2, :, : ) ) - do j = 1, M / kj-kj1 - do ii = 1, K / kii-kii1 - D( N / 2, j, ii ) = A( N / 2, kj * j + kj1, kii * ii + kii1 ) - isumc4 = isumc4 + C( N / 2, kj * j + kj1, kii * ii + kii1 ) - isuma4 = isuma4 + D( N / 2, j, ii ) - enddo - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. & - ( isumc3 .eq. isuma3 ) .and. ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf3303 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ), A1( :, :, : ) - character * 7 :: tname = 'PRF3303' - - !dvm$ distribute A( block, block, block ) - !dvm$ align( :, :, : ) with A( :, :, : ) :: B, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K ), B( N, M, K ), C( N, M, K ), A1( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - A1( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - - nloopi1 = NL - nloopj1 = NL - nloopii1 = NL - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), remote_access( GR1:A( N / 2, M / 2, K / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A( N / 2, M / 2, K / 2 ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi1 ), min( nloopj1 ), min( nloopii1 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( N / 2, M / 2, K / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - nloopii1 = min( nloopii1, ii ) - endif - enddo - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - nloopii2 = NL - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), remote_access( GR1:A( N / 2, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A( N / 2, j, ii ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi2 ), min( nloopj2 ), min( nloopii2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( N / 2, j, ii ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - nloopii2 = min( nloopii2, ii ) - endif - enddo - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - nloopii3 = NL - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), remote_access( GR2:A1( :, M / 2, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A1( i, M / 2, ii ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi3 ), min( nloopj3 ), min( nloopii3 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( i, M / 2, ii ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - nloopii3 = min( nloopii3, ii ) - endif - enddo - enddo - enddo - - nloopi4 = NL - nloopj4 = NL - nloopii4 = NL - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), remote_access( GR2:A1( :, :, K / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A1( i, j, K / 2 ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), reduction( min( nloopi4 ), min( nloopj4 ), min( nloopii4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( i, j, K / 2 ) ) then - nloopi4 = min( nloopi4, i ) - nloopj4 = min( nloopj4, j ) - nloopii4 = min( nloopii4, ii ) - endif - enddo - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopi2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopi4 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - enddo - deallocate( A, B, C, A1 ) -end - -subroutine serial3( AR, N, M, K, NL ) - integer AR( N, M, K ) - integer NL - do i = 1, N - do j = 1, M - do ii = 1, K - AR( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf34.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf34.f90 deleted file mode 100644 index 76f70e2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf34.f90 +++ /dev/null @@ -1,326 +0,0 @@ -program prf34 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF34========================' - - call prf3401 - call prf3402 - call prf3403 - - print *, '===END OF PRF34==========================' -end - -subroutine prf3401 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ) - character * 7 :: tname = 'PRF3401' - - !dvm$ distribute B( block, block, * ) - !dvm$ align( :, :, : ) with B( :, :, : ) :: A - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M, K ), A( N, M, K ), C( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access ( GR1:A( N / 2, M / 2, K / 2 ) ) - ib1 = A( N / 2, M / 2, K / 2 ) - - !dvm$ remote_access ( GR1:A( N / 2, M, K ) ) - ib2 = A( N / 2, M, K ) - - !dvm$ remote_access ( GR2:A( N, M / 2, K ) ) - ib3 = A( N, M / 2, K ) - - !dvm$ remote_access ( GR2:A( N, M, K / 2 ) ) - ib4 = A( N, M, K / 2 ) - - !dvm$ remote_access ( GR3:A( N / 2, M, 1 ) ) - ib5 = A( N / 2, M, 1 ) - - if ( ( ib1 .eq. C( N / 2, M / 2, K / 2 ) ) .and. ( ib2 .eq. C( N / 2, M, K ) ) .and. & - ( ib3 .eq. C( N, M / 2, K ) ) .and. ( ib4 .eq. C( N, M, K / 2 ) ) .and. & - ( ib5 .eq. C( N / 2, M, 1 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C ) -end - -subroutine prf3402 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ), D( :, :, : ) - character * 7 :: tname = 'PRF3402' - - !dvm$ distribute A( block, *, block ) - !dvm$ align( :, :, : ) with A( :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K ), B( N, M, K ), C( N, M, K ), D( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( N / 2, :, : ) ) - do j = 1, M - do ii = 1, K - D( N / 2, j, ii ) = A( N / 2, j, ii ) - isumc1 = isumc1 + C( N / 2, j, ii ) - isuma1 = isuma1 + D( N / 2, j, ii ) - enddo - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR1:A( :, M / 2, : ) ) - do i = 1, N - do ii = 1, K - D( i, M / 2, ii ) = A( i, M / 2, ii ) - isumc2 = isumc2 + C( i, M / 2, ii ) - isuma2 = isuma2 + D( i, M / 2, ii ) - enddo - enddo - - isumc3 = 0 - isuma3 = 0 - !dvm$ remote_access ( GR2:A( :, :, K / 2 ) ) - do i = 1, N - do j = 1, M - D( i, j, K / 2 ) = A( i, j, K / 2 ) - isumc3 = isumc3 + C( i, j, K / 2 ) - isuma3 = isuma3 + D( i, j, K / 2 ) - enddo - enddo - - isumc4 = 0 - isuma4 = 0 - kj = 2 - kj1 = 3 - kii = 2 - kii1 = 3 - !dvm$ remote_access ( GR3:A( N / 2, :, : ) ) - do j = 1, M / kj-kj1 - do ii = 1, K / kii-kii1 - D( N / 2, j, ii ) = A( N / 2, kj * j + kj1, kii * ii + kii1 ) - isumc4 = isumc4 + C( N / 2, kj * j + kj1, kii * ii + kii1 ) - isuma4 = isuma4 + D( N / 2, j, ii ) - enddo - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. & - ( isumc3 .eq. isuma3 ) .and. ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf3403 - integer, parameter :: N = 16, M = 8, K = 8, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, : ), B( :, :, : ), C( :, :, : ), A1( :, :, : ) - character * 7 :: tname = 'PRF3403' - - !dvm$ distribute A( *, block, block ) - !dvm$ align( :, :, : ) with A( :, :, : ) :: B, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K ), B( N, M, K ), C( N, M, K ), A1( N, M, K ) ) - call serial3( C, N, M, K, NL ) - - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ) - do i = 1, N - do j = 1, M - do ii = 1, K - A( i, j, ii ) = NL + i + j + ii - A1( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - - nloopi1 = NL - nloopj1 = NL - nloopii1 = NL - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), remote_access( GR1:A( N / 2, M / 2, K / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A( N / 2, M / 2, K / 2 ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi1 ), min( nloopj1 ), min( nloopii1 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( N / 2, M / 2, K / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - nloopii1 = min( nloopii1, ii ) - endif - enddo - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - nloopii2 = NL - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), remote_access( GR1:A( N / 2, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A( N / 2, j, ii ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi2 ), min( nloopj2 ), min( nloopii2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( N / 2, j, ii ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - nloopii2 = min( nloopii2, ii ) - endif - enddo - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - nloopii3 = NL - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), remote_access( GR2:A1( :, M / 2, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A1( i, M / 2, ii ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on B( i, j, ii ), reduction( min( nloopi3 ), min( nloopj3 ), min( nloopii3 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( i, M / 2, ii ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - nloopii3 = min( nloopii3, ii ) - endif - enddo - enddo - enddo - - nloopi4 = NL - nloopj4 = NL - nloopii4 = NL - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), remote_access( GR2:A1( :, :, K / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - B( i, j, ii ) = A1( i, j, K / 2 ) - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii ) on A( i, j, ii ), reduction( min( nloopi4 ), min( nloopj4 ), min( nloopii4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - if ( B( i, j, ii ) .ne. C( i, j, K / 2 ) ) then - nloopi4 = min( nloopi4, i ) - nloopj4 = min( nloopj4, j ) - nloopii4 = min( nloopii4, ii ) - endif - enddo - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopi2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopi4 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - enddo - deallocate( A, B, C, A1 ) -end - -subroutine serial3( AR, N, M, K, NL ) - integer AR( N, M, K ) - integer NL - do i = 1, N - do j = 1, M - do ii = 1, K - AR( i, j, ii ) = NL + i + j + ii - enddo - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf41.fdv deleted file mode 100644 index 24fb9cd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf41.fdv +++ /dev/null @@ -1,525 +0,0 @@ - program PRF41 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF41========================' -C -------------------------------------------------- - call prf4101 - call prf4102 - call prf4103 -C - print *,'=== END OF PRF41 ========================= ' - end -C ---------------------------------------------------------PRF4101 - subroutine PRF4101 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:,:) with B(:,:,:,:) :: A,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4101' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1,1,1)) - ib1=A(1,1,1,1) - -cdvm$ remote_access (GR1:A(N,M,K,L)) - ib2=A(N,M,K,L) - -cdvm$ remote_access (GR2:A(1,M,K,L)) - ib3=A(1,M,K,L) - -cdvm$ remote_access (GR3:A(N,1,K,L)) - ib4=A(N,1,K,L) - -cdvm$ remote_access (GR3:A(N,M,1,L)) - ib5=A(N,M,1,L) - -cdvm$ remote_access (GR3:A1(N,M,K,1)) - ib6=A1(N,M,K,1) - - if ((ib1 .eq.C(1,1,1,1)) .and.(ib2 .eq.C(N,M,K,L)) .and. - * (ib3 .eq.C(1,M,K,L)) .and.(ib4 .eq.C(N,1,K,L)) .and. - * (ib5 .eq.C(N,M,1,L)).and.(ib6 .eq.C(N,M,K,1))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C ------------------------------------------------------PRF4102 - subroutine PRF4102 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),D(:,:,:,:) - character*7 tname - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4102' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:,:,:)) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc1=isumc1+C(i,j,ii,jj) - isuma1=isuma1+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(1,:,:,:)) - do j=1,M - do ii=1,K - do jj=1,L - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc2=isumc2+C(1,j,ii,jj) - isuma2=isuma2+D(1,j,ii,jj) - enddo - enddo - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR2:A(:,M,:,:)) - do i=1,N - do ii=1,K - do jj=1,L - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc3=isumc3+C(i,M,ii,jj) - isuma3=isuma3+D(i,M,ii,jj) - enddo - enddo - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR3:A(:,:,K,:)) - do i=1,N - do j=1,M - do jj=1,L - D(i,j,K,jj)=A(i,j,K,jj) - isumc4=isumc4+C(i,j,K,jj) - isuma4=isuma4+D(i,j,K,jj) - enddo - enddo - enddo - - isumc5=0 - isuma5=0 - -cdvm$ remote_access (GR3:A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - D(i,j,ii,L)=A(i,j,ii,L) - isumc5=isumc5+C(i,j,ii,L) - isuma5=isuma5+D(i,j,ii,L) - enddo - enddo - enddo - - if ((isumc1 .eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3 .eq.isuma3).and.(isumc4 .eq.isuma4).and. - * (isumc5 .eq.isuma5)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - - end - -C ------------------------------------------------------PRF4103 - subroutine PRF4103 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4103' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - - nloopi1=NL - nloopj1=NL - nloopii1=NL - nloopjj1=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR1:A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi1),min(nloopj1),min(nloopii1), -*dvm$* min(nloopjj1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - nloopii1=min(nloopii1,ii) - nloopjj1=min(nloopjj1,jj) - endif - enddo - enddo - enddo - enddo - - nloopi2=NL - nloopj2=NL - nloopii2=NL - nloopjj2=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR1:A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi2),min(nloopj2),min(nloopii2),min(nloopjj2)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - nloopii2=min(nloopii2,ii) - nloopjj2=min(nloopjj2,jj) - endif - enddo - enddo - enddo - enddo - - nloopi3=NL - nloopj3=NL - nloopii3=NL - nloopjj3=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR2:A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi3),min(nloopj3),min(nloopii3), -*dvm$* min(nloopjj3)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - nloopii3=min(nloopii3,ii) - nloopjj3=min(nloopjj3,jj) - endif - enddo - enddo - enddo - enddo - - nloopi4=NL - nloopj4=NL - nloopii4=NL - nloopjj4=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(GR2:A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi4),min(nloopj4),min(nloopii4), -*dvm$*min(nlooopjj4)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - nloopii4=min(nloopii4,ii) - nloopjj4=min(nloopjj4,jj) - endif - enddo - enddo - enddo - enddo - - nloopi5=NL - nloopj5=NL - nloopii5=NL - nloopjj5=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi5),min(nloopj5),min(nloopii5), -*dvm$* min(nloopjj5)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - nloopii5=min(nloopii5,ii) - nloopjj5=min(nloopjj5,jj) - endif - enddo - enddo - enddo - enddo - - nloopi6=NL - nloopj6=NL - nloopii6=NL - nloopjj6=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,K,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi6),min(nloopj6),min(nloopii6),min(nloopjj6)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - nloopii6=min(nloopii6,ii) - nloopjj6=min(nloopjj6,jj) - endif - enddo - enddo - enddo - enddo - - nloopi7=NL - nloopj7=NL - nloopii7=NL - nloopjj7=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,ii,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi7),min(nloopj7),min(nloopii7),min(nloopjj7)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - nloopii7=min(nloopii7,ii) - nloopjj7=min(nloopjj7,jj) - endif - enddo - enddo - enddo - enddo - - if ((nloopi1 .eq.NL).and.(nloopi2 .eq.NL).and. - * (nloopi3 .eq.NL).and. (nloopi4 .eq.NL).and. - * (nloopi5 .eq.NL).and.(nloopi6 .eq.NL).and. - * (nloopi7 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf42.fdv deleted file mode 100644 index 745109f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf42.fdv +++ /dev/null @@ -1,525 +0,0 @@ - program PRF42 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF42========================' -C -------------------------------------------------- - call prf4201 - call prf4202 - call prf4203 -C - print *,'=== END OF PRF42 ========================= ' - end -C ---------------------------------------------------------PRF4201 - subroutine PRF4201 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute B(*,*,*,*) -cdvm$ align(:,:,:,:) with B(:,:,:,:) :: A,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4201' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1,1,1)) - ib1=A(1,1,1,1) - -cdvm$ remote_access (GR1:A(N,M,K,L)) - ib2=A(N,M,K,L) - -cdvm$ remote_access (GR2:A(1,M,K,L)) - ib3=A(1,M,K,L) - -cdvm$ remote_access (GR3:A(N,1,K,L)) - ib4=A(N,1,K,L) - -cdvm$ remote_access (GR3:A(N,M,1,L)) - ib5=A(N,M,1,L) - -cdvm$ remote_access (GR3:A1(N,M,K,1)) - ib6=A1(N,M,K,1) - - if ((ib1 .eq.C(1,1,1,1)) .and.(ib2 .eq.C(N,M,K,L)) .and. - * (ib3 .eq.C(1,M,K,L)) .and.(ib4 .eq.C(N,1,K,L)) .and. - * (ib5 .eq.C(N,M,1,L)).and.(ib6 .eq.C(N,M,K,1))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C ------------------------------------------------------PRF4202 - subroutine PRF4202 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),D(:,:,:,:) - character*7 tname - -cdvm$ distribute A(*,*,*,*) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4202' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:,:,:)) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc1=isumc1+C(i,j,ii,jj) - isuma1=isuma1+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(1,:,:,:)) - do j=1,M - do ii=1,K - do jj=1,L - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc2=isumc2+C(1,j,ii,jj) - isuma2=isuma2+D(1,j,ii,jj) - enddo - enddo - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR2:A(:,M,:,:)) - do i=1,N - do ii=1,K - do jj=1,L - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc3=isumc3+C(i,M,ii,jj) - isuma3=isuma3+D(i,M,ii,jj) - enddo - enddo - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR3:A(:,:,K,:)) - do i=1,N - do j=1,M - do jj=1,L - D(i,j,K,jj)=A(i,j,K,jj) - isumc4=isumc4+C(i,j,K,jj) - isuma4=isuma4+D(i,j,K,jj) - enddo - enddo - enddo - - isumc5=0 - isuma5=0 - -cdvm$ remote_access (GR3:A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - D(i,j,ii,L)=A(i,j,ii,L) - isumc5=isumc5+C(i,j,ii,L) - isuma5=isuma5+D(i,j,ii,L) - enddo - enddo - enddo - - if ((isumc1 .eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3 .eq.isuma3).and.(isumc4 .eq.isuma4).and. - * (isumc5 .eq.isuma5)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - - end - -C ------------------------------------------------------PRF4203 - subroutine PRF4203 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute A(*,*,*,*) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4203' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - - nloopi1=NL - nloopj1=NL - nloopii1=NL - nloopjj1=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR1:A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi1),min(nloopj1),min(nloopii1), -*dvm$* min(nloopjj1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - nloopii1=min(nloopii1,ii) - nloopjj1=min(nloopjj1,jj) - endif - enddo - enddo - enddo - enddo - - nloopi2=NL - nloopj2=NL - nloopii2=NL - nloopjj2=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR1:A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi2),min(nloopj2),min(nloopii2),min(nloopjj2)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - nloopii2=min(nloopii2,ii) - nloopjj2=min(nloopjj2,jj) - endif - enddo - enddo - enddo - enddo - - nloopi3=NL - nloopj3=NL - nloopii3=NL - nloopjj3=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR2:A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi3),min(nloopj3),min(nloopii3), -*dvm$* min(nloopjj3)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - nloopii3=min(nloopii3,ii) - nloopjj3=min(nloopjj3,jj) - endif - enddo - enddo - enddo - enddo - - nloopi4=NL - nloopj4=NL - nloopii4=NL - nloopjj4=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(GR2:A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi4),min(nloopj4),min(nloopii4), -*dvm$*min(nlooopjj4)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - nloopii4=min(nloopii4,ii) - nloopjj4=min(nloopjj4,jj) - endif - enddo - enddo - enddo - enddo - - nloopi5=NL - nloopj5=NL - nloopii5=NL - nloopjj5=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi5),min(nloopj5),min(nloopii5), -*dvm$* min(nloopjj5)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - nloopii5=min(nloopii5,ii) - nloopjj5=min(nloopjj5,jj) - endif - enddo - enddo - enddo - enddo - - nloopi6=NL - nloopj6=NL - nloopii6=NL - nloopjj6=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,K,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi6),min(nloopj6),min(nloopii6),min(nloopjj6)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - nloopii6=min(nloopii6,ii) - nloopjj6=min(nloopjj6,jj) - endif - enddo - enddo - enddo - enddo - - nloopi7=NL - nloopj7=NL - nloopii7=NL - nloopjj7=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,ii,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi7),min(nloopj7),min(nloopii7),min(nloopjj7)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - nloopii7=min(nloopii7,ii) - nloopjj7=min(nloopjj7,jj) - endif - enddo - enddo - enddo - enddo - - if ((nloopi1 .eq.NL).and.(nloopi2 .eq.NL).and. - * (nloopi3 .eq.NL).and. (nloopi4 .eq.NL).and. - * (nloopi5 .eq.NL).and.(nloopi6 .eq.NL).and. - * (nloopi7 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf43.fdv deleted file mode 100644 index ffe30d1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf43.fdv +++ /dev/null @@ -1,525 +0,0 @@ - program PRF43 - -c TESTING OF THE PREFETCH DIRECTIVE. - - print *,'===START OF PRF43========================' -C -------------------------------------------------- - call prf4301 - call prf4302 - call prf4303 -C - print *,'=== END OF PRF43 ========================= ' - end -C ---------------------------------------------------------PRF4301 - subroutine PRF4301 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute B(BLOCK,BLOCK,BLOCK,*) -cdvm$ align(:,:,:,:) with B(:,:,:,:) :: A,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4301' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - -cdvm$ remote_access (GR1:A(1,1,1,1)) - ib1=A(1,1,1,1) - -cdvm$ remote_access (GR1:A(N,M,K,L)) - ib2=A(N,M,K,L) - -cdvm$ remote_access (GR2:A(1,M,K,L)) - ib3=A(1,M,K,L) - -cdvm$ remote_access (GR3:A(N,1,K,L)) - ib4=A(N,1,K,L) - -cdvm$ remote_access (GR3:A(N,M,1,L)) - ib5=A(N,M,1,L) - -cdvm$ remote_access (GR3:A1(N,M,K,1)) - ib6=A1(N,M,K,1) - - if ((ib1 .eq.C(1,1,1,1)) .and.(ib2 .eq.C(N,M,K,L)) .and. - * (ib3 .eq.C(1,M,K,L)) .and.(ib4 .eq.C(N,1,K,L)) .and. - * (ib5 .eq.C(N,M,1,L)).and.(ib6 .eq.C(N,M,K,1))) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C ------------------------------------------------------PRF4302 - subroutine PRF4302 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),D(:,:,:,:) - character*7 tname - -cdvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4302' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - isumc1=0 - isuma1=0 - -cdvm$ remote_access (GR1:A(:,:,:,:)) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc1=isumc1+C(i,j,ii,jj) - isuma1=isuma1+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - isumc2=0 - isuma2=0 - -cdvm$ remote_access (GR1:A(1,:,:,:)) - do j=1,M - do ii=1,K - do jj=1,L - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc2=isumc2+C(1,j,ii,jj) - isuma2=isuma2+D(1,j,ii,jj) - enddo - enddo - enddo - - isumc3=0 - isuma3=0 - -cdvm$ remote_access (GR2:A(:,M,:,:)) - do i=1,N - do ii=1,K - do jj=1,L - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc3=isumc3+C(i,M,ii,jj) - isuma3=isuma3+D(i,M,ii,jj) - enddo - enddo - enddo - - isumc4=0 - isuma4=0 - -cdvm$ remote_access (GR3:A(:,:,K,:)) - do i=1,N - do j=1,M - do jj=1,L - D(i,j,K,jj)=A(i,j,K,jj) - isumc4=isumc4+C(i,j,K,jj) - isuma4=isuma4+D(i,j,K,jj) - enddo - enddo - enddo - - isumc5=0 - isuma5=0 - -cdvm$ remote_access (GR3:A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - D(i,j,ii,L)=A(i,j,ii,L) - isumc5=isumc5+C(i,j,ii,L) - isuma5=isuma5+D(i,j,ii,L) - enddo - enddo - enddo - - if ((isumc1 .eq.isuma1).and.(isumc2 .eq.isuma2).and. - * (isumc3 .eq.isuma3).and.(isumc4 .eq.isuma4).and. - * (isumc5 .eq.isuma5)) then - call ansyes(tname) - else - call ansno(tname) - endif - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,D) - - end - -C ------------------------------------------------------PRF4303 - subroutine PRF4303 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000,NIT=3 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:) - integer, allocatable :: C(:,:,:,:),A1(:,:,:,:) - character*7 tname - -cdvm$ distribute A(BLOCK,*,BLOCK,BLOCK) -cdvm$ align(:,:,:,:) with A(:,:,:,:) :: B,A1 - -cdvm$ remote_group GR1 -cdvm$ remote_group GR2 -cdvm$ remote_group GR3 - - tname='PRF4303' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),A1(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - A1(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - - do it=1,NIT -cdvm$ prefetch GR1 -cdvm$ prefetch GR2 -cdvm$ prefetch GR3 - - - nloopi1=NL - nloopj1=NL - nloopii1=NL - nloopjj1=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR1:A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi1),min(nloopj1),min(nloopii1), -*dvm$* min(nloopjj1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi1=min(nloopi1,i) - nloopj1=min(nloopj1,j) - nloopii1=min(nloopii1,ii) - nloopjj1=min(nloopjj1,jj) - endif - enddo - enddo - enddo - enddo - - nloopi2=NL - nloopj2=NL - nloopii2=NL - nloopjj2=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR1:A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi2),min(nloopj2),min(nloopii2),min(nloopjj2)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi2=min(nloopi2,i) - nloopj2=min(nloopj2,j) - nloopii2=min(nloopii2,ii) - nloopjj2=min(nloopjj2,jj) - endif - enddo - enddo - enddo - enddo - - nloopi3=NL - nloopj3=NL - nloopii3=NL - nloopjj3=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(GR2:A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi3),min(nloopj3),min(nloopii3), -*dvm$* min(nloopjj3)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi3=min(nloopi3,i) - nloopj3=min(nloopj3,j) - nloopii3=min(nloopii3,ii) - nloopjj3=min(nloopjj3,jj) - endif - enddo - enddo - enddo - enddo - - nloopi4=NL - nloopj4=NL - nloopii4=NL - nloopjj4=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(GR2:A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi4),min(nloopj4),min(nloopii4), -*dvm$*min(nlooopjj4)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi4=min(nloopi4,i) - nloopj4=min(nloopj4,j) - nloopii4=min(nloopii4,ii) - nloopjj4=min(nloopjj4,jj) - endif - enddo - enddo - enddo - enddo - - nloopi5=NL - nloopj5=NL - nloopii5=NL - nloopjj5=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$* reduction( min( nloopi5),min(nloopj5),min(nloopii5), -*dvm$* min(nloopjj5)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi5=min(nloopi5,i) - nloopj5=min(nloopj5,j) - nloopii5=min(nloopii5,ii) - nloopjj5=min(nloopjj5,jj) - endif - enddo - enddo - enddo - enddo - - nloopi6=NL - nloopj6=NL - nloopii6=NL - nloopjj6=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,K,jj) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi6),min(nloopj6),min(nloopii6),min(nloopjj6)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi6=min(nloopi6,i) - nloopj6=min(nloopj6,j) - nloopii6=min(nloopii6,ii) - nloopjj6=min(nloopjj6,jj) - endif - enddo - enddo - enddo - enddo - - nloopi7=NL - nloopj7=NL - nloopii7=NL - nloopjj7=NL - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*remote_access(GR3:A1(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A1(i,j,ii,L) - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -*dvm$*reduction( min( nloopi7),min(nloopj7),min(nloopii7),min(nloopjj7)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi7=min(nloopi7,i) - nloopj7=min(nloopj7,j) - nloopii7=min(nloopii7,ii) - nloopjj7=min(nloopjj7,jj) - endif - enddo - enddo - enddo - enddo - - if ((nloopi1 .eq.NL).and.(nloopi2 .eq.NL).and. - * (nloopi3 .eq.NL).and. (nloopi4 .eq.NL).and. - * (nloopi5 .eq.NL).and.(nloopi6 .eq.NL).and. - * (nloopi7 .eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - if (it .eq. 2) cycle -cdvm$ reset GR1 -cdvm$ reset GR2 -cdvm$ reset GR3 - - enddo - deallocate (A,B,C,A1) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf44.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf44.f90 deleted file mode 100644 index aff877b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf44.f90 +++ /dev/null @@ -1,401 +0,0 @@ -program prf44 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF44========================' - - call prf4401 - call prf4402 - call prf4403 - - print *, '===END OF PRF44==========================' -end - -subroutine prf4401 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), A1( :, :, :, : ) - character * 7 :: tname = 'PRF4401' - - !dvm$ distribute B( block, block, block, block ) - !dvm$ align( :, :, :, : ) with B( :, :, :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M, K, L ), A( N, M, K, L ), C( N, M, K, L ), A1( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - A1( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access ( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - ib1 = A( N / 2, M / 2, K / 2, L / 2 ) - - !dvm$ remote_access ( GR1:A( N / 2, M, K, L ) ) - ib2 = A( N / 2, M, K, L ) - - !dvm$ remote_access ( GR2:A( N, M / 2, K, L ) ) - ib3 = A( N, M / 2, K, L ) - - !dvm$ remote_access ( GR2:A( N, M, K / 2, L ) ) - ib4 = A( N, M, K / 2, L ) - - !dvm$ remote_access ( GR3:A( N, M, K, L / 2 ) ) - ib5 = A( N, M, K, L / 2 ) - - !dvm$ remote_access ( GR3:A1( 1, M, K, L / 2 ) ) - ib6 = A1( 1, M, K, L / 2 ) - - if ( ( ib1 .eq. C( N / 2, M / 2, K / 2, L / 2 ) ) .and. ( ib2 .eq. C( N / 2, M, K, L ) ) .and. & - ( ib3 .eq. C( N, M / 2, K, L ) ) .and. ( ib4 .eq. C( N, M, K / 2, L ) ) .and. & - ( ib5 .eq. C( N, M, K, L / 2 ) ) .and. ( ib6 .eq. C( 1, M, K, L / 2 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate ( A, B, C, A1 ) -end - -subroutine prf4402 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), D( :, :, :, : ) - character * 7 :: tname = 'PRF4402' - - !dvm$ distribute A( block, block, block, block ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ), D( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( N / 2, :, :, : ) ) - do j = 1, M - do ii = 1, K - do jj = 1, L - D( N / 2, j, ii, jj ) = A( N / 2, j, ii, jj ) - isumc1 = isumc1 + C( N / 2, j, ii, jj ) - isuma1 = isuma1 + D( N / 2, j, ii, jj ) - enddo - enddo - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do ii = 1, K - do jj = 1, L - D( i, M / 2, ii, jj ) = A( i, M / 2, ii, jj ) - isumc2 = isumc2 + C( i, M / 2, ii, jj ) - isuma2 = isuma2 + D( i, M / 2, ii, jj ) - enddo - enddo - enddo - - isumc3 = 0 - isuma3 = 0 - !dvm$ remote_access ( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do jj = 1, L - D( i, j, K / 2, jj ) = A( i, j, K / 2, jj ) - isumc3 = isumc3 + C( i, j, K / 2, jj ) - isuma3 = isuma3 + D( i, j, K / 2, jj ) - enddo - enddo - enddo - - isumc4 = 0 - isuma4 = 0 - !dvm$ remote_access ( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - D( i, j, ii, L / 2 ) = A( i, j, ii, L / 2 ) - isumc4 = isumc4 + C( i, j, ii, L / 2 ) - isuma4 = isuma4 + D( i, j, ii, L / 2 ) - enddo - enddo - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. & - ( isumc3 .eq. isuma3 ) .and. ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf4403 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ), C( :, :, :, : ) - character * 7 :: tname = 'PRF4403' - - !dvm$ distribute A( block, block, block, block ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - nloopi1 = NL - nloopj1 = NL - nloopii1 = NL - nloopjj1 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, M / 2, K / 2, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi1 ), min( nloopj1 ), min( nloopii1 ), min( nloopjj1 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, M / 2, K / 2, L / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - nloopii1 = min( nloopii1, ii ) - nloopjj1 = min( nloopjj1, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - nloopii2 = NL - nloopjj2 = NL - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ), remote_access( GR2:A( N / 2, :, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi2 ), min( nloopj2 ), min( nloopii2 ), min( nlooopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, j, ii, jj ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - nloopii2 = min( nloopii2, ii ) - nloopjj2 = min( nloopjj2, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - nloopii3 = NL - nloopjj3 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, M / 2, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi3 ), min( nloopj3 ), min( nloopii3 ), min( nloopjj3 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, M / 2, ii, jj ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - nloopii3 = min( nloopii3, ii ) - nloopjj3 = min( nloopjj3, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi4 = NL - nloopj4 = NL - nloopii4 = NL - nloopjj4 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, K / 2, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi4 ), min( nloopj4 ), min( nloopii4 ), min( nloopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, K / 2, jj ) ) then - nloopi4 = min( nloopi4, i ) - nloopj4 = min( nloopj4, j ) - nloopii4 = min( nloopii4, ii ) - nloopjj4 = min( nloopjj4, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi5 = NL - nloopj5 = NL - nloopii5 = NL - nloopjj5 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, ii, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi5 ), min( nloopj5 ), min( nloopii5 ), min( nloopjj5 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, ii, L / 2 ) ) then - nloopi5 = min( nloopi5, i ) - nloopj5 = min( nloopj5, j ) - nloopii5 = min( nloopii5, ii ) - nloopjj5 = min( nloopjj5, jj ) - endif - enddo - enddo - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopi2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopi4 .eq. NL ) .and. & - ( nloopi5 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C ) -end - -subroutine serial4( AR, N, M, K, L, NL ) - integer AR( N, M, K, L ) - integer NL - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - AR( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf45.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf45.f90 deleted file mode 100644 index bbbba57..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf45.f90 +++ /dev/null @@ -1,401 +0,0 @@ -program prf45 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF45========================' - - call prf4501 - call prf4502 - call prf4503 - - print *, '===END OF PRF45==========================' -end - -subroutine prf4501 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), A1( :, :, :, : ) - character * 7 :: tname = 'PRF4501' - - !dvm$ distribute B( *, *, *, * ) - !dvm$ align( :, :, :, : ) with B( :, :, :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M, K, L ), A( N, M, K, L ), C( N, M, K, L ), A1( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - A1( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access ( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - ib1 = A( N / 2, M / 2, K / 2, L / 2 ) - - !dvm$ remote_access ( GR1:A( N / 2, M, K, L ) ) - ib2 = A( N / 2, M, K, L ) - - !dvm$ remote_access ( GR2:A( N, M / 2, K, L ) ) - ib3 = A( N, M / 2, K, L ) - - !dvm$ remote_access ( GR2:A( N, M, K / 2, L ) ) - ib4 = A( N, M, K / 2, L ) - - !dvm$ remote_access ( GR3:A( N, M, K, L / 2 ) ) - ib5 = A( N, M, K, L / 2 ) - - !dvm$ remote_access ( GR3:A1( 1, M, K, L / 2 ) ) - ib6 = A1( 1, M, K, L / 2 ) - - if ( ( ib1 .eq. C( N / 2, M / 2, K / 2, L / 2 ) ) .and. ( ib2 .eq. C( N / 2, M, K, L ) ) .and. & - ( ib3 .eq. C( N, M / 2, K, L ) ) .and. ( ib4 .eq. C( N, M, K / 2, L ) ) .and. & - ( ib5 .eq. C( N, M, K, L / 2 ) ) .and. ( ib6 .eq. C( 1, M, K, L / 2 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate ( A, B, C, A1 ) -end - -subroutine prf4502 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), D( :, :, :, : ) - character * 7 :: tname = 'PRF4502' - - !dvm$ distribute A( *, *, *, * ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ), D( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( N / 2, :, :, : ) ) - do j = 1, M - do ii = 1, K - do jj = 1, L - D( N / 2, j, ii, jj ) = A( N / 2, j, ii, jj ) - isumc1 = isumc1 + C( N / 2, j, ii, jj ) - isuma1 = isuma1 + D( N / 2, j, ii, jj ) - enddo - enddo - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do ii = 1, K - do jj = 1, L - D( i, M / 2, ii, jj ) = A( i, M / 2, ii, jj ) - isumc2 = isumc2 + C( i, M / 2, ii, jj ) - isuma2 = isuma2 + D( i, M / 2, ii, jj ) - enddo - enddo - enddo - - isumc3 = 0 - isuma3 = 0 - !dvm$ remote_access ( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do jj = 1, L - D( i, j, K / 2, jj ) = A( i, j, K / 2, jj ) - isumc3 = isumc3 + C( i, j, K / 2, jj ) - isuma3 = isuma3 + D( i, j, K / 2, jj ) - enddo - enddo - enddo - - isumc4 = 0 - isuma4 = 0 - !dvm$ remote_access ( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - D( i, j, ii, L / 2 ) = A( i, j, ii, L / 2 ) - isumc4 = isumc4 + C( i, j, ii, L / 2 ) - isuma4 = isuma4 + D( i, j, ii, L / 2 ) - enddo - enddo - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. & - ( isumc3 .eq. isuma3 ) .and. ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf4503 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ), C( :, :, :, : ) - character * 7 :: tname = 'PRF4503' - - !dvm$ distribute A( *, *, *, * ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - nloopi1 = NL - nloopj1 = NL - nloopii1 = NL - nloopjj1 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, M / 2, K / 2, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi1 ), min( nloopj1 ), min( nloopii1 ), min( nloopjj1 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, M / 2, K / 2, L / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - nloopii1 = min( nloopii1, ii ) - nloopjj1 = min( nloopjj1, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - nloopii2 = NL - nloopjj2 = NL - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ), remote_access( GR2:A( N / 2, :, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi2 ), min( nloopj2 ), min( nloopii2 ), min( nlooopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, j, ii, jj ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - nloopii2 = min( nloopii2, ii ) - nloopjj2 = min( nloopjj2, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - nloopii3 = NL - nloopjj3 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, M / 2, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi3 ), min( nloopj3 ), min( nloopii3 ), min( nloopjj3 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, M / 2, ii, jj ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - nloopii3 = min( nloopii3, ii ) - nloopjj3 = min( nloopjj3, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi4 = NL - nloopj4 = NL - nloopii4 = NL - nloopjj4 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, K / 2, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi4 ), min( nloopj4 ), min( nloopii4 ), min( nloopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, K / 2, jj ) ) then - nloopi4 = min( nloopi4, i ) - nloopj4 = min( nloopj4, j ) - nloopii4 = min( nloopii4, ii ) - nloopjj4 = min( nloopjj4, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi5 = NL - nloopj5 = NL - nloopii5 = NL - nloopjj5 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, ii, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi5 ), min( nloopj5 ), min( nloopii5 ), min( nloopjj5 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, ii, L / 2 ) ) then - nloopi5 = min( nloopi5, i ) - nloopj5 = min( nloopj5, j ) - nloopii5 = min( nloopii5, ii ) - nloopjj5 = min( nloopjj5, jj ) - endif - enddo - enddo - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopi2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopi4 .eq. NL ) .and. & - ( nloopi5 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C ) -end - -subroutine serial4( AR, N, M, K, L, NL ) - integer AR( N, M, K, L ) - integer NL - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - AR( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf46.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf46.f90 deleted file mode 100644 index 9520b00..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/prf46.f90 +++ /dev/null @@ -1,401 +0,0 @@ -program prf46 - !TESTING OF THE PREFETCH DIRECTIVE. - - print *, '===START OF PRF46========================' - - call prf4601 - call prf4602 - call prf4603 - - print *, '===END OF PRF46==========================' -end - -subroutine prf4601 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), A1( :, :, :, : ) - character * 7 :: tname = 'PRF4601' - - !dvm$ distribute B( block, block, block, * ) - !dvm$ align( :, :, :, : ) with B( :, :, :, : ) :: A, A1 - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( B( N, M, K, L ), A( N, M, K, L ), C( N, M, K, L ), A1( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - A1( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - !dvm$ remote_access ( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - ib1 = A( N / 2, M / 2, K / 2, L / 2 ) - - !dvm$ remote_access ( GR1:A( N / 2, M, K, L ) ) - ib2 = A( N / 2, M, K, L ) - - !dvm$ remote_access ( GR2:A( N, M / 2, K, L ) ) - ib3 = A( N, M / 2, K, L ) - - !dvm$ remote_access ( GR2:A( N, M, K / 2, L ) ) - ib4 = A( N, M, K / 2, L ) - - !dvm$ remote_access ( GR3:A( N, M, K, L / 2 ) ) - ib5 = A( N, M, K, L / 2 ) - - !dvm$ remote_access ( GR3:A1( 1, M, K, L / 2 ) ) - ib6 = A1( 1, M, K, L / 2 ) - - if ( ( ib1 .eq. C( N / 2, M / 2, K / 2, L / 2 ) ) .and. ( ib2 .eq. C( N / 2, M, K, L ) ) .and. & - ( ib3 .eq. C( N, M / 2, K, L ) ) .and. ( ib4 .eq. C( N, M, K / 2, L ) ) .and. & - ( ib5 .eq. C( N, M, K, L / 2 ) ) .and. ( ib6 .eq. C( 1, M, K, L / 2 ) ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate ( A, B, C, A1 ) -end - -subroutine prf4602 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ) - integer, allocatable :: C( :, :, :, : ), D( :, :, :, : ) - character * 7 :: tname = 'PRF4602' - - !dvm$ distribute A( block, block, *, block ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ), D( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - isumc1 = 0 - isuma1 = 0 - !dvm$ remote_access ( GR1:A( N / 2, :, :, : ) ) - do j = 1, M - do ii = 1, K - do jj = 1, L - D( N / 2, j, ii, jj ) = A( N / 2, j, ii, jj ) - isumc1 = isumc1 + C( N / 2, j, ii, jj ) - isuma1 = isuma1 + D( N / 2, j, ii, jj ) - enddo - enddo - enddo - - isumc2 = 0 - isuma2 = 0 - !dvm$ remote_access ( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do ii = 1, K - do jj = 1, L - D( i, M / 2, ii, jj ) = A( i, M / 2, ii, jj ) - isumc2 = isumc2 + C( i, M / 2, ii, jj ) - isuma2 = isuma2 + D( i, M / 2, ii, jj ) - enddo - enddo - enddo - - isumc3 = 0 - isuma3 = 0 - !dvm$ remote_access ( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do jj = 1, L - D( i, j, K / 2, jj ) = A( i, j, K / 2, jj ) - isumc3 = isumc3 + C( i, j, K / 2, jj ) - isuma3 = isuma3 + D( i, j, K / 2, jj ) - enddo - enddo - enddo - - isumc4 = 0 - isuma4 = 0 - !dvm$ remote_access ( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - D( i, j, ii, L / 2 ) = A( i, j, ii, L / 2 ) - isumc4 = isumc4 + C( i, j, ii, L / 2 ) - isuma4 = isuma4 + D( i, j, ii, L / 2 ) - enddo - enddo - enddo - - if ( ( isumc1 .eq. isuma1 ) .and. ( isumc2 .eq. isuma2 ) .and. & - ( isumc3 .eq. isuma3 ) .and. ( isumc4 .eq. isuma4 ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C, D ) -end - -subroutine prf4603 - integer, parameter :: N = 16, M = 8, K = 8, L = 16, NL = 1000, NIT = 3 - integer, allocatable :: A( :, :, :, : ), B( :, :, :, : ), C( :, :, :, : ) - character * 7 :: tname = 'PRF4603' - - !dvm$ distribute A( block, *, block, block ) - !dvm$ align( :, :, :, : ) with A( :, :, :, : ) :: B - - !dvm$ remote_group GR1 - !dvm$ remote_group GR2 - !dvm$ remote_group GR3 - - allocate ( A( N, M, K, L ), B( N, M, K, L ), C( N, M, K, L ) ) - call serial4( C, N, M, K, L, NL ) - - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - A( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo - - do it = 1, NIT - !dvm$ prefetch GR1 - !dvm$ prefetch GR2 - !dvm$ prefetch GR3 - - nloopi1 = NL - nloopj1 = NL - nloopii1 = NL - nloopjj1 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR1:A( N / 2, M / 2, K / 2, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, M / 2, K / 2, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi1 ), min( nloopj1 ), min( nloopii1 ), min( nloopjj1 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, M / 2, K / 2, L / 2 ) ) then - nloopi1 = min( nloopi1, i ) - nloopj1 = min( nloopj1, j ) - nloopii1 = min( nloopii1, ii ) - nloopjj1 = min( nloopjj1, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi2 = NL - nloopj2 = NL - nloopii2 = NL - nloopjj2 = NL - !dvm$ parallel ( i, j, ii, jj ) on A( i, j, ii, jj ), remote_access( GR2:A( N / 2, :, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( N / 2, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi2 ), min( nloopj2 ), min( nloopii2 ), min( nlooopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( N / 2, j, ii, jj ) ) then - nloopi2 = min( nloopi2, i ) - nloopj2 = min( nloopj2, j ) - nloopii2 = min( nloopii2, ii ) - nloopjj2 = min( nloopjj2, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi3 = NL - nloopj3 = NL - nloopii3 = NL - nloopjj3 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR2:A( :, M / 2, :, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, M / 2, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi3 ), min( nloopj3 ), min( nloopii3 ), min( nloopjj3 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, M / 2, ii, jj ) ) then - nloopi3 = min( nloopi3, i ) - nloopj3 = min( nloopj3, j ) - nloopii3 = min( nloopii3, ii ) - nloopjj3 = min( nloopjj3, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi4 = NL - nloopj4 = NL - nloopii4 = NL - nloopjj4 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, K / 2, : ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, K / 2, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi4 ), min( nloopj4 ), min( nloopii4 ), min( nloopjj4 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, K / 2, jj ) ) then - nloopi4 = min( nloopi4, i ) - nloopj4 = min( nloopj4, j ) - nloopii4 = min( nloopii4, ii ) - nloopjj4 = min( nloopjj4, jj ) - endif - enddo - enddo - enddo - enddo - - nloopi5 = NL - nloopj5 = NL - nloopii5 = NL - nloopjj5 = NL - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), remote_access( GR3:A( :, :, :, L / 2 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - B( i, j, ii, jj ) = A( i, j, ii, L / 2 ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( i, j, ii, jj ) on B( i, j, ii, jj ), reduction( min( nloopi5 ), min( nloopj5 ), min( nloopii5 ), min( nloopjj5 ) ) - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - if ( B( i, j, ii, jj ) .ne. C( i, j, ii, L / 2 ) ) then - nloopi5 = min( nloopi5, i ) - nloopj5 = min( nloopj5, j ) - nloopii5 = min( nloopii5, ii ) - nloopjj5 = min( nloopjj5, jj ) - endif - enddo - enddo - enddo - enddo - - if ( ( nloopi1 .eq. NL ) .and. ( nloopi2 .eq. NL ) .and. & - ( nloopi3 .eq. NL ) .and. ( nloopi4 .eq. NL ) .and. & - ( nloopi5 .eq. NL ) ) then - call ansyes( tname ) - else - call ansno( tname ) - endif - - if ( it .eq. 2 ) cycle - - !dvm$ reset GR1 - !dvm$ reset GR2 - !dvm$ reset GR3 - enddo - deallocate( A, B, C ) -end - -subroutine serial4( AR, N, M, K, L, NL ) - integer AR( N, M, K, L ) - integer NL - do i = 1, N - do j = 1, M - do ii = 1, K - do jj = 1, L - AR( i, j, ii, jj ) = NL + i + j + ii + jj - enddo - enddo - enddo - enddo -end - -subroutine ansyes( name ) - character * 7 name - print *, name, ' - complete' -end - -subroutine ansno( name ) - character * 7 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/settings deleted file mode 100644 index 3ef2d72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/PREFETCH/settings +++ /dev/null @@ -1 +0,0 @@ -DVM_ONLY=1 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign11.fdv deleted file mode 100644 index d455fdd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign11.fdv +++ /dev/null @@ -1,559 +0,0 @@ - program REALIGN11 - -c Testing REALIGN directive - - print *,'===START OF realign11========================' -C -------------------------------------------------- -C 111 ALIGN arrB(i) WITH arrA(i) REALIGN arrB(i) WITH arrA(2*i+8) - call realign111 -C -------------------------------------------------- -C 112 ALIGN arrB(i) WITH arrA(i+4) REALIGN arrB(i) WITH arrA(i+8) - call realign112 -C -------------------------------------------------- -C 112r ALIGN arrB(i) WITH arrA(i+4) REALIGN arrB(i) WITH arrA(-i+8) -c call realign112r -C -------------------------------------------------- -C 113 ALIGN arrB(i) WITH arrA(3*i-2) REALIGN arrB(i) WITH arrA(2*i+1) - call realign113 -C -------------------------------------------------- -C 113r ALIGN arrB(i) WITH arrA(-i+8) REALIGN arrB(i) WITH arrA(3*i-2) -c call realign113r -C -------------------------------------------------- -C 114 ALIGN arrB(i) WITH arrA(2*i+8) REALIGN arrB(i) WITH arrA(i) - call realign114 -C -------------------------------------------------- -C 115 ALIGN arrB(*) WITH arrA(*) REALIGN arrB(i) WITH arrA(i+4) - call realign115 -C -------------------------------------------------- -C 116 ALIGN arrB(i) WITH arrA(4*i-3) REALIGN arrB(i) WITH arrA(*) - call realign116 -C -------------------------------------------------- -C - print *,'=== END OF realign11 ========================= ' - end - -C ----------------------------------------------------realign111 - -C 111 ALIGN arrB(i) WITH arrA(i) REALIGN arrB(i) WITH arrA(2*i+8) - subroutine realign111 - integer, parameter :: AN1=25,BN1=8,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=1,li=0 -c parameters for REALIGN - integer, parameter :: kr1i=2,lri=8 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign111' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - -!dvm$ region out(A1,B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) = 0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region inlocal(A1,B1) -!dvm$ parallel (i) on B1(i), private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= i) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= ia) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign111 -C ----------------------------------------------------realign112 - -C 112 ALIGN arrB(i) WITH arrA(i+4) REALIGN arrB(i) WITH arrA(i+8) - subroutine realign112 - integer, parameter :: AN1=16,BN1=4,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=1,li=4 -c parameters for REALIGN - integer, parameter :: kr1i=1,lri=8 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign112' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - - B1 = 1 - -!dvm$ actual (B1) - -!dvm$ region inout (B1), out(A1) -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i * 2 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = B1(ib) + ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= i+1) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= ia*2) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign112 -C ----------------------------------------------------realign112r -C 112r ALIGN arrB(i) WITH arrA(i+4) REALIGN arrB(i) WITH arrA(-i+8) - subroutine realign112r - integer, parameter :: AN1=16,BN1=4,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=1,li=4 -c parameters for REALIGN - integer, parameter :: kr1i=-1,lri=8 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign112r' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - - B1 = 1 - -!dvm$ actual (B1) - -!dvm$ region inout (B1), out(A1) -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i * 2 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = B1(ib) + ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= i+1) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= ia*2) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign112r -C ----------------------------------------------------realign113 -C 113 ALIGN arrB(i) WITH arrA(3*i-2) REALIGN arrB(i) WITH arrA(2*i+1) - subroutine realign113 - integer, parameter :: AN1=30,BN1=6,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=3,li=-2 -c parameters for REALIGN - integer, parameter :: kr1i=2,lri=1 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign113' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - -!dvm$ region -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) = 5 - enddo - -!dvm$ end region - -!dvm$ region in(B1), out(A1,B1) -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i + 3 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = B1(ib) + ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= (i+5)) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= (ia+3)) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end subroutine realign113 -C ----------------------------------------------------realign113r -C 113r ALIGN arrB(i) WITH arrA(-i+8) REALIGN arrB(i) WITH arrA(3*i-2) - subroutine realign113r - integer, parameter :: AN1=30,BN1=6,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=-1,li=8 -c parameters for REALIGN - integer, parameter :: kr1i=3,lri=-2 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign113r' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - -!dvm$ region -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) = 5 - enddo - -!dvm$ end region - -!dvm$ region in(B1), out(A1,B1) -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i + 3 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = B1(ib) + ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= (i+5)) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= (ia+3)) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B1,A1) - - end subroutine realign113r -C ----------------------------------------------------realign114 -C 114 ALIGN arrB(i) WITH arrA(2*i+8) REALIGN arrB(i) WITH arrA(i) - subroutine realign114 - integer, parameter :: AN1=24,BN1=8,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=2,li=8 -c parameters for REALIGN - integer, parameter :: kr1i=1,lri=0 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign114' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - -!dvm$ region out(A1, B1) -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) = 0 - enddo - -!dvm$ parallel (i) on A1(i), private(ib) - do i=1,AN1 - A1(i) = i - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - B1(ib) = ib - endif - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), reduction(min(erria),min(errib)), -!dvm$* private(ia) - do i=1,BN1 - if (B1(i) /= (i)) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= (ia)) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign114 -C ----------------------------------------------------realign115 -C 115 ALIGN arrB(*) WITH arrA(*) REALIGN arrB(i) WITH arrA(i+4) - subroutine realign115 - integer, parameter :: AN1=24,BN1=8,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=0,li=0 -c parameters for REALIGN - integer, parameter :: kr1i=1,lri=4 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign115' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(*) WITH A1(*) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - - do i=1,BN1 - B1(i) = i+4 - enddo - -!dvm$ region -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = (i+1) ** 2 - enddo -!dvm$ end region - -!dvm$ REALIGN B1(i) WITH A1(kr1i * i + lri) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), -!dvm$* private(ia), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - if (B1(i) /= (i+4)) then - errib = min(errib,i) - endif - ia=kr1i * i + lri - if (A1(ia) /= (ia+1)**2) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign115 -C ----------------------------------------------------realign116 -C 116 ALIGN arrB(i) WITH arrA(4*i-3) REALIGN arrB(i) WITH arrA(*) - subroutine realign116 - integer, parameter :: AN1=36,BN1=8,NL=1000,ER=10000 - integer :: erria = ER, errib = ER -c parameters for ALIGN - integer, parameter :: k1i=4,li=-3 -c parameters for REALIGN - integer, parameter :: kr1i=0,lri=0 - integer, allocatable :: A1(:),B1(:) - character(*), parameter :: tname = 'realign116' - -!dvm$ distribute A1(BLOCK) -!dvm$ ALIGN B1(i) WITH A1(k1i * i + li) -!dvm$ DYNAMIC B1 - - allocate (A1(AN1),B1(BN1)) - -!dvm$ region -!dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) = i+6 - enddo - -!dvm$ parallel (i) on A1(i) - do i=1,AN1 - A1(i) = (i+1) ** 3 - enddo -!dvm$ end region - -!dvm$ REALIGN B1(*) WITH A1(*) - -!dvm$ actual(erria, errib) - -!dvm$ region -!dvm$ parallel (i) on B1(i), reduction(min(errib)) - do i=1,BN1 - if (B1(i) /= (i+6)) then - errib = min(errib,i) - endif - enddo -!dvm$ parallel (i) on A1(i),reduction(min(erria)) - do i=1,AN1 - if (A1(i) /= ((i+1)**3)) then - erria = min(erria,i) - endif - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B1,A1) - - end subroutine realign116 -C ------------------------------------------------- - - - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign22.fdv deleted file mode 100644 index 5db0f1f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign22.fdv +++ /dev/null @@ -1,483 +0,0 @@ - program REALIGN22 - -c Testing REALIGN directive - - print *,'===START OF realign22====================' -C ------------------------------------------------- -c 221 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[i][j] WITH arrA[3*i-2][2*j+1] - call realign221 -C ------------------------------------------------- -c 222 ALIGN arrB[i][j] WITH arrA[j+1][i] REALIGN arrB[i][j] WITH arrA[i+4][j] - call realign222 -C ------------------------------------------------- -c 223 ALIGN arrB[i][*] WITH arrA[*][i] REALIGN arrB[i][j] WITH arrA[i+4][j+4] - call realign223 -C ------------------------------------------------- -c 224 ALIGN arrB[*][*] WITH arrA[*][1] REALIGN arrB[i][j] WITH arrA[i+4][j+4] shift along i and j - call realign224 -C ------------------------------------------------- -c 225 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[*][*] WITH arrA[*][2] - call realign225 -C ------------------------------------------------- -c 226 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[i][j] WITH arrA[2*j+1][3*i-2] - call realign226 -C ------------------------------------------------- -C - print *,'=== END OF realign22 ====================' -C - end -C ----------------------------------------------------realign221 -c 221 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[i][j] WITH arrA[3*i-2][2*j+1] - subroutine realign221 - integer, parameter :: AN1=10,AN2=10,BN1=4,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=1,lj=0 -c parameters for REALIGN arrB[i][j] WITH arrA[kr1i * i + lri][kr2j * j + lrj] - integer, parameter :: kr1i=3,kr2i=0,lri=-2,kr1j=0,kr2j=2,lrj=1 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign221' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) = 0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(i,j) WITH A2(kr1i * i + lri,kr2j * j + lrj) - -!dvm$ actual(erria,errib) -!dvm$ region in(A2,B2), out(A2,B2) -!dvm$ parallel (i,j) on B2(i,j), private(ia,ja), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j)) then - errib = min(errib,i*NL/10+j) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - if (A2(ia,ja) /= (ia*NL+ja)) then - erria = min(erria,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B2,A2) - - end - -C ----------------------------------------------------realign222 -c 222 ALIGN arrB[i][j] WITH arrA[j+1][i] REALIGN arrB[i][j] WITH arrA[i+4][j] - subroutine realign222 - integer, parameter :: AN1=8,AN2=8,BN1=4,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[i][j] WITH arrA[k2i * j + li][k1j * i + lj] - integer, parameter :: k1i=0,k2i=1,li=1,k1j=1,k2j=0,lj=0 -c parameters for REALIGN arrB[i][j] WITH arrA[kr1i * i + lri][kr2j * j + lrj] - integer, parameter :: kr1i=1,kr2i=0,lri=0,kr1j=0,kr2j=1,lrj=0 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign222' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k2i * j + li,k1j * i + lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) = 1 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = (i*NL+j)*2 - if (((i-li) .eq.(((i-li)/k2i) * k2i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((i-li)/k2i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((i-li)/k2i) .le. BN2) .and. - * (((j-lj)/k1j) .le. BN1)) then - ib = (j-lj)/k1j - jb = (i-li)/k2i - B2(ib,jb) = B2(ib,jb) + ib*NL+jb - endif - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(i,j) WITH A2(kr1i * i + lri,kr2j * j + lrj) - -!dvm$ actual(erria,errib) -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j), -!dvm$* reduction(min(erria),min(errib)), -!dvm$* private(ia,ja) - - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j+1)) then - errib = min(errib,i*NL/10+j) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - if (A2(ia,ja) /= (ia*NL+ja)*2) then - erria = min(erria,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria,eriib) - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B2,A2) - - end - -C ----------------------------------------------------realign223 -c 223 ALIGN arrB[i][*] WITH arrA[*][i] REALIGN arrB[i][j] WITH arrA[i+4][j+4] - subroutine realign223 - integer, parameter :: AN1=10,AN2=10,BN1=4,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[i][*] WITH arrA[*][k1j*i + lj] - integer, parameter :: k1i=0,k2i=0,li=0,k1j=1,k2j=0,lj=0 -c parameters for REALIGN arrB[i][j] WITH arrA[kr1i * i + lri][kr2j * j + lrj] - integer, parameter :: kr1i=1,kr2i=0,lri=4,kr1j=0,kr2j=1,lrj=4 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign223' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,*) WITH A2(*,k1j * i + lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - - B2 = 0 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,k) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - do k=1,BN2 - if ( - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((j-lj)/k1j) .le. BN1) - * ) then - ib = ((j-lj)/k1j) - jb = k -! B2(ib,jb) = B2(ib,jb) + ib*NL+jb - B2(ib,jb) = ib*NL+jb+5 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(i,j) WITH A2(kr1i * i + lri,kr2j * j + lrj) - -!dvm$ actual(erria,errib) -!dvm$ region in(A2,B2), local(A2,B2) -!dvm$ parallel (i,j) on B2(i,j), private(ia,ja), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j+5)) then - errib = min(errib,i*NL/10+j) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - if (A2(ia,ja) /= (ia*NL+ja)) then - erria = min(erria,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) -! print *,erria, errib - endif - - deallocate (B2,A2) - - end - -C ----------------------------------------------------realign224 -c 224 ALIGN arrB[*][*] WITH arrA[*][1] REALIGN arrB[i][j] WITH arrA[i+4][j+4] - subroutine realign224 - integer, parameter :: AN1=10,AN2=10,BN1=4,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[*][*] WITH arrA[*][lj] - integer, parameter :: k1i=0,k2i=0,li=0,k1j=0,k2j=0,lj=1 -c parameters for REALIGN arrB[i][j] WITH arrA[kr1i * i + lri][kr2j * j + lrj] - integer, parameter :: kr1i=1,kr2i=0,lri=4,kr1j=0,kr2j=1,lrj=4 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign224' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(*,*) WITH A2(*,lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - - B2 = 0 - -!dvm$ region -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb,k,n) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j+3 - if (j == (lj)) then - do k=1,BN1 - do n=1,BN2 - ib = k - jb = n -! B2(ib,jb) = B2(ib,jb) + (ib*NL+jb)*2 - B2(ib,jb) = (ib*NL+jb)*2 - enddo - enddo - endif - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(i,j) WITH A2(kr1i * i + lri,kr2j * j + lrj) - -!dvm$ actual(erria,errib) -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j), private(ia,ja), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j)*2) then - errib = min(errib,i*NL/10+j) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - if (A2(ia,ja) /= (ia*NL+ja+3)) then - erria = min(erria,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) -! print *,erria, errib - endif - - deallocate (B2,A2) - - end - -C ----------------------------------------------------realign225 -c 225 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[*][*] WITH arrA[*][2] - subroutine realign225 - integer, parameter :: AN1=10,AN2=10,BN1=4,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=0,k1j=0,k2j=1,lj=0 -c parameters for REALIGN arrB[*][*] WITH arrA[*][lrj] - integer, parameter :: kr1i=0,kr2i=0,lri=0,kr1j=0,kr2j=0,lrj=2 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign225' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) = 0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = i*NL+j - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(*,*) WITH A2(*,lrj) - -!dvm$ actual(errib) -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j), reduction( min( errib ) ) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j)) then - errib = min(errib,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(errib) - if (errib == ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B2,A2) - - end -C ----------------------------------------------------realign226 -c 226 ALIGN arrB[i][j] WITH arrA[i][j] REALIGN arrB[i][j] WITH arrA[2*j+1][3*i-2] - subroutine realign226 - integer, parameter :: AN1=16,AN2=18,BN1=6,BN2=4,NL=1000,ER=10000 - integer :: erria=ER, errib=ER - integer :: i,j,ia,ja,ib,jb -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,li=0,k2j=1,lj=0 -c parameters for REALIGN arrB[i][j] WITH arrA[kr1i * i + lri][kr2j * j + lrj] - integer, parameter :: kr1i=3,lri=-2,kr2j=2,lrj=1 - integer, allocatable :: A2(:,:),B2(:,:) - character(10) :: tname = 'realign226' - -!dvm$ distribute A2(BLOCK,BLOCK) -!dvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) -!dvm$ DYNAMIC B2 - - allocate (A2(AN1,AN2),B2(BN1,BN2)) - -!dvm$ region -!dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) = 0 - enddo - enddo - -!dvm$ parallel (i,j) on A2(i,j), private(ib,jb) - do i=1,AN1 - do j=1,AN2 - A2(i,j) = (i*NL+j) * 3 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - B2(ib,jb) = ib*NL+jb - endif - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B2(i,j) WITH A2(kr2j * j + lrj,kr1i * i + lri) - -!dvm$ actual(erria,errib) -!dvm$ region inlocal(A2,B2) -!dvm$ parallel (i,j) on B2(i,j), private(ia,ja), -!dvm$* reduction(min(erria),min(errib)) - do i=1,BN1 - do j=1,BN2 - if (B2(i,j) /= (i*NL+j)) then - errib = min(errib,i*NL/10+j) - endif - ia=kr2j * j + lrj - ja=kr1i * i + lri - if (A2(ia,ja) /= (ia*NL+ja)*3) then - erria = min(erria,i*NL/10+j) - endif - enddo - enddo -!dvm$ end region - -!dvm$ get_actual(erria,errib) - if ((erria == ER) .and. (errib == ER)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B2,A2) - - end - -C --------------------------------------------------- - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign33.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign33.fdv deleted file mode 100644 index 95cd2bd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign33.fdv +++ /dev/null @@ -1,697 +0,0 @@ - program REALIGN33 - -! Testing ALIGN and REALIGN directives - - print *,'===START OF realign33========================' - -! -------------------------------------------------- -! 331 ALIGN arrB3(i,j,n) WITH arrA3(i,j,n) -! REALIGN arrB3(i,j,n) WITH arrA3(i+1,j+2,n+3) - - call realign331 -! -------------------------------------------------- -! 332 ALIGN arrB3(i,j,n) WITH arrA3(i,j,n) -! REALIGN arrB3(i,j,n) WITH arrA3(2*i,3*j,5*n) - - call realign332 -! -------------------------------------------------- -! 333 ALIGN arrB3(i,j,n) WITH arrA3(i+2,j+4,n+3) -! REALIGN arrB3(i,j,n) WITH arrA3(2*i-1,2*n,j+1) - - call realign333 -! -------------------------------------------------- -! 334 ALIGN arrB3(i,j,n) WITH arrA3(n+1,3*i+1,j+2) -! REALIGN arrB3(i,j,n) WITH arrA3(2*j,i+1,2*n+1) - - call realign334 -! -------------------------------------------------- -! 335 ALIGN arrB3(*,*,*) WITH arrA3(*,*,*) -! REALIGN arrB3(i,j,n) WITH arrA3(i,j,n) - - call realign335 -! -------------------------------------------------- -! 336 ALIGN arrB3(i,j,n) WITH arrA3(i,j+1,2*n+1) -! REALIGN arrB3(*,j,n) WITH arrA3(j+1,n,1) - - call realign336 -! ------------------------------------------------- -! - print *,'=== END OF realign33 ========================= ' - - end - -! ----------------------------------------------------realign331 -! 331 ALIGN arrB3(i,j,n) WITH arrA3(i,j,n) -! REALIGN arrB3(i,j,n) WITH arrA3(i+1,j+2,n+3) - - subroutine realign331 - integer, parameter :: AN1=10,AN2=10,AN3=10,BN1=9,BN2=8,BN3=6 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=1, li=0 - integer, parameter :: k2j=1, lj=0 - integer, parameter :: k3n=1, ln=0 -! parameters for REALIGN - integer, parameter :: kr1i=1, lri=1 - integer, parameter :: kr2j=1, lrj=2 - integer, parameter :: kr3n=1, lrn=3 - - integer :: erria = ER, errib = ER - integer s,cs,i,j,n,ia,ja,na,ib,jb,nb - - integer, allocatable :: A3(:,:,:),B3(:,:,:) - character(*), parameter :: tname ='realign331' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) -!dvm$ DYNAMIC B3 - - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - -!dvm$ region out(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) = 0 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n)=i*NL/10+j*NL/100+n*NL/1000 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) * k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B3(i,j,n) WITH A3(kr1i*i+lri,kr2j*j+lrj,kr3n*n+lrn) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region inlocal(A3,B3) -!dvm$ parallel (i,j,n) on B3(i,j,n), -!dvm$*reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000)) then - errib = min(errib,i*NL/10 + j*NL/100 + n*NL/1000) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - na=kr3n * n + lrn - if (A3(ia,ja,na) /= (ia*NL/10+ja*NL/100+na*NL/1000)) - * then - erria = min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - if ((erria == ER) .and. (errib == ER) - * .and. (s == cs)) then - call ansyes(tname) - else - call ansno(tname) -! write (*,*) erria,errib,s,cs - endif - - deallocate (B3,A3) - - end subroutine realign331 - -! ----------------------------------------------------realign332 -! 332 ALIGN arrB3(i,j,n) WITH arrA3(i,j,n) -! REALIGN arrB3(i,j,n) WITH arrA3(2*i,3*j,5*n) - - subroutine realign332 - integer, parameter :: AN1=12,AN2=16,AN3=25,BN1=4,BN2=3,BN3=5 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=1, li=0 - integer, parameter :: k2j=1, lj=0 - integer, parameter :: k3n=1, ln=0 -! parameters for REALIGN - integer, parameter :: kr1i=2, lri=0 - integer, parameter :: kr2j=3, lrj=0 - integer, parameter :: kr3n=5, lrn=0 - - integer :: erria = ER, errib = ER - integer s,cs,i,j,n,ia,ja,na,ib,jb,nb - - integer, allocatable :: A3(:,:,:),B3(:,:,:) - character(*), parameter :: tname ='realign332' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) -!dvm$ DYNAMIC B3 - - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - - A3 = 0 - B3 = 0 - -!dvm$ region inout(A3,B3) -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n)=i*NL/10+j*NL/100+n*NL/1000 + 10 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 + 5 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B3(i,j,n) WITH A3(kr1i*i+lri, kr2j*j+lrj, kr3n*n+lrn) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region inlocal(A3),inlocal(B3) -!dvm$ parallel (i,j,n) on B3(i,j,n), -!dvm$*reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000) + 5) then - errib = min(errib,i*NL/10 + j*NL/100 + n*NL/1000) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - na=kr3n * n + lrn - if (A3(ia,ja,na) /= (ia*NL/10+ja*NL/100+na*NL/1000)+10) - * then - erria = min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 5 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - if ((erria == ER) .and. (errib == ER) - * .and. (s == cs)) then - call ansyes(tname) - else - call ansno(tname) -! write (*,*) erria,errib,s,cs -! print *,B3 - endif - - deallocate (B3,A3) - - end subroutine realign332 - -! --------------------------------------------------realign333 -! 333 ALIGN arrB3(i,j,n) WITH arrA3(i+2,j+4,n+3) -! REALIGN arrB3(i,j,n) WITH arrA3(2*i-1,2*n,j+1) - - subroutine realign333 - integer, parameter :: AN1=12,AN2=16,AN3=25,BN1=4,BN2=3,BN3=5 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=1, li=2 - integer, parameter :: k2j=1, lj=4 - integer, parameter :: k3n=1, ln=3 -! parameters for REALIGN - integer, parameter :: kr1i=2, lri=-1 - integer, parameter :: kr2j=1, lrj=1 - integer, parameter :: kr3n=2, lrn=0 - - integer :: erria = ER, errib = ER - integer s,cs,i,j,n,ia,ja,na,ib,jb,nb - - integer A3(AN1,AN2,AN3) - integer, allocatable :: B3(:,:,:) - character(*), parameter :: tname ='realign333' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) -!dvm$ DYNAMIC B3 - - allocate (B3(BN1,BN2,BN3)) - - A3 = 1 - B3 = 2 - -!dvm$ region inout(A3),inout(B3) -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n)+ i*NL/10+j*NL/100+n*NL/1000 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb) = B3(ib,jb,nb) + - * ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B3(i,j,n) WITH A3(kr1i*i+lri, kr3n*n+lrn, kr2j*j+lrj) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region -!dvm$ parallel (i,j,n) on B3(i,j,n), private(ia,ja,na), -!dvm$*reduction(min(erria),min(errib),sum(s)) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000) + 2) then - errib = min(errib,i*NL/10 + j*NL/100 + n*NL/1000) - endif - ia=kr1i * i + lri - ja=kr3n * n + lrn - na=kr2j * j + lrj - if (A3(ia,ja,na) /= (ia*NL/10+ja*NL/100+na*NL/1000)+1) - * then - erria = min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 2 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - if ((erria == ER) .and. (errib == ER) - * .and. (s == cs)) then - call ansyes(tname) - else - call ansno(tname) -! write (*,*) erria,errib,s,cs -! print *,B3 - endif - - deallocate (B3) - - end subroutine realign333 - -! ----------------------------------------------------realign334 -! 334 ALIGN arrB3(i,j,n) WITH arrA3(n+1,3*i+1,j+2) -! REALIGN arrB3(i,j,n) WITH arrA3(2*j,i+1,2*n+1) - - subroutine realign334 - integer, parameter :: AN1=15,AN2=28,AN3=20,BN1=4,BN2=6,BN3=6 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=3, li=1 - integer, parameter :: k2j=1, lj=2 - integer, parameter :: k3n=1, ln=1 -! parameters for REALIGN - integer, parameter :: kr1i=1, lri=1 - integer, parameter :: kr2j=2, lrj=0 - integer, parameter :: kr3n=2, lrn=1 - - integer :: erria = ER, errib = ER - integer s,cs,i,j,n,ia,ja,na,ib,jb,nb - - integer A3(AN1,AN2,AN3),B3(BN1,BN2,BN3) - character(*), parameter :: tname ='realign334' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k3n*n+ln,k1i*i+li,k2j*j+lj) -!dvm$ DYNAMIC B3 - - A3 = 0 - B3 = 0 - -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10+j*NL/100+n*NL/1000 - if ( - * ((i-ln) .eq.(((i-ln)/k3n) * k3n)) .and. - * ((j-li) .eq.(((j-li)/k1i) * k1i)) .and. - * ((n-lj) .eq.(((n-lj)/k2j) * k2j)) .and. - * (((i-ln)/k3n) .gt. 0) .and. - * (((j-li)/k1i) .gt. 0) .and. - * (((n-lj)/k2j) .gt. 0) .and. - * (((i-ln)/k3n) .le. BN3) .and. - * (((j-li)/k1i) .le. BN1) .and. - * (((n-lj)/k2j) .le. BN2) - * ) then - ib = (j-li)/k1i - jb = (n-lj)/k2j - nb = (i-ln)/k3n - B3(ib,jb,nb) = B3(ib,jb,nb) + - * ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B3(i,j,n) WITH A3(kr2j*j+lrj, kr1i*i+lri, kr3n*n+lrn) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region -!dvm$ parallel (i,j,n) on B3(i,j,n), -!dvm$*reduction(min(erria),min(errib),sum(s)), -!dvm$*private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000)) then - errib = min(errib,i*NL/10 + j*NL/100 + n*NL/1000) - endif - ia=kr2j * j + lrj - ja=kr1i * i + lri - na=kr3n * n + lrn - if (A3(ia,ja,na) /= (ia*NL/10+ja*NL/100+na*NL/1000)) then - erria = min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000) -! print *, ia, ja, na - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - if ((erria == ER) .and. (errib == ER) - * .and. (s == cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end subroutine realign334 - -! ----------------------------------------------------realign335 -! 335 ALIGN arrB3(*,*,*) WITH arrA3(*,*,*) -! REALIGN arrB3(i,j,n) WITH arrA3(i,j,n) - - subroutine realign335 - integer, parameter :: AN1=10,AN2=10,AN3=10,BN1=4,BN2=8,BN3=4 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=0, li=0 - integer, parameter :: k2j=0, lj=0 - integer, parameter :: k3n=0, ln=0 -! parameters for REALIGN - integer, parameter :: kr1i=1, lri=0 - integer, parameter :: kr2j=1, lrj=0 - integer, parameter :: kr3n=1, lrn=0 - - integer :: erria = ER, errib = ER - integer s,cs,i,j,n,ia,ja,na,ib,jb,nb - - integer, allocatable :: A3(:,:,:),B3(:,:,:) - character(*), parameter :: tname = 'realign335' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(*,*,*) WITH A3(*,*,*) -!dvm$ DYNAMIC B3 - - allocate (A3(AN1,AN2,AN3), B3(BN1,BN2,BN3)) - - A3 = 0 - B3 = 6 - -!dvm$ actual (A3,B3) -!dvm$ region -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = A3(i,j,n) + i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ parallel (i,j,n) on B3(i,j,n), private(ib,jb,nb) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - B3(i,j,n) = B3(i,j,n) + i*NL/10+j*NL/100+n*NL/1000 - enddo - enddo - enddo - -!dvm$ end region - -!dvm$ REALIGN B3(i,j,n) WITH A3(kr1i*i+lri, kr2j*j+lrj, kr3n*n+lrn) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region inlocal(A3) -!dvm$ parallel (i,j,n) on B3(i,j,n), -!dvm$* reduction(min(erria),min(errib),sum(s)),private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000)+ 6) then - errib = min(errib,i*NL/10 + j*NL/100 + n*NL/1000) - endif - ia=kr1i * i + lri - ja=kr2j * j + lrj - na=kr3n * n + lrn - if (A3(ia,ja,na) /= (ia*NL/10+ja*NL/100+na*NL/1000)) then - erria = min(erria,ia*NL/10 + ja*NL/100 + na*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100 + n*NL/1000 + 6 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - if ((erria == ER) .and. (errib == ER) - * .and. (s == cs)) then - call ansyes(tname) - else - call ansno(tname) -! write (*,*) erria,errib,s,cs -! print *,B3 - endif - - deallocate (B3,A3) - - end subroutine realign335 - -! ----------------------------------------------------realign336 -! 336 ALIGN arrB3(i,j,n) WITH arrA3(i,j+1,2*n+1) -! REALIGN arrB3(*,j,n) WITH arrA3(j+1,n,1) - - subroutine realign336 - integer, parameter :: AN1=8,AN2=8,AN3=8 - integer, parameter :: BN1=3,BN2=4,BN3=3 - integer, parameter :: NL=10000,ER=100000 -! parameters for ALIGN - integer, parameter :: k1i=1,li=0 - integer, parameter :: k2j=1,lj=1 - integer, parameter :: k3n=2,ln=1 -! parameters for REALIGN - integer, parameter :: kr1i=0,lri=1 - integer, parameter :: kr2j=1,lrj=1 - integer, parameter :: kr3n=1,lrn=0 - integer, allocatable :: A3(:,:,:),B3(:,:,:) - integer :: s,cs,erria = ER, errib = ER, - > i,j,n,m,ia,ja,na,ib,jb,nb - character(10) :: tname='realign336' - -!dvm$ distribute A3(BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B3(i,j,n) WITH A3(k1i*i+li,k2j*j+lj,k3n*n+ln) -!dvm$ DYNAMIC B3 - - allocate (A3(AN1,AN2,AN3),B3(BN1,BN2,BN3)) - - B3 = 0 - -!dvm actual (B3) -!dvm$ region inout(B3), inout(A3) -!dvm$ parallel (i,j,n) on A3(i,j,n), private(ib,jb,nb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - A3(i,j,n) = i*NL/10+j*NL/100+n*NL/1000 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - B3(ib,jb,nb)=ib*NL/10+jb*NL/100+nb*NL/1000 - endif - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B3(*,j,n) WITH A3(kr2j*j+lrj,kr3n*n+lrn,lri) - - s=0 - -!dvm$ actual(erria, errib, s) -!dvm$ region -!dvm$ parallel (i,j,n) on B3(i,j,n), -!dvm$* reduction(min(erria), min(errib), sum(s)) -!dvm$*,private(ia,ja,na) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - s = s + B3(i,j,n) - if (B3(i,j,n) /= (i*NL/10+j*NL/100+n*NL/1000))then - errib = min(errib,i*NL/10 + j*NL/100+ n*NL/1000) - endif - ia=kr2j*j+lrj - ja=kr3n*n+lrn - na=lri - if (A3(ia,ja,na)/= - * (ia*NL/10+ja*NL/100+na*NL/1000))then - erria = min(erria,i*NL/10 + j*NL/100+ n*NL/1000) - endif - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000 - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - - - if ((erria == ER) .and. (errib == ER) .and. - * (s == cs)) then - call ansyes(tname) - else - call ansno(tname) -! print *, erria, errib - endif - - deallocate (B3,A3) - - end - -! ---------------------------------------------------- - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign44.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign44.fdv deleted file mode 100644 index e55a9bd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REALIGN/realign44.fdv +++ /dev/null @@ -1,557 +0,0 @@ - program REALIGN44 - -c Testing REALIGN directive - - print *,'===START OF realign44====================' -C -------------------------------------------------- -c 441 ALIGN arrB[i][j][n][m] WITH arrA[i][j][n][m] -c REALIGN arrB[][j][k][] WITH arrA[j][k][1][3] - call realign441 -C ------------------------------------------------- -c 442 ALIGN arrB[][j][n][i] WITH arrA[i][j][ ][n] -c REALIGN arrB[i][j][ ][m] WITH arrA[i][j][2][m] - call realign442 -C -------------------------------------------------- -c 443 ALIGN arrB[i][j][n][m] WITH arrA[i][2*j][3*n][4*m] -c REALIGN arrB[i][j][n][m] WITH arrA[i+1][j+2][n+3][m+4] - call realign443 -C ------------------------------------------------- -c 444 ALIGN arrB[i][j][n][m] WITH arrA[m][i+1][j][2*n] -c REALIGN arrB[i][j][n][m] WITH arrA[i+2][3*j-2][2*n-2][m+1] - call realign444 -C ------------------------------------------------- -C - print *,'=== END OF realign44 ====================' - - end - -C ----------------------------------------------------realign441 -c 441 ALIGN arrB[i][j][n][m] WITH arrA[i][j][n][m] -c REALIGN arrB[][j][n][] WITH arrA[j][n][1][3] - - subroutine realign441 - integer, parameter :: AN1=6,AN2=8,AN3=5,AN4=7 - integer, parameter :: BN1=2,BN2=5,BN3=4,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,li=0 - integer, parameter :: k2j=1,lj=0 - integer, parameter :: k3n=1,ln=0 - integer, parameter :: k4m=1,lm=0 -c parameters for REALIGN arrB[*][j][n][*] WITH arrA[kr2j*j+lrj][kr3n*n+lrn][lri][lrm] - integer, parameter :: kr1i=0,lri=1 - integer, parameter :: kr2j=1,lrj=0 - integer, parameter :: kr3n=1,lrn=0 - integer, parameter :: kr4m=0,lrm=3 - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer :: s=0,cs,erria=ER, errib=ER, - > i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - - character(10) :: tname='realign441' - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) -!dvm$ DYNAMIC B4 - - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - -!dvm$ region out(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) = 0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb, nb, mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) * k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) * k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B4(*,j,n,*) WITH A4(kr2j*j+lrj,kr3n*n+lrn,lri,lrm) - -!dvm$ actual(erria, errib, s) - -!dvm$ region - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), -!dvm$* reduction(min(erria),min(errib),sum(s)), -!dvm$* private(ia,ja, na, ma) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m)/= (i*NL/10+j*NL/100+n*NL/1000+m))then - errib = min(errib,i*NL/10+j*NL/100+n*NL/1000+m) - endif - ia=kr2j*j+lrj - ja=kr3n*n+lrn - na=lri - ma=lrm - if (A4(ia,ja,na,ma) /= - * (ia*NL/10+ja*NL/100+na*NL/1000+ma))then - erria = min(erria,ia*NL/10+ja*NL/100+na*NL/1000+ma) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - - if ((erria == ER) .and. (errib == ER) .and. - * (s == cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B4,A4) - - end - -C ----------------------------------------------------realign442 -c 442 ALIGN arrB[*][j][n][i] WITH arrA[i][j][*][n] -c REALIGN arrB[i][j][*][m] WITH arrA[i][j][2][m] - - subroutine realign442 - integer, parameter :: AN1=5,AN2=5,AN3=5,AN4=5 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[*][j][n][i] WITH arrA4(k1i*i+li,k2j*j+lj,*,k3m*n+lm) - integer, parameter :: k1i=1, li=0 - integer, parameter :: k2j=1, lj=0 - integer, parameter :: k3n=0, ln=0 - integer, parameter :: k3m=1, lm=0 -c parameters for REALIGN arrB[i][j][*][m] WITH arrA(kr1i*i+lri,kr2j*j+lrj,lrn,kr4m*m+lrm) - integer, parameter :: kr1i=1, lri=0 - integer, parameter :: kr2j=1, lrj=0 - integer, parameter :: kr3n=0, lrn=2 - integer, parameter :: kr4m=1, lrm=0 - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer :: s=0,cs,erria=ER, errib=ER, - > i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - character(10) :: tname='realign442' - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(*,j,n,i) WITH A4(k1i*i+li,k2j*j+lj,*,k3m*n+lm) -!dvm$ DYNAMIC B4 - - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - -!dvm$ region inout(A4, B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) = 0 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb, nb, mb,k) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m - do k = 1,BN1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((m-lm) .eq.(((m-lm)/k3m) *k3m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((m-lm)/k3m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN4) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((m-lm)/k3m) .le. BN3) - * ) then - mb = (i-li)/k1i - jb = (j-lj)/k2j - ib = k - nb = (m-lm)/k3m - B4(ib,jb,nb,mb)=ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B4(i,j,*,m) WITH A4(kr1i*i+lri,kr2j*j+lrj,lrn,kr4m*m+lrm) - -!dvm$ actual(erria, errib, s) - -!dvm$ region - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), -!dvm$* reduction(min(erria),min(errib),sum(s)), -!dvm$* private(ia,ja,na,ma) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m)) then - errib = min(errib,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - ia=kr1i*i+lri - ja=kr2j*j+lrj - na=lrn - ma=kr4m*m+lrm - if (A4(ia,ja,na,ma) /= - * (ia*NL/10+ja*NL/100+na*NL/1000+ma)) then - erria = min(erria,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m - enddo - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - - if ((erria == ER) .and. (errib == ER) .and. - * (s == cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B4,A4) - - end - -C ----------------------------------------------------realign443 -c 443 ALIGN arrB[i][j][n][m] WITH arrA[i][2*j][3*n][4*m] -c REALIGN arrB[i][j][n][m] WITH arrA[i+1][j+2][n+3][m+4] - - subroutine realign443 - integer, parameter :: AN1=10,AN2=8,AN3=15,AN4=12 - integer, parameter :: BN1=4,BN2=3,BN3=5,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA[k1i*i+li][k2j*j+lj][k3n*n+ln][k4m*m+lm] - integer, parameter :: k1i=1,li=0 - integer, parameter :: k2j=2,lj=0 - integer, parameter :: k3n=3,ln=0 - integer, parameter :: k4m=4,lm=0 -c parameters for REALIGN arrB[i][j][n][m] WITH arrA[kr1i*i+lri][kr2j*j+lrj][kr3n*n+lrn][kr4m*m+lrm] - integer, parameter :: kr1i=1,lri=1 - integer, parameter :: kr2j=1,lrj=2 - integer, parameter :: kr3n=1,lrn=3 - integer, parameter :: kr4m=1,lrm=4 - - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer :: s=0,cs,erria=ER, errib=ER, - > i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - - character(10) :: tname='realign443' - - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) -!dvm$ DYNAMIC B4 - - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - -!dvm$ region out(A4,B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) = 5 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib,jb, nb, mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = i*NL/10+j*NL/100+n*NL/1000+m+1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) * k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) * k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - B4(ib,jb,nb,mb)=B4(ib,jb,nb,mb)+ - * ib*NL/10+jb*NL/100+nb*NL/1000+mb - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B4(i,j,n,m) -!dvm$* WITH A4(kr1i*i+lri,kr2j*j+lrj,kr3n*n+lrn,kr4m*m+lrm) - -!dvm$ actual(erria, errib, s) - -!dvm$ region - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), -!dvm$* reduction(min(erria),min(errib),sum(s)), -!dvm$* private(ia,ja, na, ma) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m)/= (i*NL/10+j*NL/100+n*NL/1000+m+5)) - * then - errib = min(errib,i*NL/10+j*NL/100+n*NL/1000+m) - endif - ia=kr1i*i+lri - ja=kr2j*j+lrj - na=kr3n*n+lrn - ma=kr4m*m+lrm - if (A4(ia,ja,na,ma) /= - * (ia*NL/10+ja*NL/100+na*NL/1000+ma+1)) then - erria = min(erria,i*NL/10+j*NL/100+n*NL/1000+m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000 + m + 5 - enddo - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - - if ((erria == ER) .and. (errib == ER) .and. - * (s == cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B4,A4) - - end - -C ----------------------------------------------------realign444 -c 444 ALIGN arrB[i][j][n][m] WITH arrA[m][i+1][j][2*n] -c REALIGN arrB[i][j][n][m] WITH arrA[i+2][3*j-2][2*n-2][m+1] - - subroutine realign444 - integer, parameter :: AN1=12,AN2=15,AN3=16,AN4=10 - integer, parameter :: BN1=4,BN2=4,BN3=5,BN4=3 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k4m*m+lm,k1i*i+li,k2j*j+lj,k3n*n+ln) - integer, parameter :: k1i=1, li=1 - integer, parameter :: k2j=1, lj=0 - integer, parameter :: k3n=2, ln=0 - integer, parameter :: k4m=1, lm=0 -c parameters for REALIGN arrB[i][j][n][m] WITH arrA(kr1i*i+lri,kr2j*j+lrj,k3n*n+lrn,kr4m*m+lrm) - integer, parameter :: kr1i=1, lri=2 - integer, parameter :: kr2j=3, lrj=-2 - integer, parameter :: kr3n=2, lrn=-1 - integer, parameter :: kr4m=1, lrm=1 - - integer, allocatable :: A4(:,:,:,:),B4(:,:,:,:) - integer :: s=0,cs,erria=ER, errib=ER, - > i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb - character(10) :: tname='realign444' - -!dvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ ALIGN B4(i,j,n,m) WITH A4(k4m*m+lm,k1i*i+li,k2j*j+lj,k3n*n+ln) -!dvm$ DYNAMIC B4 - - allocate (A4(AN1,AN2,AN3,AN4),B4(BN1,BN2,BN3,BN4)) - -!dvm$ region inout(A4, B4) -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - B4(i,j,n,m) = 4 - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,n,m) on A4(i,j,n,m), private(ib, jb, nb, mb) - do i=1,AN1 - do j=1,AN2 - do n=1,AN3 - do m=1,AN4 - A4(i,j,n,m) = 10+i*NL/10+j*NL/100+n*NL/1000+m - if ( - * ((i-lm) == (((i-lm)/k4m) * k4m)) .and. - * ((j-li) == (((j-li)/k1i) * k1i)) .and. - * ((n-lj) == (((n-lj)/k2j) * k2j)) .and. - * ((m-ln) == (((m-ln)/k3n) * k3n)) .and. - * (((i-lm)/k4m) > 0) .and. - * (((j-li)/k1i) > 0) .and. - * (((n-lj)/k2j) > 0) .and. - * (((m-ln)/k3n) > 0) .and. - * (((i-lm)/k4m) <= BN4) .and. - * (((j-li)/k1i) <= BN1) .and. - * (((n-lj)/k2j) <= BN2) .and. - * (((m-ln)/k3n) <= BN3) - * ) then - ib = (j-li)/k1i - jb = (n-lj)/k2j - nb = (m-ln)/k3n - mb = (i-lm)/k4m - B4(ib,jb,nb,mb) = B4(ib,jb,nb,mb) + - * ib*NL/10+jb*NL/100+nb*NL/1000+mb; - endif - enddo - enddo - enddo - enddo -!dvm$ end region - -!dvm$ REALIGN B4(i,j,n,m) -!dvm$* WITH A4(kr1i*i+lri,kr2j*j+lrj,kr3n*n+lrn,kr4m*m+lrm) - -!dvm$ actual(erria, errib, s) - -!dvm$ region - -!dvm$ parallel (i,j,n,m) on B4(i,j,n,m), -!dvm$* reduction(min(erria),min(errib),sum(s)), -!dvm$* private(ia,ja,na,ma) - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - s = s + B4(i,j,n,m) - if (B4(i,j,n,m) /= (i*NL/10+j*NL/100+n*NL/1000+m+4))then - errib = min(errib,i*NL/10 + j*NL/100+ n*NL/1000 + m) - endif - ia=kr1i*i+lri; - ja=kr2j*j+lrj; - na=kr3n*n+lrn; - ma=kr4m*m+lrm; - if (A4(ia,ja,na,ma) /= - * (ia*NL/10+ja*NL/100+na*NL/1000+ma+10))then - erria = min(erria,i*NL/10 + j*NL/100+ n*NL/1000+ m) - endif - enddo - enddo - enddo - enddo -!dvm$ end region - - cs = 0 - do i=1,BN1 - do j=1,BN2 - do n=1,BN3 - do m=1,BN4 - cs = cs + i*NL/10 + j*NL/100+ n*NL/1000+ m + 4 - enddo - enddo - enddo - enddo - -!dvm$ get_actual(erria, errib, s) - - if ((erria == ER) .and. (errib == ER) .and. - * (s == cs)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (B4,A4) - - end - -C ------------------------------------------------- - subroutine ansyes(name) - character(*) name - print *,name,' - complete' - end - subroutine ansno(name) - character(*) name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red11.fdv deleted file mode 100644 index edb8b90..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red11.fdv +++ /dev/null @@ -1,929 +0,0 @@ - program RED11 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM.PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N). - - print *,'===START OF RED11========================' -C -------------------------------------------------- - call red1101 -C -------------------------------------------------- - call red1102 -C -------------------------------------------------- - call red1103 -C ------------------------------------------------- - call red1104 -C ------------------------------------------------- - call red1105 -C ------------------------------------------------- - call red1106 -C -------------------------------------------------- - call red1107 -C -------------------------------------------------- - call red1108 -C -------------------------------------------------- - call red1109 -C ------------------------------------------------- - call red1110 -C ------------------------------------------------- - call red1111 -C ------------------------------------------------- - call red1112 -C ------------------------------------------------- - call red1113 -C -------------------------------------------------- - call red1114 -C -------------------------------------------------- - call red1115 -C ------------------------------------------------- - call red1116 -C ------------------------------------------------- - -C -C - print *,'=== END OF RED11 ========================= ' - end - -C ----------------------------------------------------RED1101 - subroutine RED1101 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK) - - tname='RED1101' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1(C,NN,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1102 - subroutine RED1102 - integer, parameter :: N = 16 ,NL=1002 - character*7 tname - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - -!dvm$ distribute A(BLOCK) - - tname='RED1102' - allocate (A(N),C(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ) ) - do i=1,N - iprodt1 = iprodt1*A(i) - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED1103 - subroutine RED1103 - integer, parameter :: N = 16,NL=1003 - character*7 tname - integer, allocatable :: A(:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK) - - tname='RED1103' - allocate (A(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - -!dvm$ actual(imaxt1,A) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ) ) - do i=2,N - if (A(i).GT.imaxt1) imaxt1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A) - - end - -C ----------------------------------------------------RED1104 - subroutine RED1104 - integer, parameter :: N = 16,NL=1004 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK) - - tname='RED1104' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( min( imint1 ) ) - do i=2,N - if (A(i).LT.imint1) imint1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED1105 - subroutine RED1105 - integer, parameter :: N = 16 - real, parameter :: NL=1005 - character*7 tname - real, allocatable :: A(:),C(:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK) - - tname='RED1105' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=N+1.+NL - imax1=N+1.+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ) ) - do i=2,N - if (A(i).GT.imaxt1) imaxt1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED1106 - subroutine RED1106 - integer, parameter :: N = 8 ,NL=1. - character*7 tname - real, allocatable :: A(:),C(:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(BLOCK) - - tname='RED1106' - allocate (A(N),C(N)) - NNL=NL - NN=N - call serprodr1(C,NN,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ) ) - do i=1,N - iprodt1 = iprodt1*A(i) - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1107 - subroutine RED1107 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK) - - tname='RED1107' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i+1) - do i=1,N-1,2 - A(i+1)=.false. - enddo - -!dvm$ remote_access (A(1)) - landt1 = A(1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( AND( landt1 ) ) - do i=2,N - landt1 = landt1 .and.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1108 - subroutine RED1108 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK) - - tname='RED1108' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i) - do i=2,N,2 - A(i)=.false. - enddo - -!dvm$ remote_access (A(1)) - lort1 = A(1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i) on A(i),reduction( OR( lort1 ) ) - do i=2,N - lort1 = lort1 .or.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1109 - subroutine RED1109 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,lort1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK) - - tname='RED1109' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i) - do i=2,N,2 - A(i)=.false. - enddo - -!dvm$ remote_access (A(1)) - leqvt1 = A(1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( EQV( leqvt1 ) ) - do i=2,N - leqvt1 = leqvt1 .eqv.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1110 - subroutine RED1110 - integer, parameter :: N = 8 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK) - - tname='RED1110' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i) - do i=2,N,2 - A(i)=.false. - enddo - -!dvm$ remote_access (A(1)) - lneqvt1 = A(1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( NEQV( lneqvt1 ) ) - do i=2,N - lneqvt1 = lneqvt1 .neqv.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED1111 - subroutine RED1111 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK) - - tname='RED1111' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2+2 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - it1=0 - -!dvm$ actual(imaxt1,it1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( maxloc( imaxt1,it1,1 ) ) - do i=2,N - if (A(i).GT.imaxt1)then - imaxt1=A(i) - it1=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,it1) - - if ((imax1 .eq.imaxt1) .and. (it1.eq.ni)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED1112 - subroutine RED1112 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin,imint1 - -!dvm$ distribute A(BLOCK) - - tname='RED1112' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) -!dvm$ remote_access (A(1)) - imint1=A(1) - it1=0 - -!dvm$ actual(imint1,it1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( minloc( imint1,it1,1 ) ) - do i=2,N - if (A(i).LT.imint1)then - imint1=A(i) - it1=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imint1,it1) - - if ((imin1 .eq.imint1) .and. (it1.eq.ni)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED1113 - subroutine RED1113 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - integer imax1,imaxt1 ,ni,imin1,imint1 - -!dvm$ distribute A(BLOCK) - - tname='RED1113' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1m(C,NN,NNL,isum1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - isumt1 = 0 - -!dvm$ actual(imint1,imaxt1,isumt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxt1) imaxt1=A(i) - if (A(i).LT.imint1) imint1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imint1,imaxt1,isumt1) - -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED1114 - subroutine RED1114 - integer, parameter :: N = 16 ,NL=1 - character*7 tname - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - logical, allocatable :: B(:),CL(:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK) -!dvm$ align B(I) with A(I) - - tname='RED1114' - allocate (A(N),C(N)) - allocate (B(N),CL(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - call serlog1(CL,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on B(i) - do i=1,N,2 - B(i) = .true. - enddo - -!dvm$ parallel (i) on B(i+1) - do i=1,N-1,2 - B(i+1)=.false. - enddo - -!dvm$ remote_access (B(1)) - landt1 = B(1) - iprodt1 = 1 - - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - iprodt1 = iprodt1*A(i) - if (i.eq.1) then -! landt1=B(1) - else - landt1 = landt1 .and.B(i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1115 - subroutine RED1115 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2 - integer imaxloct1,iminloct1 - -!dvm$ distribute A(BLOCK) - - tname='RED1115' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL -!dvm$ remote_access (A(1)) - imaxt1=A(1) - imaxloct1=imaxt1 - ni1=N/2 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) -!dvm$ remote_access (A(1)) - imint1=A(1) - iminloct1=imint1 - it1=0 - it2=0 - -!dvm$ actual(imaxloct1,it1,iminloct1,it2) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ), -!dvm$*maxloc( imaxloct1,it1,1 ),minloc( iminloct1,it2,1 ) ) - do i=1,N - if (A(i).GT.imaxt1) imaxt1 =A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imaxloct1,it1,iminloct1,it2) - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,it2,ni,ni1 - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1116 - subroutine RED1116 - integer, parameter :: N = 16 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:),C(:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1 -!dvm$ distribute A(BLOCK) - - tname='RED1116' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1mr(C,NN,NNL,isum1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - isumt1 = 0. - it1=0 - it2=0 - - -!dvm$ actual(isumt1,imaxloct1,it1,iminloct1,it2) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ), -!dvm$*maxloc( imaxloct1,it1,1 ),minloc( iminloct1,it2,1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxloct1,it1,iminloct1,it2) - -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,it2,ni,ni1 -c print *,isum1,isumt1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------- - - subroutine sersum1(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - - subroutine sersum1m(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - subroutine sersum1mr(AR,N,NL,S) - real AR(N) - real S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0. - do i=1,N - S = S+ AR(i) - enddo - end - - subroutine serprod1(AR,N,NL,P) - integer AR(N) - integer P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1 - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serprodr1(AR,N,NL,P) - real AR(N) - real P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1. - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serlog1(AR,N,LAND,LOR,LEQV,LNEQV) - logical AR(N) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,2 - AR(i) = .true. - AR(i+1)=.false. - enddo - LAND=AR(1) - LOR=AR(1) -c LEQV=.true. -c LNEQV=.false. - LEQV=AR(1) - LNEQV=AR(1) - do i=2,N - LAND = LAND .and. AR(i) - LOR = LOR .or.AR(i) - enddo - do i=2,N - LEQV = LEQV .eqv. AR(i) - enddo - do i=2,N - LNEQV = LNEQV .neqv. AR(i) - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red12.fdv deleted file mode 100644 index 67164a1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red12.fdv +++ /dev/null @@ -1,941 +0,0 @@ - program RED12 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM.PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N). - - print *,'===START OF RED12========================' -C -------------------------------------------------- - call red1201 -C -------------------------------------------------- - call red1202 -C -------------------------------------------------- - call red1203 -C ------------------------------------------------- - call red1204 -C ------------------------------------------------- - call red1205 -C ------------------------------------------------- - call red1206 -C -------------------------------------------------- - call red1207 -C -------------------------------------------------- - call red1208 -C -------------------------------------------------- - call red1209 -C ------------------------------------------------- - call red1210 -C ------------------------------------------------- - call red1211 -C ------------------------------------------------- - call red1212 -C ------------------------------------------------- - call red1213 -C -------------------------------------------------- - call red1214 -C -------------------------------------------------- - call red1215 -C ------------------------------------------------- - call red1216 -C ------------------------------------------------- - -C -C - print *,'=== END OF RED12 ========================= ' - end - -C ----------------------------------------------------RED1201 - subroutine RED1201 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - -!dvm$ distribute A(*) - - tname='RED1201' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1(C,NN,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1202 - subroutine RED1202 - integer, parameter :: N = 16, NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - -!dvm$ distribute A(*) - - tname='RED1202' - allocate (A(N),C(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ) ) - do i=1,N - iprodt1 = iprodt1*A(i) - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED1203 - subroutine RED1203 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*) - - tname='RED1203' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ) ) - do i=2,N - if (A(i).GT.imaxt1) imaxt1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED1204 - subroutine RED1204 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*) - - tname='RED1204' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( min( imint1 ) ) - do i=2,N - if (A(i).LT.imint1) imint1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED1205 - subroutine RED1205 - integer, parameter :: N = 16 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:),C(:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(*) - - tname='RED1205' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2 - A(ni)=N+1.+NL - imax1=N+1.+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ) ) - do i=2,N - if (A(i).GT.imaxt1) imaxt1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED1206 - subroutine RED1206 - integer, parameter :: N = 8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:),C(:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(*) - - tname='RED1206' - allocate (A(N),C(N)) - NNL=NL - NN=N - call serprodr1(C,NN,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ) ) - do i=1,N - iprodt1 = iprodt1*A(i) - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED1207 - subroutine RED1207 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(*) - - tname='RED1207' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i+1) - do i=1,N-1,2 - A(i+1)=.false. - enddo - -!dvm$ remote_access (A(1)) - landt1 = A(1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( AND( landt1 ) ) - do i=2,N - landt1 = landt1 .and.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1208 - subroutine RED1208 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(*) - - tname='RED1208' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i+1) - do i=1,N-1,2 - A(i+1)=.false. - enddo - -!dvm$ remote_access (A(1)) - lort1 = A(1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( OR( lort1 ) ) - do i=2,N - lort1 = lort1 .or.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1209 - subroutine RED1209 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(*) - - tname='RED1209' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i+1) - do i=1,N-1,2 - A(i+1)=.false. - enddo - -!dvm$ remote_access (A(1)) - leqvt1 = A(1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( EQV( leqvt1 ) ) - do i=2,N - leqvt1 = leqvt1 .eqv.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED1210 - subroutine RED1210 - integer, parameter :: N = 16 - character*7 tname - logical, allocatable :: A(:),C(:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(*) - - tname='RED1210' - allocate (A(N),C(N)) - NN=N - call serlog1(C,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on A(i) - do i=1,N,2 - A(i) = .true. - enddo - -!dvm$ parallel (i) on A(i+1) - do i=1,N-1,2 - A(i+1)=.false. - enddo - -!dvm$ remote_access (A(1)) - lneqvt1 = A(1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( NEQV( lneqvt1 ) ) - do i=2,N - lneqvt1 = lneqvt1 .neqv.A(i) - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED1211 - - subroutine RED1211 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin,lit - -!dvm$ distribute A(*) - - tname='RED1211' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - lit=1 - it1=0 - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( maxloc( imaxt1,it1,1 ) ) - do i=2,N - if (A(i).GT.imaxt1)then - imaxt1=A(i) - it1=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,it1,lit) - - if ((imax1 .eq.imaxt1) .and. (it1.eq.ni)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1212 - subroutine RED1212 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin,lit - -!dvm$ distribute A(*) - - tname='RED1212' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - lit=1 - it1=0 - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( minloc( imint1,it1,1 ) ) - do i=2,N - if (A(i).LT.imint1)then - imint1=A(i) - it1=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imint1,it1,lit) - - if ((imin1 .eq.imint1) .and. (it1.eq.ni)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1213 - subroutine RED1213 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - integer imax1,imaxt1 ,ni,imin1,imint1 - -!dvm$ distribute A(*) - - tname='RED1213' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1m(C,NN,NNL,isum1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - isumt1 = 0 - -!dvm$ actual(isumt1,imaxt1, imint1) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxt1) imaxt1=A(i) - if (A(i).LT.imint1) imint1=A(i) - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1, imint1) - -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED1214 - subroutine RED1214 - integer, parameter :: N = 16 ,NL=1 - character*7 tname - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - logical, allocatable :: B(:),CL(:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(*) -!dvm$ align B(I) with A(I) - - tname='RED1214' - allocate (A(N),C(N)) - allocate (B(N),CL(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - call serlog1(CL,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on B(i) - do i=1,N,2 - B(i) = .true. - enddo - -!dvm$ parallel (i) on B(i+1) - do i=1,N-1,2 - B(i+1)=.false. - enddo - -!dvm$ remote_access (B(1)) - landt1 = B(1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ parallel (i) on A(i), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - iprodt1 = iprodt1*A(i) - if (i.eq.1) then -! landt1=B(1) - else - landt1 = landt1 .and.B(i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1215 - subroutine RED1215 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2 - integer imaxloct1,iminloct1,lit -!dvm$ distribute A(*) - - tname='RED1215' - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - lit=1 - it1=0 - it2=0 - -!dvm$ actual(imaxt1,imaxloct1,it1,lit,iminloct1,it2,lit) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( max( imaxt1 ), -!dvm$*maxloc( imaxloct1,it1,1 ),minloc( iminloct1,it2,1 ) ) - do i=1,N - if (A(i).GT.imaxt1) imaxt1 =A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,imaxloct1,it1,iminloct1,it2) - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------RED1216 - subroutine RED1216 - integer, parameter :: N = 16,NL=1000 - character*7 tname - real, allocatable :: A(:),C(:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1,lit - -!dvm$ distribute A(*) - - tname='RED1216' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1mr(C,NN,NNL,isum1) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - isumt1 = 0. - lit=1 - it1=0 - it2=0 - -!dvm$ actual(isumt1,imaxloct1,it1,lit,iminloct1,it2) -!dvm$ region -!dvm$ parallel (i) on A(i), reduction( sum( isumt1 ), -!dvm$*maxloc( imaxloct1,it1,1 ),minloc( iminloct1,it2,1 ) ) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - - - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxloct1,it1,iminloct1,it2) - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------- - - subroutine sersum1(AR,N,NL,S) - integer AR(N) - integer S,NL - - do i=1,N - AR(i) = i+NL - enddo - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - subroutine sersum1m(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - subroutine sersum1mr(AR,N,NL,S) - real AR(N) - real S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0. - do i=1,N - S = S+ AR(i) - enddo - end - - subroutine serprod1(AR,N,NL,P) - integer AR(N) - integer P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1 - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serprodr1(AR,N,NL,P) - real AR(N) - real P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1. - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serlog1(AR,N,LAND,LOR,LEQV,LNEQV) - logical AR(N) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,2 - AR(i) = .true. - AR(i+1)=.false. - enddo - LAND=AR(1) - LOR=AR(1) -C LEQV=.true. -C LNEQV=.false. - LEQV=AR(1) - LNEQV=AR(1) - do i=2,N - LAND = LAND .and. AR(i) - LOR = LOR .or.AR(i) - enddo - do i=2,N - LEQV = LEQV .eqv. AR(i) - enddo - do i=2,N - LNEQV = LNEQV .neqv. AR(i) - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red21.fdv deleted file mode 100644 index 2383968..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red21.fdv +++ /dev/null @@ -1,938 +0,0 @@ - program RED21 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M). - - print *,'===START OF RED21=======================' -C -------------------------------------------------- - call red2101 -C -------------------------------------------------- - call red2102 -C -------------------------------------------------- - call red2103 -C ------------------------------------------------- - call red2104 -C ------------------------------------------------- - call red2105 -C ------------------------------------------------- - call red2106 -C -------------------------------------------------- - call red2107 -C -------------------------------------------------- - call red2108 -C -------------------------------------------------- - call red2109 -C ------------------------------------------------- - call red2110 -C ------------------------------------------------- - call red2111 -C ------------------------------------------------- - call red2112 -C -------------------------------------------------- - call red2113 -C -------------------------------------------------- - call red2114 -C -------------------------------------------------- -C -C - print *,'=== END OF RED21 ========================= ' - end - -C ----------------------------------------------------RED2101 - subroutine RED2101 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2101' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2(C,NN,MM,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2102 - subroutine RED2102 - integer, parameter :: N = 16,M=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2102' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call serprod2(C,NN,MM,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2103 - subroutine RED2103 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:) - integer imax1,imaxt1 ,ni,imin,nj - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2103' - allocate (A(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - -!dvm$ actual(imaxt1,A) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A) - - end - -C ----------------------------------------------------RED2104 - subroutine RED2104 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin,nj - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2104' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( min( imint1 ) ) - do i=2,N - do j=1,M - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2105 - subroutine RED2105 - integer, parameter :: N = 16,M=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:),C(:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2105' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1.+NL - imax1=N+M+1.+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED2106 - subroutine RED2106 - integer, parameter :: N = 8,M=6 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:),C(:,:) - real iprod1,iprodt1 - real NNl - intrinsic INT -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2106' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call serprodr2(C,NN,Mm,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - if(i.eq.j) then - A(i,j) = I+NL - else - A(i,j) = 1. - endif - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - if(INT(iprod1) .eq. INT(iprodt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2107 - subroutine RED2107 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2107' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - landt1 = A(1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then - continue -! landt1=A(i,j) - else - landt1 = landt1 .and. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2108 - subroutine RED2108 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2108' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - lort1 = A(1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then - continue -! lort1=A(i,j) - else - lort1 = lort1 .or. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lort1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2109 - subroutine RED2109 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2109' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - leqvt1 = A(1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then - continue -! leqvt1=A(i,j) - else - leqvt1 = leqvt1 .eqv. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2110 - subroutine RED2110 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2110' - allocate (A(N,M),C(N,M)) - - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - lneqvt1 = A(1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then - continue -! lneqvt1=A(i,j) - else - lneqvt1 = lneqvt1 .neqv. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2111 - subroutine RED2111 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin,nj - integer it1,jt1,it2,jt2 - integer coor(2),lcoor -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2111' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i * NL + j - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL * NL - imax1=N+M+1+NL * NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - lcoor=2 - coor(1)=0 - coor(2)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( maxloc( imaxt1,coor,2)) - do i=2,N - do j=1,M - if (A(i,j).GT.imaxt1)then - imaxt1=A(i,j) - coor(1)=i - coor(2)=j - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2112 - subroutine RED2112 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni -c integer it1,jt1,it2,jt2 - integer coor(2),lcoor - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2112' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i * NL + j - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL * NL) - imin1=-(N+M+1+NL * NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - - lcoor=2 - coor(1)=0 - coor(2)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( minloc( imint1,coor,2)) - do i=2,N - do j=1,M - if (A(i,j).LT.imint1)then - imint1=A(i,j) - coor(1)=i - coor(2)=j - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - -c print *,imin1, imint1 -c print *,coor(1),ni -c print *,coor(2),nj - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2113 - subroutine RED2113 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,BLOCK) - - tname='RED2113' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2m(C,NN,MM,NNL,isum1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - ni1=N/2 - nj1=M/2 - A(ni1,nj1)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - - isumt1 = 0 -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) - -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2114 - subroutine RED2114 - integer, parameter :: N = 16,M=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:),CL(:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align B(I,J) with A(I,J) - - tname='RED2114' - allocate (A(N,M),C(N,M)) - allocate (B(N,M),CL(N,M)) - NNL=NL - NN=N - MM=M - call serprod2(C,NN,MM,NNL,iprod1) - call serlog2(CL,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=1,M,2 - B(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=2,M,2 - B(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (B(1,1)) - landt1 = B(1,1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -C print *,A - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) -c print *,i, j,iprodt1 - if ((i.eq.1).and.(j.eq.1)) then - continue -! landt1=B(i,j) - else - landt1 = landt1 .and. B(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - -c print *,iprod1,iprodt1,land1,landt1 - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum2(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine sersum2m(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1+NL - ni=N/2 - nj=M/2 - AR(ni,nj)=-(N+M+1+NL) - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - - end - - subroutine sersum2mr(AR,N,M,NL,S) - real AR(N,M) - real S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1.+NL - ni=N/2 - nj=M/2 - AR(ni,ni)=-(N+M+1.+NL) - S=0. - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine serprod2(AR,N,M,NL,P) - integer AR(N,M) - integer P,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - P=1 - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serprodr2(AR,N,M,NL,P) - real AR(N,M) - real P,NL - do i=1,N - do j=1,M - if(i.eq.j)then - AR(i,j) = I+NL - else - AR(i,j) = 1. - endif - enddo - enddo - P=1. - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serlog2(AR,N,M,LAND,LOR,LEQV,LNEQV) - logical AR(N,M) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M,2 - AR(i,J) = .true. - enddo - enddo - do i=1,N - do j=2,M,2 - AR(i,j)=.false. - enddo - enddo - do i=1,N - do j= 1,M - if ((i.eq.1).and.(j.eq.1)) then - LAND=AR(1,1) - LOR=AR(1,1) -C LEQV=.true. -C LNEQV=.false. - LNEQV=AR(1,1) - LEQV=AR(1,1) - else - LAND = LAND .and. AR(i,j) - LOR = LOR .or.AR(i,j) - LEQV = LEQV .eqv. AR(i,j) - LNEQV = LNEQV .neqv. AR(i,j) - endif - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red22.fdv deleted file mode 100644 index 91b1a3c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red22.fdv +++ /dev/null @@ -1,939 +0,0 @@ - program RED22 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M). - - print *,'===START OF RED22=======================' -C -------------------------------------------------- - call red2201 -C -------------------------------------------------- - call red2202 -C -------------------------------------------------- - call red2203 -C ------------------------------------------------- - call red2204 -C ------------------------------------------------- - call red2205 -C ------------------------------------------------- - call red2206 -C -------------------------------------------------- - call red2207 -C -------------------------------------------------- - call red2208 -C -------------------------------------------------- - call red2209 -C ------------------------------------------------- - call red2210 -C ------------------------------------------------- - call red2211 -C ------------------------------------------------- - call red2212 -C ------------------------------------------------- - call red2213 -C -------------------------------------------------- - call red2214 -C -------------------------------------------------- - -C -C - print *,'=== END OF RED22 ========================= ' - end - -C ----------------------------------------------------RED2201 - subroutine RED2201 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,*) - - - tname='RED2201' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2(C,NN,MM,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2202 - subroutine RED2202 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(*,BLOCK) - - tname='RED2202' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call serprod2(C,N,M,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - if (i.eq.j) then - A(i,j) = i - else - A(i,j) =1 - endif - enddo - enddo - - -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2203 - subroutine RED2203 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,*) - - tname='RED2203' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED2204 - subroutine RED2204 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*,BLOCK) - - tname='RED2204' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( min( imint1 ) ) - do i=2,N - do j=1,M - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2205 - subroutine RED2205 - integer, parameter :: N = 16,M=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:),C(:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,*) - - tname='RED2205' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1.+NL - imax1=N+M+1.+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED2206 - subroutine RED2206 - integer, parameter :: N = 8,M=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:),C(:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(*,BLOCK) - - tname='RED2206' - allocate (A(N,M),C(N,M)) - - NNL=NL - NN=N - MM=M - call serprodr2(C,NN,MM,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - if (i.eq.j) then - A(i,j) = i - else - A(i,j) =1. - endif - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2207 - subroutine RED2207 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,*) - - tname='RED2207' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - landt1 = A(1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then -! landt1=A(i,j) - else - landt1 = landt1 .and. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2208 - subroutine RED2208 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(*,BLOCK) - - tname='RED2208' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,j) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - lort1 = A(1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then -! lort1=A(i,j) - else - lort1 = lort1 .or. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2209 - subroutine RED2209 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK,*) - - tname='RED2209' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - leqvt1 = A(1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then -! leqvt1=A(i,j) - else - leqvt1 = leqvt1 .eqv. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED2210 - subroutine RED2210 - integer, parameter :: N = 16,M=8 - character*7 tname - logical, allocatable :: A(:,:),C(:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(*,BLOCK) - - tname='RED2210' - allocate (A(N,M),C(N,M)) - NN=N - MM=M - call serlog2(C,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M,2 - A(i,J) = .true. - enddo - enddo -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=2,M,2 - A(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (A(1,1)) - lneqvt1 = A(1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - if ((i.eq.1).and.(j.eq.1)) then - continue -! lneqvt1=A(i,j) - else - lneqvt1 = lneqvt1 .neqv. A(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2211 - subroutine RED2211 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2 - integer coor(2),lcoor - -!dvm$ distribute A(BLOCK,*) - - tname='RED2211' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i*NL+j - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL*NL - imax1=N+M+1+NL*NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - lcoor=2 - coor(1)=0 - coor(2)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( maxloc( imaxt1,coor,2)) - do i=2,N - do j=1,M - if (A(i,j).GT.imaxt1)then - imaxt1=A(i,j) - coor(1)=i - coor(2)=j - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2212 - subroutine RED2212 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2 - integer coor(2),lcoor - -!dvm$ distribute A(*,BLOCK) - - tname='RED2212' - allocate (A(N,M),C(N,M)) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i*NL+j - enddo - enddo - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL*NL) - imin1=-(N+M+1+NL*NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - - lcoor=2 - coor(1)=0 - coor(2)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( minloc( imint1,coor,2)) - do i=2,N - do j=1,M - if (A(i,j).LT.imint1)then - imint1=A(i,j) - coor(1)=i - coor(2)=j - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2213 - subroutine RED2213 - integer, parameter :: N = 16,M=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,*) - - tname='RED2213' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2m(C,NN,MM,NNL,isum1) - -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -!dvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - ni1=N/2 - nj1=M/2 - A(ni1,nj1)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -!dvm$ remote_access (A(1,1)) - imint1=A(1,1) - - isumt1 = 0 -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j) on A(i,j), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) - -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED2214 - subroutine RED2214 - integer, parameter :: N = 16,M=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:),CL(:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,*) -!dvm$ align B(I,J) with A(I,J) - - tname='RED2214' - allocate (A(N,M),C(N,M)) - allocate (B(N,M),CL(N,M)) - - NNL=NL - NN=N - MM=M - call serprod2(C,NN,MM,NNL,iprod1) - call serlog2(CL,NN,MM,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=1,M,2 - B(i,J) = .true. - enddo - enddo -!dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=2,M,2 - B(i,j)=.false. - enddo - enddo - -!dvm$ remote_access (B(1,1)) - landt1 = B(1,1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - if (i.eq.j) then - A(i,j) = i - else - A(i,j) =1 - endif - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - if ((i.eq.1).and.(j.eq.1)) then -! landt1=B(i,j) - else - landt1 = landt1 .and. B(i,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum2(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine sersum2m(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1+NL - ni=N/2 - nj=M/2 - AR(ni,nj)=-(N+M+1+NL) - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine sersum2mr(AR,N,M,NL,S) - real AR(N,M) - real S,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1.+NL - ni=N/2 - nj=M/2 - AR(ni,ni)=-(N+M+1.+NL) - S=0. - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine serprod2(AR,N,M,NL,P) - integer AR(N,M) - integer P,NL - do i=1,N - do j=1,M - if (i.eq.j) then - AR(i,j) = i - else - AR(i,j) =1 - endif - enddo - enddo - P=1 - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serprodr2(AR,N,M,NL,P) - real AR(N,M) - real P,NL - do i=1,N - do j=1,M - if (i.eq.j) then - AR(i,j) = i - else - AR(i,j) =1. - endif - enddo - enddo - P=1. - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serlog2(AR,N,M,LAND,LOR,LEQV,LNEQV) - logical AR(N,M) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,1 - do j=1,M,2 - AR(i,j) = .true. - enddo - enddo - do i=1,N,1 - do j=2,M,2 - AR(i,j)=.false. - enddo - enddo - do i=1,N - do j= 1,M - if ((i.eq.1).and.(j.eq.1)) then - LAND=AR(1,1) - LOR=AR(1,1) - LEQV=AR(1,1) - LNEQV=AR(1,1) - else - LAND = LAND .and. AR(i,j) - LOR = LOR .or.AR(i,j) - LEQV = LEQV .eqv. AR(i,j) - LNEQV = LNEQV .neqv. AR(i,j) - endif - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red31.fdv deleted file mode 100644 index 9716b99..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red31.fdv +++ /dev/null @@ -1,1052 +0,0 @@ - program RED31 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M,K). - - print *,'===START OF RED31=======================' -C -------------------------------------------------- - call red3101 -C -------------------------------------------------- - call red3102 -C -------------------------------------------------- - call red3103 -C ------------------------------------------------- - call red3104 -C ------------------------------------------------- - call red3105 -C ------------------------------------------------- - call red3106 -C -------------------------------------------------- - call red3107 -C -------------------------------------------------- - call red3108 -C -------------------------------------------------- - call red3109 -C ------------------------------------------------- - call red3110 -C ------------------------------------------------- - call red3111 -C ------------------------------------------------- - call red3112 -C ------------------------------------------------- - call red3113 -C -------------------------------------------------- - call red3114 -C -------------------------------------------------- - -C -C - print *,'=== END OF RED31 ========================= ' - end - -C ----------------------------------------------------RED3101 - subroutine RED3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3101' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3(C,NN,MM,KK,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3102 - subroutine RED3102 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3102' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3103 - subroutine RED3103 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3103' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED3104 - subroutine RED3104 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3104' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( min( imint1 ) ) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3105 - subroutine RED3105 - integer, parameter :: N = 16,M=8,K=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:,:),C(:,:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3105' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1.+NL - imax1=N+M+K+1.+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED3106 - subroutine RED3106 - integer, parameter :: N = 16,M=8,K=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:,:),C(:,:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3106' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprodr3(C,NN,MM,KK,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1. - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3107 - subroutine RED3107 - integer, parameter :: N = 16,M=8,K=8 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3107' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - landt1 = A(1,1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - else - landt1 = landt1 .and. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3108 - subroutine RED3108 - integer, parameter :: N = 16,M=8,K=16 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3108' - allocate (A(N,M,K),C(N,M,K)) - - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - lort1 = A(1,1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - else - lort1 = lort1 .or. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3109 - subroutine RED3109 - integer, parameter :: N = 16,M=8,K=8 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3109' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - leqvt1 = A(1,1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - else - leqvt1 = leqvt1 .eqv. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3110 - subroutine RED3110 - integer, parameter :: N = 16,M=8,K=8 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3110' - allocate (A(N,M,K),C(N,M,K)) - - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - lneqvt1 = A(1,1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - continue - else - lneqvt1 = lneqvt1 .neqv. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3111 - subroutine RED3111 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2,iit1 - integer coor(3),lcoor -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3111' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i*NL*NL+j*NL+ii - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL*NL*NL - imax1=N+M+K+1+NL*NL*NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - lcoor=3 - coor(1)=0 - coor(2)=0 - coor(3)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$* reduction( maxloc( imaxt1,coor,3)) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1)then - imaxt1=A(i,j,ii) - coor(1)=i - coor(2)=j - coor(3)=ii - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3112 - subroutine RED3112 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2,iit1 - integer coor(3),lcoor -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3112' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i*NL*NL+j*NL+ii - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL*NL*NL) - imin1=-(N+M+K+1+NL*NL*NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - lcoor=3 - coor(1)=0 - coor(2)=0 - coor(3)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$* reduction( minloc( imint1,coor,3)) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).LT.imint1)then - imint1=A(i,j,ii) - coor(1)=i - coor(2)=j - coor(3)=ii - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3113 - subroutine RED3113 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) - - tname='RED3113' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3m(C,NN,MM,KK,NNL,isum1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - ni1=N/2 - nj1=M/2 - nii1=K/2 - A(ni1,nj1,nii1)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - isumt1 = 0 - -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) - - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3114 - subroutine RED3114 - integer, parameter :: N = 16,M=8,K=16,NL=1 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:),CL(:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align B(I,J,II) with A(I,J,II) - - tname='RED3114' - allocate (A(N,M,K),C(N,M,K)) - allocate (B(N,M,K),CL(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - call serlog3(CL,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N,2 - do j=1,M,2 - do ii=1,K,2 - B(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i+1,j+1,ii+1) - do i=1,N-1,2 - do j=1,M-1,2 - do ii=1,K-1,2 - B(i+1,j+1,ii+1)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (B(1,1,1)) - landt1 = B(1,1,1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - else - landt1 = landt1 .and. B(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,CL) - - end -C ----------------------------------------------------- - - subroutine sersum3(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine sersum3m(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - - end - - subroutine sersum3mr(AR,N,M,K,NL,S) - real AR(N,M,K) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprod3(AR,N,M,K,NL,P) - integer AR(N,M,K) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - AR(i,j,ii) = i - else - AR(i,j,ii) = 1 - endif - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprodr3(AR,N,M,K,NL,P) - real AR(N,M,K) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - AR(i,j,ii) = i - else - AR(i,j,ii) = 1. - endif - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serlog3(AR,N,M,K,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K) - logical LAND,LOR,LEQV,LNEQV - - do i=1,N,1 - do j=1,M,1 - do ii=1,K,2 - AR(i,j,ii) = .true. - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=2,K,2 - AR(i,j,ii)=.false. - enddo - enddo - enddo - do i=1,N - do j= 1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - LAND=AR(1,1,1) - LOR=AR(1,1,1) - LEQV=AR(1,1,1) - LNEQV=AR(1,1,1) - else - LAND = LAND .and. AR(i,j,ii) - LOR = LOR .or.AR(i,j,ii) - LEQV = LEQV .eqv. AR(i,j,ii) - LNEQV = LNEQV .neqv. AR(i,j,ii) - endif - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red32.fdv deleted file mode 100644 index 5a8909a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red32.fdv +++ /dev/null @@ -1,1064 +0,0 @@ - program RED32 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M,K). - - print *,'===START OF RED32=======================' -C -------------------------------------------------- - call red3201 -C -------------------------------------------------- - call red3202 -C -------------------------------------------------- - call red3203 -C ------------------------------------------------- - call red3204 -C ------------------------------------------------- - call red3205 -C ------------------------------------------------- - call red3206 -C -------------------------------------------------- - call red3207 -C -------------------------------------------------- - call red3208 -C -------------------------------------------------- - call red3209 -C ------------------------------------------------- - call red3210 -C ------------------------------------------------- - call red3211 -C ------------------------------------------------- - call red3212 -C ------------------------------------------------- - call red3213 -C -------------------------------------------------- - call red3214 -C ------------------------------------------------- - -C -C - print *,'=== END OF RED32 ========================= ' - end - -C ----------------------------------------------------RED3201 - subroutine RED3201 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,BLOCK,*) - - - tname='RED3201' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3(C,NN,MM,KK,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3202 - subroutine RED3202 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(BLOCK,*,BLOCK) - - tname='RED3202' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1 - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3203 - subroutine RED3203 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*,BLOCK,BLOCK) - - tname='RED3203' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED3204 - subroutine RED3204 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,BLOCK,*) - - tname='RED3204' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( min( imint1 ) ) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3205 - subroutine RED3205 - integer, parameter :: N = 16,M=8,K=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:,:),C(:,:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,*,BLOCK) - - tname='RED3205' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1.+NL - imax1=N+M+K+1.+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED3206 - subroutine RED3206 - integer, parameter :: N =8,M=8,K=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:,:),C(:,:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(*,BLOCK,BLOCK) - - tname='RED3206' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprodr3(C,NN,MM,KK,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1. - endif - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3207 - subroutine RED3207 - integer, parameter :: N = 16,M=8,K=8 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,BLOCK,*) - - tname='RED3207' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - landt1 = A(1,1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then -! landt1=A(i,j,ii) - else - landt1 = landt1 .and. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3208 - subroutine RED3208 - integer, parameter :: N = 16,M=8,K=16 - character*7 tname - logical, allocatable :: A(:,:,:),C(:,:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,*,BLOCK) - - tname='RED3208' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - lort1 = A(1,1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then -! lort1=A(i,j,ii) - else - lort1 = lort1 .or. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3209 - subroutine RED3209 - integer, parameter :: N = 16,M=8,K=8 - logical, allocatable :: A(:,:,:),C(:,:,:) - character*7 tname - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(*,BLOCK,BLOCK) - - tname='RED3209' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - leqvt1 = A(1,1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then -! leqvt1=A(i,j,ii) - else - leqvt1 = leqvt1 .eqv. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED3210 - subroutine RED3210 - integer, parameter :: N = 16,M=8,K=8 - logical, allocatable :: A(:,:,:),C(:,:,:) - character*7 tname - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK,BLOCK,*) - - tname='RED3210' - allocate (A(N,M,K),C(N,M,K)) - NN=N - MM=M - KK=K - call serlog3(C,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - A(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - A(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1)) - lneqvt1 = A(1,1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - continue -! lneqvt1=A(i,j,ii) - else - lneqvt1 = lneqvt1 .neqv. A(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3211 - subroutine RED3211 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2,iit1 - integer coor(3),lcoor -!dvm$ distribute A(BLOCK,*,BLOCK) - - tname='RED3211' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i*NL*NL+j*NL+ii - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL*NL*NL - imax1=N+M+K+1+NL*NL*NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - lcoor=3 - coor(1)=0 - coor(2)=0 - coor(3)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$* reduction( maxloc( imaxt1,coor,3)) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1)then - imaxt1=A(i,j,ii) - coor(1)=i - coor(2)=j - coor(3)=ii - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3212 - subroutine RED3212 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2,iit1 - integer coor(3),lcoor -!dvm$ distribute A(*,BLOCK,BLOCK) - - tname='RED3212' - allocate (A(N,M,K),C(N,M,K)) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i*NL*NL+j*NL+ii - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL*NL*NL) - imin1=-(N+M+K+1+NL*NL*NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - lcoor=3 - coor(1)=0 - coor(2)=0 - coor(3)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$* reduction( minloc( imint1,coor,3)) - do i=2,N - do j=1,M - do ii=1,K - if (A(i,j,ii).LT.imint1)then - imint1=A(i,j,ii) - coor(1)=i - coor(2)=j - coor(3)=ii - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3213 - subroutine RED3213 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,BLOCK,*) - - tname='RED3213' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3m(C,NN,MM,KK,NNL,isum1) - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -!dvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - ni1=N/2 - nj1=M/2 - nii1=K/2 - A(ni1,nj1,nii1)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -!dvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - isumt1 = 0 -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED3214 - subroutine RED3214 - integer, parameter :: N = 16,M=8,K=16,NL=1 - character*7 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:),CL(:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ align B(I,J,II) with A(I,J,II) - - tname='RED3214' - allocate (A(N,M,K),C(N,M,K)) - allocate (B(N,M,K),CL(N,M,K)) - - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - call serlog3(CL,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - B(i,j,ii) = .true. - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - B(i,j,ii)=.false. - enddo - enddo - enddo - -!dvm$ remote_access (B(1,1,1)) - landt1 = B(1,1,1) - iprodt1 = 1 - -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - A(i,j,ii) = i - else - A(i,j,ii) =1 - endif - enddo - enddo - enddo - -!dvm$ actual(iprodt1,landt1) -!dvm$ region -!dvm$ parallel (i,j,ii) on A(i,j,ii), reduction( product( iprodt1 ), -!dvm$* and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then -! landt1=B(i,j,ii) - else - landt1 = landt1 .and. B(i,j,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum3(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - - subroutine sersum3m(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - - end - - subroutine sersum3mr(AR,N,M,K,NL,S) - real AR(N,M,K) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprod3(AR,N,M,K,NL,P) - integer AR(N,M,K) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - AR(i,j,ii) = i - else - AR(i,j,ii) =1 - endif - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprodr3(AR,N,M,K,NL,P) - real AR(N,M,K) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - if ((i.eq.j).and.(j.eq.ii)) then - AR(i,j,ii) = i - else - AR(i,j,ii) =1. - endif - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - - subroutine serlog3(AR,N,M,K,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,1 - do j=1,M,1 - do ii=1,K,2 - AR(i,j,ii) = .true. - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=2,K,2 - AR(i,j,ii)=.false. - enddo - enddo - enddo - - do i=1,N - do j= 1,M - do ii=1,K - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1)) then - LAND=AR(1,1,1) - LOR=AR(1,1,1) - LEQV=AR(1,1,1) - LNEQV=AR(1,1,1) - else - LAND = LAND .and. AR(i,j,ii) - LOR = LOR .or.AR(i,j,ii) - LEQV = LEQV .eqv. AR(i,j,ii) - LNEQV = LNEQV .neqv. AR(i,j,ii) - endif - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red41.fdv deleted file mode 100644 index 0ceaa97..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red41.fdv +++ /dev/null @@ -1,1200 +0,0 @@ - program RED41 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M,K,L). - - print *,'===START OF RED41=======================' -C -------------------------------------------------- - call red4101 -C -------------------------------------------------- - call red4102 -C -------------------------------------------------- - call red4103 -C ------------------------------------------------- - call red4104 -C ------------------------------------------------- - call red4105 -C ------------------------------------------------- - call red4106 -C -------------------------------------------------- - call red4107 -C -------------------------------------------------- - call red4108 -C -------------------------------------------------- - call red4109 -C ------------------------------------------------- - call red4110 -C ------------------------------------------------- - call red4111 -C ------------------------------------------------- - call red4112 -C ------------------------------------------------- - call red4113 -C -------------------------------------------------- - call red4114 -C -------------------------------------------------- - -C -C - print *,'=== END OF RED41 ========================= ' - end - -C ----------------------------------------------------RED4101 - subroutine RED4101 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4101' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4(C,NN,MM,KK,LL,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4102 - subroutine RED4102 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=10 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4102' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4103 - subroutine RED4103 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4103' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED4104 - subroutine RED4104 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4104' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( min( imint1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4105 - subroutine RED4105 - integer, parameter :: N = 16,M=8,K=8,L=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4105' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - - imax1=N+M+K+L+1.+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED4106 - subroutine RED4106 - integer, parameter :: N = 8,M=8,K=8,L=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4106' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprodr4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4107 - subroutine RED4107 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4107' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - landt1 = A(1,1,1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=A(i,j,ii,jj) - else - landt1 = landt1 .and. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4108 - subroutine RED4108 - integer, parameter :: N = 16,M=8,K=16,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4108' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lort1 = A(1,1,1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lORt1=A(i,j,ii,jj) - else - lort1 = lort1 .or. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4109 - subroutine RED4109 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4109' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - leqvt1 = A(1,1,1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! leqvt1=A(i,j,ii,jj) - else - leqvt1 = leqvt1 .eqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4110 - subroutine RED4110 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4110' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lneqvt1 = A(1,1,1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lneqvt1=A(i,j,ii,jj) - else - lneqvt1 = lneqvt1 .neqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4111 - subroutine RED4111 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4111' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i * NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL*NL*NL*NL - imax1=N+M+K+L+1+NL*NL*NL*NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( maxloc( imaxt1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1)then - imaxt1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - *.and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4112 - subroutine RED4112 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4112' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i*NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL*NL*NL*NL ) - - imin1=-(N+M+K+L+1+NL*NL*NL*NL ) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( minloc( imint1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1)then - imint1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - * .and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4113 - subroutine RED4113 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='RED4113' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL -c print *,'before remote' - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 -c print *,'before cycle' -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4114 - subroutine RED4114 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) - - tname='RED4114' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ), and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=B(i,j,ii,jj) - else - landt1 = landt1 .and. B(i,j,ii,jj) - endif -! landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - - do i=1,N - do j= 1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1).and.(jj.eq.1)) then - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - else - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - LEQV = LEQV .eqv. AR(i,j,ii,jj) - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red42.fdv deleted file mode 100644 index 8bf183e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red42.fdv +++ /dev/null @@ -1,1200 +0,0 @@ - program RED42 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M,K,L). - - print *,'===START OF RED42=======================' -C -------------------------------------------------- - call red4201 -C -------------------------------------------------- - call red4202 -C -------------------------------------------------- - call red4203 -C ------------------------------------------------- - call red4204 -C ------------------------------------------------- - call red4205 -C ------------------------------------------------- - call red4206 -C -------------------------------------------------- - call red4207 -C -------------------------------------------------- - call red4208 -C -------------------------------------------------- - call red4209 -C ------------------------------------------------- - call red4210 -C ------------------------------------------------- - call red4211 -C ------------------------------------------------- - call red4212 -C ------------------------------------------------- - call red4213 -C -------------------------------------------------- - call red4214 -C -------------------------------------------------- - -C -C - print *,'=== END OF RED42 ========================= ' - end - -C ----------------------------------------------------RED4201 - subroutine RED4201 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer isum1,isumt1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4201' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4(C,NN,MM,KK,LL,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4202 - subroutine RED4202 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=10 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4202' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4203 - subroutine RED4203 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*,*,*,*) - - tname='RED4203' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED4204 - subroutine RED4204 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*,*,*,*) - - tname='RED4204' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( min( imint1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4205 - subroutine RED4205 - integer, parameter :: N = 16,M=8,K=8,L=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(*,*,*,*) - - tname='RED4205' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - - imax1=N+M+K+L+1.+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED4206 - subroutine RED4206 - integer, parameter :: N = 8,M=8,K=8,L=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(*,*,*,*) - - tname='RED4206' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprodr4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4207 - subroutine RED4207 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4207' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - landt1 = A(1,1,1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=A(i,j,ii,jj) - else - landt1 = landt1 .and. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4208 - subroutine RED4208 - integer, parameter :: N = 16,M=8,K=16,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4208' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lort1 = A(1,1,1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lORt1=A(i,j,ii,jj) - else - lort1 = lort1 .or. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4209 - subroutine RED4209 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4209' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - leqvt1 = A(1,1,1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! leqvt1=A(i,j,ii,jj) - else - leqvt1 = leqvt1 .eqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4210 - subroutine RED4210 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4210' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lneqvt1 = A(1,1,1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lneqvt1=A(i,j,ii,jj) - else - lneqvt1 = lneqvt1 .neqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4211 - subroutine RED4211 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor -!dvm$ distribute A(*,*,*,*) - - tname='RED4211' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i*NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL*NL*NL*NL - imax1=N+M+K+L+1+NL*NL*NL*NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( maxloc( imaxt1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1)then - imaxt1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - *.and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4212 - subroutine RED4212 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor - -!dvm$ distribute A(*,*,*,*) - - tname='RED4212' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i*NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL*NL*NL*NL ) - - imin1=-(N+M+K+L+1+NL*NL*NL*NL ) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( minloc( imint1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1)then - imint1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - * .and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4213 - subroutine RED4213 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(*,*,*,*) - - tname='RED4213' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL -c print *,'before remote' - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 -c print *,'before cycle' -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4214 - subroutine RED4214 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(*,*,*,*) -!dvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) - - tname='RED4214' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ), and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=B(i,j,ii,jj) - else - landt1 = landt1 .and. B(i,j,ii,jj) - endif -! landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - - do i=1,N - do j= 1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1).and.(jj.eq.1)) then - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - else - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - LEQV = LEQV .eqv. AR(i,j,ii,jj) - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red43.fdv deleted file mode 100644 index 0739f5b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTION/red43.fdv +++ /dev/null @@ -1,1200 +0,0 @@ - program RED43 - -c TESTING OF THE REDUCTION CLAUSE . -c REDUCTION OPERATION : SUM,PRODUCT,MAX,MIN,AND,OR, EQV, -C NEQV,MAXLOC,MINLOC AND THEIR COMBINATION ARE EXECUTED -c FOR DISTRIBUTED ARRAY A(N,M,K,L). - - print *,'===START OF RED43=======================' -C -------------------------------------------------- - call red4301 -C -------------------------------------------------- - call red4302 -C -------------------------------------------------- - call red4303 -C ------------------------------------------------- - call red4304 -C ------------------------------------------------- - call red4305 -C ------------------------------------------------- - call red4306 -C -------------------------------------------------- - call red4307 -C -------------------------------------------------- - call red4308 -C -------------------------------------------------- - call red4309 -C ------------------------------------------------- - call red4310 -C ------------------------------------------------- - call red4311 -C ------------------------------------------------- - call red4312 -C ------------------------------------------------- - call red4313 -C -------------------------------------------------- - call red4314 -C -------------------------------------------------- - -C -C - print *,'=== END OF RED43 ========================= ' - end - -C ----------------------------------------------------RED4301 - subroutine RED4301 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer isum1,isumt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) - - tname='RED4301' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4(C,NN,MM,KK,LL,NNL,isum1) - isumt1 = 0 - -!dvm$ actual(isumt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), reduction( sum( isumt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1) - - if (isum1 .eq.isumt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4302 - subroutine RED4302 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=10 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) - - tname='RED4302' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1 - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4303 - subroutine RED4303 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) - - tname='RED4303' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------RED4304 - subroutine RED4304 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) - - tname='RED4304' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - -!dvm$ actual(imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( min( imint1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1) - - if (imin1 .eq.imint1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4305 - subroutine RED4305 - integer, parameter :: N = 16,M=8,K=8,L=8 - real, parameter :: NL=1000. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer ni - real imax1,imaxt1 -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) - - tname='RED4305' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - - imax1=N+M+K+L+1.+NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - -!dvm$ actual(imaxt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( max( imaxt1 ) ) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1) - - if (imax1 .eq.imaxt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------RED4306 - subroutine RED4306 - integer, parameter :: N = 8,M=8,K=8,L=8 - real, parameter :: NL=1. - character*7 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real iprod1,iprodt1 - real NNl - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) - - tname='RED4306' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprodr4(C,NN,MM,KK,LL,NNL,iprod1) - iprodt1 = 1. - -!dvm$ actual(iprodt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1) - - if (iprod1 .eq.iprodt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4307 - subroutine RED4307 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,leqv1,lneqv1,lor1 - -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) - - tname='RED4307' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - landt1 = A(1,1,1,1) - -!dvm$ actual(landt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( AND( landt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=A(i,j,ii,jj) - else - landt1 = landt1 .and. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(landt1) - - if (land1 .eqv.landt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4308 - subroutine RED4308 - integer, parameter :: N = 16,M=8,K=16,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,lort1,leqv1,lneqv1 - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) - - tname='RED4308' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lort1 = A(1,1,1,1) - -!dvm$ actual(lort1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( OR( lort1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lORt1=A(i,j,ii,jj) - else - lort1 = lort1 .or. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lort1) - - if (lor1 .eqv.lort1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4309 - subroutine RED4309 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,leqvt1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) - - tname='RED4309' - allocate (A(N,M,K,L),C(N,M,K,L)) - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - leqvt1 = A(1,1,1,1) - -!dvm$ actual(leqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( EQV( leqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! leqvt1=A(i,j,ii,jj) - else - leqvt1 = leqvt1 .eqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(leqvt1) - - if (leqv1 .eqv.leqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C -----------------------------------------------------RED4310 - subroutine RED4310 - integer, parameter :: N = 16,M=8,K=8,L=8 - character*7 tname - logical, allocatable :: A(:,:,:,:),C(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1,lneqvt1 - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) - - tname='RED4310' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NN=N - MM=M - KK=K - LL=L - call serlog4(C,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - A(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - A(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (A(1,1,1,1)) - lneqvt1 = A(1,1,1,1) - -!dvm$ actual(lneqvt1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( NEQV( lneqvt1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! lneqvt1=A(i,j,ii,jj) - else - lneqvt1 = lneqvt1 .neqv. A(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(lneqvt1) - - if (lneqv1 .eqv.lneqvt1) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4311 - subroutine RED4311 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) - - tname='RED4311' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i*NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL*NL*NL*NL - imax1=N+M+K+L+1+NL*NL*NL*NL - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imaxt1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( maxloc( imaxt1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1)then - imaxt1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imaxt1,coor) - - if ((imax1 .eq.imaxt1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - *.and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4312 - subroutine RED4312 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=100 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer it1,jt1,it2,jt2,iit1,jjt1 - integer coor(4),lcoor - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) - - tname='RED4312' - allocate (A(N,M,K,L),C(N,M,K,L)) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i*NL*NL*NL+j*NL*NL+ii*NL+jj - enddo - enddo - enddo - enddo - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL*NL*NL*NL ) - - imin1=-(N+M+K+L+1+NL*NL*NL*NL ) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - lcoor=4 - coor(1)=0 - coor(2)=0 - coor(3)=0 - coor(4)=0 - -!dvm$ actual(imint1,coor,lcoor) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( minloc( imint1,coor,4)) - do i=2,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).LT.imint1)then - imint1=A(i,j,ii,jj) - coor(1)=i - coor(2)=j - coor(3)=ii - coor(4)=jj - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(imint1,coor) - - if ((imin1 .eq.imint1) .and.(coor(1).eq.ni) - *.and.(coor(2).eq.nj).and.(coor(3).eq.nii) - * .and.(coor(4).eq.njj)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4313 - subroutine RED4313 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) - - tname='RED4313' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL -c print *,'before remote' - -!dvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -!dvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 -c print *,'before cycle' -!dvm$ actual(isumt1,imaxt1,imint1) -!dvm$ region -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( sum( isumt1 ), -!dvm$*max( imaxt1 ),min( imint1 ) ) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(isumt1,imaxt1,imint1) -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------RED4314 - subroutine RED4314 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1 - character*7 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -!dvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) - - tname='RED4314' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -!dvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - iprodt1 = 1 - -!dvm$ actual(iprodt1,landt1) -!dvm$ region local(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - A(i,j,ii,jj) = i - else - A(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$* reduction( product( iprodt1 ), and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - if ((i.eq.1).and.(j.eq.1) - *.and.(ii.eq.1).and.(jj.eq.1)) then -! landt1=B(i,j,ii,jj) - else - landt1 = landt1 .and. B(i,j,ii,jj) - endif -! landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(iprodt1,landt1) - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,CL) - deallocate (A,C) - - end -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1 - endif - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if ((i.eq.j).and.(j.eq.ii).and.(ii.eq.jj)) then - AR(i,j,ii,jj) = i - else - AR(i,j,ii,jj) =1. - endif - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - - do i=1,N - do j= 1,M - do ii=1,K - do jj=1,L - if ((i.eq.1).and.(j.eq.1).and.(ii.eq.1).and.(jj.eq.1)) then - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - else - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - LEQV = LEQV .eqv. AR(i,j,ii,jj) - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - endif - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda11.fdv deleted file mode 100644 index 677f781..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda11.fdv +++ /dev/null @@ -1,400 +0,0 @@ - program REDA11 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUP IS EXECUTED FOR DISTRIBUTED ARRAY A(N). -c - - print *,'===START OF REDA11========================' -C -------------------------------------------------- - call reda1101 -C -------------------------------------------------- - call reda1102 -C -------------------------------------------------- - call reda1103 -C -------------------------------------------------- - call reda1104 -C -------------------------------------------------- -C - print *,'=== END OF REDA11 ========================= ' - - end - -C ----------------------------------------------------REDA1101 - subroutine REDA1101 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - integer imax1,imaxt1 ,ni,imin1,imint1 - character(8) :: tname='REDA1101' - -!dvm$ distribute A(BLOCK) -!dvm$ reduction_group smaxmin - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1m(C,NN,NNL,isum1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - isumt1 = 0 - -!dvm$ parallel (i) on A(i), -!dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxt1) imaxt1=A(i) - if (A(i).LT.imint1) imint1=A(i) - enddo - -!dvm$ reduction_start smaxmin -!dvm$ reduction_wait smaxmin - - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A,C) - - end - -C -----------------------------------------------------REDA1102 - subroutine REDA1102 - integer, parameter :: N = 16, NL=1000 - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - logical, allocatable :: B(:),CL(:) - logical land1,landt1,lor1,leqv1,lneqv1 - character(8) :: tname='REDA1102' - -!dvm$ distribute A(BLOCK) -!dvm$ align B(I) with A(I) -!dvm$ reduction_group prodand - allocate (A(N),C(N)) - allocate (B(N),CL(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - call serlog1(CL,NN,land1,lor1,leqv1,lneqv1) - -!dvm$ parallel (i) on B(i) - do i=1,N,2 - B(i) = .true. - enddo -!dvm$ parallel (i) on B(i+1) - do i=1,N-1,2 - B(i+1)=.false. - enddo - -!dvm$ remote_access (B(1)) - landt1 = B(1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - iprodt1 = 1 - -!dvm$ parallel (i) on B(i), -!dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - iprodt1 = iprodt1*A(i) - landt1 = landt1 .and.B(i) - enddo - -!dvm$ reduction_start prodand - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -!dvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A,C) - deallocate (B,CL) - - end - -C ----------------------------------------------------REDA1103 - subroutine REDA1103 - integer, parameter :: N = 8,NL=1000 - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,lit - integer imaxloct1,iminloct1 - character(8) :: tname='REDA1103' - -!dvm$ distribute A(BLOCK) -!dvm$ reduction_group locmaxmin -c dvm$ reduction_group maxminloc - - allocate (A(N),C(N)) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2+2 - A(ni)=N+1+NL - imax1=N+1+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2+1 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - lit=1 - it1=0 - it2=0 - -!dvm$ parallel (i) on A(i), -!dvm$*reduction(locmaxmin:max( imaxt1 ), -!dvm$*maxloc( imaxloct1,it1,lit), -!dvm$*minloc( iminloct1,it2,lit)) - - do i=1,N - if (A(i).GT.imaxt1) imaxt1 =A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo - -!dvm$ reduction_start locmaxmin -!dvm$ reduction_wait locmaxmin - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA1104 - subroutine REDA1104 - integer, parameter :: N = 16 - real, parameter :: NL=1000. - real, allocatable :: A(:),C(:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1,lit - character(8) :: tname='REDA1104' - -!dvm$ distribute A(BLOCK) -!dvm$ reduction_group locsumloc - - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1mr(C,NN,NNL,isum1) - -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2+1 - A(ni)=N+1.+NL - imax1=N+1.+NL - -!dvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2+2 - A(ni1)=-(N+1.+NL) - imin1=-(N+1.+NL) - -!dvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - isumt1 = 0. - lit=1 - it1=0 - it2=0 - -!dvm$ parallel (i) on A(i), -!dvm$*reduction(locsumloc:sum( isumt1 ), -!dvm$*maxloc( imaxloct1,it1,lit),minloc( iminloct1,it2,lit )) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo - -!dvm$ reduction_start locsumloc -!dvm$ reduction_wait locsumloc - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - - deallocate (A,C) - - end - -C ----------------------------------------------------- - - subroutine sersum1(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - -C ------ - subroutine sersum1m(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - -C ------ - subroutine sersum1mr(AR,N,NL,S) - real AR(N) - real S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2+1 - AR(ni)=N+1.+NL - ni=N/2+2 - AR(ni)=-(N+1.+NL) - S=0. - do i=1,N - S = S+ AR(i) - enddo - end - -C ------ - subroutine serprod1(AR,N,NL,P) - integer AR(N) - integer P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1 - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serprodr1(AR,N,NL,P) - real AR(N) - real P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1. - do i=1,N - P = P* AR(i) - enddo - end - -C ------ - subroutine serlog1(AR,N,LAND,LOR,LEQV,LNEQV) - logical AR(N) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,2 - AR(i) = .true. - AR(i+1)=.false. - enddo - LAND=AR(1) - LOR=AR(1) - LEQV=AR(1) - LNEQV=AR(1) - do i=2,N - LAND = LAND .and. AR(i) - LOR = LOR .or.AR(i) - enddo - do i=1,N,2 - LEQV = LEQV .eqv. AR(i) - enddo - do i=1,N - LNEQV = LNEQV .neqv. AR(i) - enddo - end - -C ----------------------------------------------------- - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda12.fdv deleted file mode 100644 index 2a36de2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda12.fdv +++ /dev/null @@ -1,392 +0,0 @@ - program REDA12 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N). -c - - print *,'===START OF REDA12========================' -C -------------------------------------------------- - call reda1201 -C -------------------------------------------------- - call reda1202 -C -------------------------------------------------- - call reda1203 -C -------------------------------------------------- - call reda1204 -C -------------------------------------------------- -C - print *,'=== END OF REDA12 ========================= ' - end - - -C ----------------------------------------------------REDA1201 - subroutine REDA1201 - integer, parameter :: N = 16,NL=1000 - character*8 tname - integer, allocatable :: A(:),C(:) - integer isum1,isumt1 - integer imax1,imaxt1 ,ni,imin1,imint1 - -cdvm$ distribute A(*) -cdvm$ reduction_group smaxmin - tname='REDA1201' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1m(C,NN,NNL,isum1) - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2-1 - A(ni)=N+1+NL - imax1=N+1+NL - -cdvm$ remote_access (A(1)) - imaxt1=A(1) - - ni=N/2 - A(ni)=-(N+1+NL) - imin1=-(N+1+NL) - -cdvm$ remote_access (A(1)) - imint1=A(1) - - isumt1 = 0 - -*dvm$ parallel (i) on A(i), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxt1) imaxt1=A(i) - if (A(i).LT.imint1) imint1=A(i) - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin - - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C -----------------------------------------------------REDA1202 - subroutine REDA1202 - integer, parameter :: N = 16, NL=1000 - character*8 tname - integer, allocatable :: A(:),C(:) - integer iprod1,iprodt1 - logical, allocatable :: B(:),CL(:) - logical land1,landt1,lor1,leqv1,lneqv1 - -cdvm$ distribute A(*) -cdvm$ align B(I) with A(I) -cdvm$ reduction_group prodand - tname='REDA1202' - allocate (A(N),C(N)) - allocate (B(N),CL(N)) - NNL=NL - NN=N - call serprod1(C,NN,NNL,iprod1) - call serlog1(CL,NN,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i) on B(i) - do i=1,N,2 - B(i) = .true. - enddo -*dvm$ parallel (i) on B(i+1) - do i=1,N-1,2 - B(i+1)=.false. - enddo - -cdvm$ remote_access (B(1)) - landt1 = B(1) - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - iprodt1 = 1 - -*dvm$ parallel (i) on A(i), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - iprodt1 = iprodt1*A(i) - landt1 = landt1 .and.B(i) - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA1203 - subroutine REDA1203 - integer, parameter :: N = 8,NL=1000 - character*8 tname - integer, allocatable :: A(:),C(:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,lit - integer imaxloct1,iminloct1 -cdvm$ distribute A(*) -cdvm$ reduction_group locmaxmin -c dvm$ reduction_group maxminloc - tname='REDA1203' - allocate (A(N),C(N)) - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2+2 - A(ni)=N+1+NL - imax1=N+1+NL - -cdvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2+1 - A(ni1)=-(N+1+NL) - imin1=-(N+1+NL) - -cdvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - lit=1 - it1=0 - it2=0 - -*dvm$ parallel (i) on A(i), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,it1,lit), -*dvm$*minloc( iminloct1,it2,lit)) - do i=1,N - if (A(i).GT.imaxt1) imaxt1 =A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA1204 - subroutine REDA1204 - integer, parameter :: N = 16 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:),C(:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1,lit - -cdvm$ distribute A(*) -cdvm$ reduction_group locsumloc - - tname='REDA1204' - allocate (A(N),C(N)) - NNL=NL - NN=N - call sersum1mr(C,NN,NNL,isum1) - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = i+NL - enddo - - ni=N/2+1 - A(ni)=N+1.+NL - imax1=N+1.+NL - -cdvm$ remote_access (A(1)) - imaxt1=A(1) - - imaxloct1=imaxt1 - ni1=N/2+2 - A(ni1)=-(N+1.+NL) - imin1=-(N+1.+NL) - -cdvm$ remote_access (A(1)) - imint1=A(1) - - iminloct1=imint1 - isumt1 = 0. - lit=1 - it1=0 - it2=0 - -*dvm$ parallel (i) on A(i), -*dvm$*reduction(locsumloc:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,it1,lit),minloc( iminloct1,it2,lit )) - do i=1,N - isumt1 = isumt1+A(i) - if (A(i).GT.imaxloct1) then - imaxloct1=A(i) - it1=i - endif - if (A(i).LT.iminloct1) then - iminloct1=A(i) - it2=i - endif - enddo - -cdvm$ reduction_start locsumloc -cdvm$ reduction_wait locsumloc - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(it1.eq.ni) - *.and.(it2.eq.ni1) ) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - -C ----------------------------------------------------- - - subroutine sersum1(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - subroutine sersum1m(AR,N,NL,S) - integer AR(N) - integer S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2-1 - AR(ni)=N+1+NL - ni=N/2 - AR(ni)=-(N+1+NL) - S=0 - do i=1,N - s = s+ AR(i) - enddo - end - - subroutine sersum1mr(AR,N,NL,S) - real AR(N) - real S,NL - do i=1,N - AR(i) = i+NL - enddo - ni=N/2+1 - AR(ni)=N+1.+NL - ni=N/2+2 - AR(ni)=-(N+1.+NL) - S=0. - do i=1,N - S = S+ AR(i) - enddo - end - - subroutine serprod1(AR,N,NL,P) - integer AR(N) - integer P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1 - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serprodr1(AR,N,NL,P) - real AR(N) - real P,NL - do i=1,N - AR(i) = i+NL - enddo - P=1. - do i=1,N - P = P* AR(i) - enddo - end - - subroutine serlog1(AR,N,LAND,LOR,LEQV,LNEQV) - logical AR(N) - logical LAND,LOR,LEQV,LNEQV - do i=1,N,2 - AR(i) = .true. - AR(i+1)=.false. - enddo - LAND=AR(1) - LOR=AR(1) - LEQV=AR(1) - LNEQV=AR(1) - do i=2,N - LAND = LAND .and. AR(i) - LOR = LOR .or.AR(i) - enddo - do i=1,N,2 - LEQV = LEQV .eqv. AR(i) - enddo - do i=1,N - LNEQV = LNEQV .neqv. AR(i) - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda21.fdv deleted file mode 100644 index 19c313b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda21.fdv +++ /dev/null @@ -1,495 +0,0 @@ - program REDA21 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M). -c - print *,'===START OF REDA21=======================' -C -------------------------------------------------- - call reda2101 -C -------------------------------------------------- - call reda2102 -C -------------------------------------------------- - call reda2103 -C ------------------------------------------------- - call reda2104 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA21 ========================= ' - end - - - - -C ----------------------------------------------------REDA2101 - subroutine REDA2101 - integer, parameter :: N = 16,M=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,BLOCK) -cdvm$ reduction_group smaxmin - tname='REDA2101' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2m(C,NN,MM,NNL,isum1) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA2102 - subroutine REDA2102 - integer, parameter :: N = 16,M=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:),CL(:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -cdvm$ distribute A(BLOCK,BLOCK) -cdvm$ align B(I,J) with A(I,J) -cdvm$ reduction_group prodand - - tname='REDA2102' - allocate (A(N,M),C(N,M)) - allocate (B(N,M),CL(N,M)) - NNL=NL - NN=N - MM=M - call serprod2(C,NN,MM,NNL,iprod1) - call serlog2(CL,NN,MM,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=1,M,2 - B(i,j) = .true. - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=2,M,2 - B(i,j)=.false. - enddo - enddo -cdvm$ remote_access (B(1,1)) - landt1 = B(1,1) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - iprodt1 = 1 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - landt1 = landt1 .and.B(i,j) - enddo - enddo -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -cdvm$ reduction_wait prodand - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA2103 - subroutine REDA2103 - integer, parameter :: N = 8, M=4,PN = 2,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,jt1,jt2 - integer imaxloct1,iminloct1,lcoor - integer coor1(2),coor2(2) -cdvm$ distribute A(BLOCK,BLOCK) -cdvm$ reduction_group locmaxmin - tname='REDA2103' - allocate (A(N,M),C(N,M)) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - A(ni1,nj1)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - iminloct1=imint1 - lcoor=2 - coor1(1)=0 - coor1(2)=0 - coor2(1)=0 - coor2(2)=0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1 =A(i,j) - if (A(i,j).GT.imaxloct1) then - imaxloct1=A(i,j) - coor1(1)=i - coor1(2)=j - endif - if (A(i,j).LT.iminloct1) then - iminloct1=A(i,j) - coor2(1)=i - coor2(2)=j - endif - enddo - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1) - *.and.(coor1(2).eq.nj) .and.(coor2(2).eq.nj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA2104 - subroutine REDA2104 - - integer, parameter :: N = 8,M=6 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:),C(:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1,jt1,jt2 - integer coor1(2),coor2(2),lcoor -cdvm$ distribute A(BLOCK,BLOCK) -cdvm$ reduction_group locsum - - tname='REDA2104' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2mr(C,NN,MM,NNL,isum1) -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -c ni=N/2+1 -c nj=M/2+1 - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1.+NL - imax1=N+M+1.+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - A(ni1,nj1)=-(N+M+1.+NL) - imin1=-(N+M+1.+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=2 - coor1(1)=0 - coor1(2)=0 - coor2(1)=0 - coor2(2)=0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor ),minloc( iminloct1,coor2,lcoor )) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxloct1) then - imaxloct1=A(i,j) - coor1(1)=i - coor1(2)=j - endif - if (A(i,j).LT.iminloct1) then - iminloct1=A(i,j) - coor2(1)=i - coor2(2)=j - endif - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1) - *.and.(coor1(2).eq.nj) .and.(coor2(2).eq.nj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - subroutine sersum2(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine sersum2m(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1+NL - ni=N/2 - nj=M/2 - AR(ni,nj)=-(N+M+1+NL) - S=0 - - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - - end - - subroutine sersum2mr(AR,N,M,NL,S) - real AR(N,M) - real S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - AR(ni,nj)=N+M+1.+NL - ni1=N/2-1 - nj1=M/2-1 - AR(ni1,nj1)=-(N+M+1.+NL) - S=0. - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine serprod2(AR,N,M,NL,P) - integer AR(N,M) - integer P,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - P=1 - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serprodr2(AR,N,M,NL,P) - real AR(N,M) - real P,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - P=1. - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serlog2(AR,N,M,LAND,LOR,LEQV,LNEQV) - logical AR(N,M) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M,2 - AR(i,J) = .true. - enddo - enddo - do i=1,N - do j=2,M,2 - AR(i,j)=.false. - enddo - enddo - LAND=AR(1,1) - LOR=AR(1,1) - LEQV=AR(1,1) - LNEQV=AR(1,1) - do i=1,N - do j=1,M - LAND = LAND .and. AR(i,j) - LOR = LOR .or.AR(i,j) - enddo - enddo - do i=1,N - do j=1,M - LEQV = LEQV .eqv. AR(i,j) - enddo - enddo - do i=1,N - do j=1,M - LNEQV = LNEQV .neqv. AR(i,j) - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda22.fdv deleted file mode 100644 index 25ab6fd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda22.fdv +++ /dev/null @@ -1,495 +0,0 @@ - program REDA22 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M). -c - print *,'===START OF REDA22=======================' -C -------------------------------------------------- - call reda2201 -C -------------------------------------------------- - call reda2202 -C -------------------------------------------------- - call reda2203 -C ------------------------------------------------- - call reda2204 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA22 ========================= ' - end - - - - -C ----------------------------------------------------REDA2201 - subroutine REDA2201 - integer, parameter :: N = 16,M=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,*) -cdvm$ reduction_group smaxmin - tname='REDA2201' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2m(C,NN,MM,NNL,isum1) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - ni=N/2-1 - nj=M/2-1 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - ni=N/2 - nj=M/2 - A(ni,nj)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxt1) imaxt1=A(i,j) - if (A(i,j).LT.imint1) imint1=A(i,j) - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA2202 - subroutine REDA2202 - integer, parameter :: N = 16,M=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:),CL(:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -cdvm$ distribute A(*,BLOCK) -cdvm$ align B(I,J) with A(I,J) -cdvm$ reduction_group prodand - - tname='REDA2202' - allocate (A(N,M),C(N,M)) - allocate (B(N,M),CL(N,M)) - NNL=NL - NN=N - MM=M - call serprod2(C,NN,MM,NNL,iprod1) - call serlog2(CL,NN,MM,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=1,M,2 - B(i,j) = .true. - enddo - enddo - -*dvm$ parallel (i,j) on B(i,j) - do i=1,N - do j=2,M,2 - B(i,j)=.false. - enddo - enddo -cdvm$ remote_access (B(1,1)) - landt1 = B(1,1) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - iprodt1 = 1 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - iprodt1 = iprodt1*A(i,j) - landt1 = landt1 .and.B(i,j) - enddo - enddo -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -cdvm$ reduction_wait prodand - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA2203 - subroutine REDA2203 - integer, parameter :: N = 8, M=4,PN = 2,NL=1000 - character*8 tname - integer, allocatable :: A(:,:),C(:,:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,jt1,jt2 - integer imaxloct1,iminloct1,lcoor - integer coor1(2),coor2(2) -cdvm$ distribute A(BLOCK,*) -cdvm$ reduction_group locmaxmin - tname='REDA2203' - allocate (A(N,M),C(N,M)) - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1+NL - imax1=N+M+1+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - A(ni1,nj1)=-(N+M+1+NL) - imin1=-(N+M+1+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - iminloct1=imint1 - lcoor=2 - coor1(1)=0 - coor1(2)=0 - coor2(1)=0 - coor2(2)=0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - if (A(i,j).GT.imaxt1) imaxt1 =A(i,j) - if (A(i,j).GT.imaxloct1) then - imaxloct1=A(i,j) - coor1(1)=i - coor1(2)=j - endif - if (A(i,j).LT.iminloct1) then - iminloct1=A(i,j) - coor2(1)=i - coor2(2)=j - endif - enddo - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(imaxt1.eq.imaxloct1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1) - *.and.(coor1(2).eq.nj) .and.(coor2(2).eq.nj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA2204 - subroutine REDA2204 - - integer, parameter :: N = 8,M=6 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:),C(:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer it1,it2,ni,ni1,jt1,jt2 - integer coor1(2),coor2(2),lcoor -cdvm$ distribute A(*,BLOCK) -cdvm$ reduction_group locsum - - tname='REDA2204' - allocate (A(N,M),C(N,M)) - NNL=NL - NN=N - MM=M - call sersum2mr(C,NN,MM,NNL,isum1) -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = i+j+NL - enddo - enddo - -c ni=N/2+1 -c nj=M/2+1 - ni=N/2 - nj=M/2 - A(ni,nj)=N+M+1.+NL - imax1=N+M+1.+NL - -cdvm$ remote_access (A(1,1)) - imaxt1=A(1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - A(ni1,nj1)=-(N+M+1.+NL) - imin1=-(N+M+1.+NL) - -cdvm$ remote_access (A(1,1)) - imint1=A(1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=2 - coor1(1)=0 - coor1(2)=0 - coor2(1)=0 - coor2(2)=0 - -*dvm$ parallel (i,j) on A(i,j), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor ),minloc( iminloct1,coor2,lcoor )) - do i=1,N - do j=1,M - isumt1 = isumt1+A(i,j) - if (A(i,j).GT.imaxloct1) then - imaxloct1=A(i,j) - coor1(1)=i - coor1(2)=j - endif - if (A(i,j).LT.iminloct1) then - iminloct1=A(i,j) - coor2(1)=i - coor2(2)=j - endif - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1) - *.and.(coor1(2).eq.nj) .and.(coor2(2).eq.nj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - subroutine sersum2(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - S=0 - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine sersum2m(AR,N,M,NL,S) - integer AR(N,M) - integer S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - - ni=N/2-1 - nj=M/2-1 - AR(ni,nj)=N+M+1+NL - ni=N/2 - nj=M/2 - AR(ni,nj)=-(N+M+1+NL) - S=0 - - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - - end - - subroutine sersum2mr(AR,N,M,NL,S) - real AR(N,M) - real S,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - ni=N/2 - nj=M/2 - AR(ni,nj)=N+M+1.+NL - ni1=N/2-1 - nj1=M/2-1 - AR(ni1,nj1)=-(N+M+1.+NL) - S=0. - do i=1,N - do j=1,M - s = s+ AR(i,j) - enddo - enddo - end - - subroutine serprod2(AR,N,M,NL,P) - integer AR(N,M) - integer P,NL - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - P=1 - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serprodr2(AR,N,M,NL,P) - real AR(N,M) - real P,NL - - do i=1,N - do j=1,M - AR(i,j) = i+j+NL - enddo - enddo - P=1. - do i=1,N - do j=1,M - P = P* AR(i,j) - enddo - enddo - end - - subroutine serlog2(AR,N,M,LAND,LOR,LEQV,LNEQV) - logical AR(N,M) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M,2 - AR(i,J) = .true. - enddo - enddo - do i=1,N - do j=2,M,2 - AR(i,j)=.false. - enddo - enddo - LAND=AR(1,1) - LOR=AR(1,1) - LEQV=AR(1,1) - LNEQV=AR(1,1) - do i=1,N - do j=1,M - LAND = LAND .and. AR(i,j) - LOR = LOR .or.AR(i,j) - enddo - enddo - do i=1,N - do j=1,M - LEQV = LEQV .eqv. AR(i,j) - enddo - enddo - do i=1,N - do j=1,M - LNEQV = LNEQV .neqv. AR(i,j) - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda31.fdv deleted file mode 100644 index f15e2af..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda31.fdv +++ /dev/null @@ -1,568 +0,0 @@ - program REDA31 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M,K). -c - print *,'===START OF REDA31=======================' -C -------------------------------------------------- - call reda3101 -C -------------------------------------------------- - call reda3102 -C -------------------------------------------------- - call reda3103 -C ------------------------------------------------- - call reda3104 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA31 ========================= ' - end - - - - -C ----------------------------------------------------REDA3101 - subroutine REDA3101 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group smaxmin - - tname='REDA3101' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3m(C,NN,MM,KK,NNL,isum1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA3102 - subroutine REDA3102 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:),CL(:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ align B(I,J,II) with A(I,J,II) -cdvm$ reduction_group prodand - - tname='REDA3102' - allocate (A(N,M,K),C(N,M,K)) - allocate (B(N,M,K),CL(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - call serlog3(CL,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - B(i,j,ii) = .true. - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - B(i,j,ii)=.false. - enddo - enddo - enddo - -cdvm$ remote_access (B(1,1,1)) - landt1 = B(1,1,1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - iprodt1 = 1 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - landt1 = landt1 .and.B(i,j,ii) - enddo - enddo - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA3103 - subroutine REDA3103 - integer, parameter :: N = 8, M=4,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,jt1,jt2 - integer imaxloct1,iminloct1,lcoor - integer coor1(3),coor2(3) - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group locmaxmin - - tname='REDA3103' - allocate (A(N,M,K),C(N,M,K)) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - A(ni1,nj1,nii1)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - iminloct1=imint1 - lcoor=3 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1 =A(i,j,ii) - if (A(i,j,ii).GT.imaxloct1) then - imaxloct1=A(i,j,ii) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - endif - if (A(i,j,ii).LT.iminloct1) then - iminloct1=A(i,j,ii) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - endif - enddo - enddo - enddo - -cdvm$ reduction_startlocmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1).and. - * (imaxt1.eq.imaxloct1).and.(coor1(1).eq.ni).and. - * (coor1(2).eq.nj).and.(coor1(3).eq.nii).and. - * (coor2(1).eq.ni1) .and.(coor2(2).eq.nj1) - * .and.(coor2(3).eq.nii1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA3104 - subroutine REDA3104 - integer, parameter :: N = 8,M=6,K=16 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:,:),C(:,:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer ni,ni1,lcoor - integer coor1(3),coor2(3) - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group locsum - - tname='REDA3104' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3mr(C,NN,MM,KK,NNL,isum1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1.+NL - imax1=N+M+K+1.+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - A(ni1,nj1,nii1)=-(N+M+K+1.+NL) - imin1=-(N+M+K+1.+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=3 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor),minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxloct1) then - imaxloct1=A(i,j,ii) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - endif - if (A(i,j,ii).LT.iminloct1) then - iminloct1=A(i,j,ii) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - endif - enddo - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1).and.(coor1(2).eq.nj) - *.and.(coor2(2).eq.nj1) - *.and.(coor1(3).eq.nii).and.(coor2(3).eq.nii1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - - subroutine sersum3(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine sersum3m(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine sersum3mr(AR,N,M,K,NL,S) - real AR(N,M,K) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprod3(AR,N,M,K,NL,P) - integer AR(N,M,K) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprodr3(AR,N,M,K,NL,P) - real AR(N,M,K) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serlog3(AR,N,M,K,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K,2 - AR(i,j,ii) = .true. - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=2,K,2 - AR(i,j,ii)=.false. - enddo - enddo - enddo - LAND=AR(1,1,1) - LOR=AR(1,1,1) - LEQV=AR(1,1,1) - LNEQV=AR(1,1,1) - do i=1,N - do j=1,M - do ii=1,K - LAND = LAND .and. AR(i,j,ii) - LOR = LOR .or.AR(i,j,ii) - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - LEQV = LEQV .eqv. AR(i,j,ii) - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - LNEQV = LNEQV .neqv. AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda32.fdv deleted file mode 100644 index ae5d390..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda32.fdv +++ /dev/null @@ -1,568 +0,0 @@ - program REDA32 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M,K). -c - print *,'===START OF REDA32=======================' -C -------------------------------------------------- - call reda3201 -C -------------------------------------------------- - call reda3202 -C -------------------------------------------------- - call reda3203 -C ------------------------------------------------- - call reda3204 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA32 ========================= ' - end - - - - -C ----------------------------------------------------REDA3201 - subroutine REDA3201 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,BLOCK,*) -cdvm$ reduction_group smaxmin - - tname='REDA3201' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3m(C,NN,MM,KK,NNL,isum1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxt1) imaxt1=A(i,j,ii) - if (A(i,j,ii).LT.imint1) imint1=A(i,j,ii) - enddo - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA3202 - subroutine REDA3202 - integer, parameter :: N = 16,M=8,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:),CL(:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - -cdvm$ distribute A(BLOCK,*,BLOCK) -cdvm$ align B(I,J,II) with A(I,J,II) -cdvm$ reduction_group prodand - - tname='REDA3202' - allocate (A(N,M,K),C(N,M,K)) - allocate (B(N,M,K),CL(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call serprod3(C,NN,MM,KK,NNL,iprod1) - call serlog3(CL,NN,MM,KK,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K,2 - B(i,j,ii) = .true. - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=1,N - do j=1,M - do ii=2,K,2 - B(i,j,ii)=.false. - enddo - enddo - enddo - -cdvm$ remote_access (B(1,1,1)) - landt1 = B(1,1,1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - iprodt1 = 1 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - iprodt1 = iprodt1*A(i,j,ii) - landt1 = landt1 .and.B(i,j,ii) - enddo - enddo - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA3203 - subroutine REDA3203 - integer, parameter :: N = 8, M=4,K=16,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:),C(:,:,:) - integer imax1,imaxt1 ,ni,imin1,imint1,it1,it2,jt1,jt2 - integer imaxloct1,iminloct1,lcoor - integer coor1(3),coor2(3) - -cdvm$ distribute A(*,BLOCK,BLOCK) -cdvm$ reduction_group locmaxmin - - tname='REDA3203' - allocate (A(N,M,K),C(N,M,K)) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1+NL - imax1=N+M+K+1+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - A(ni1,nj1,nii1)=-(N+M+K+1+NL) - imin1=-(N+M+K+1+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - iminloct1=imint1 - lcoor=3 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - if (A(i,j,ii).GT.imaxt1) imaxt1 =A(i,j,ii) - if (A(i,j,ii).GT.imaxloct1) then - imaxloct1=A(i,j,ii) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - endif - if (A(i,j,ii).LT.iminloct1) then - iminloct1=A(i,j,ii) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - endif - enddo - enddo - enddo - -cdvm$ reduction_startlocmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1).and. - * (imaxt1.eq.imaxloct1).and.(coor1(1).eq.ni).and. - * (coor1(2).eq.nj).and.(coor1(3).eq.nii).and. - * (coor2(1).eq.ni1) .and.(coor2(2).eq.nj1) - * .and.(coor2(3).eq.nii1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA3204 - subroutine REDA3204 - integer, parameter :: N = 8,M=6,K=16 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:,:),C(:,:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer ni,ni1,lcoor - integer coor1(3),coor2(3) - -cdvm$ distribute A(BLOCK,BLOCK,*) -cdvm$ reduction_group locsum - - tname='REDA3204' - allocate (A(N,M,K),C(N,M,K)) - NNL=NL - NN=N - MM=M - KK=K - call sersum3mr(C,NN,MM,KK,NNL,isum1) - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - A(ni,nj,nii)=N+M+K+1.+NL - imax1=N+M+K+1.+NL - -cdvm$ remote_access (A(1,1,1)) - imaxt1=A(1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - A(ni1,nj1,nii1)=-(N+M+K+1.+NL) - imin1=-(N+M+K+1.+NL) - -cdvm$ remote_access (A(1,1,1)) - imint1=A(1,1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=3 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - -*dvm$ parallel (i,j,ii) on A(i,j,ii), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor),minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - isumt1 = isumt1+A(i,j,ii) - if (A(i,j,ii).GT.imaxloct1) then - imaxloct1=A(i,j,ii) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - endif - if (A(i,j,ii).LT.iminloct1) then - iminloct1=A(i,j,ii) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - endif - enddo - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1).and.(coor1(2).eq.nj) - *.and.(coor2(2).eq.nj1) - *.and.(coor1(3).eq.nii).and.(coor2(3).eq.nii1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - - subroutine sersum3(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine sersum3m(AR,N,M,K,NL,S) - integer AR(N,M,K) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine sersum3mr(AR,N,M,K,NL,S) - real AR(N,M,K) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - AR(ni,nj,nii)=N+M+K+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - AR(ni,nj,nii)=-(N+M+K+1+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - s = s+ AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprod3(AR,N,M,K,NL,P) - integer AR(N,M,K) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serprodr3(AR,N,M,K,NL,P) - real AR(N,M,K) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = i+j+ii+NL - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - P = P* AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine serlog3(AR,N,M,K,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K,2 - AR(i,j,ii) = .true. - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=2,K,2 - AR(i,j,ii)=.false. - enddo - enddo - enddo - LAND=AR(1,1,1) - LOR=AR(1,1,1) - LEQV=AR(1,1,1) - LNEQV=AR(1,1,1) - do i=1,N - do j=1,M - do ii=1,K - LAND = LAND .and. AR(i,j,ii) - LOR = LOR .or.AR(i,j,ii) - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - LEQV = LEQV .eqv. AR(i,j,ii) - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - LNEQV = LNEQV .neqv. AR(i,j,ii) - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda41.fdv deleted file mode 100644 index 05c1048..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda41.fdv +++ /dev/null @@ -1,643 +0,0 @@ - program REDA41 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M,K,L). -c - print *,'===START OF REDA41=======================' -C -------------------------------------------------- - call reda4101 -C -------------------------------------------------- - call reda4102 -C -------------------------------------------------- - call reda4103 -C ------------------------------------------------- - call reda4104 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA41 ========================= ' - end - -C ----------------------------------------------------REDA4101 - subroutine REDA4101 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group smaxmin - - tname='REDA4101' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA4102 - subroutine REDA4102 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) -cdvm$ reduction_group prodand - - tname='REDA4102' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -cdvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - iprodt1 = 1 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA4103 - subroutine REDA4103 - integer, parameter :: N = 8, M=4,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin1,imint1 - integer imaxloct1,iminloct1,lcoor - integer coor1(4),coor2(4) -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group locmaxmin - - tname='REDA4103' - allocate (A(N,M,K,L),C(N,M,K,L)) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1 =A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1).and. - * (imaxt1.eq.imaxloct1).and.( coor1(1).eq.ni).and. - * (coor1(2).eq.nj).and.(coor1(3).eq.nii) - * .and.(coor1(4).eq.njj).and. - * (coor2(1).eq.ni1) .and.(coor2(2).eq.nj1) - * .and.(coor2(3).eq.nii1).and. - * (coor2(4).eq.njj1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA4104 - subroutine REDA4104 - integer, parameter :: N = 8,M=6,K=16,L=8 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer ni,ni1,lcoor - integer coor1(4),coor2(4) - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group locsum - - tname='REDA4104' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4mr(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - imax1=N+M+K+L+1.+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1.+NL) - imin1=-(N+M+K+L+1.+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor ),minloc( iminloct1,coor2,lcoor )) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1).and.(coor1(2).eq.nj) - * .and.(coor2(2).eq.nj1) - *.and.(coor1(3).eq.nii).and.(coor2(3).eq.nii1).and. - * (coor1(4).eq.njj).and.(coor2(4).eq.njj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - LEQV = LEQV .eqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda42.fdv deleted file mode 100644 index aa7748d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda42.fdv +++ /dev/null @@ -1,643 +0,0 @@ - program REDA42 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M,K,L). -c - print *,'===START OF REDA42=======================' -C -------------------------------------------------- - call reda4201 -C -------------------------------------------------- - call reda4202 -C -------------------------------------------------- - call reda4203 -C ------------------------------------------------- - call reda4204 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA42 ========================= ' - end - -C ----------------------------------------------------REDA4201 - subroutine REDA4201 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(*,*,*,*) -cdvm$ reduction_group smaxmin - - tname='REDA4201' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA4202 - subroutine REDA4202 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - - -cdvm$ distribute A(*,*,*,*) -cdvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) -cdvm$ reduction_group prodand - - tname='REDA4202' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -cdvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - iprodt1 = 1 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA4203 - subroutine REDA4203 - integer, parameter :: N = 8, M=4,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin1,imint1 - integer imaxloct1,iminloct1,lcoor - integer coor1(4),coor2(4) -cdvm$ distribute A(*,*,*,*) -cdvm$ reduction_group locmaxmin - - tname='REDA4203' - allocate (A(N,M,K,L),C(N,M,K,L)) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1 =A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1).and. - * (imaxt1.eq.imaxloct1).and.( coor1(1).eq.ni).and. - * (coor1(2).eq.nj).and.(coor1(3).eq.nii) - * .and.(coor1(4).eq.njj).and. - * (coor2(1).eq.ni1) .and.(coor2(2).eq.nj1) - * .and.(coor2(3).eq.nii1).and. - * (coor2(4).eq.njj1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA4204 - subroutine REDA4204 - integer, parameter :: N = 8,M=6,K=16,L=8 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer ni,ni1,lcoor - integer coor1(4),coor2(4) - -cdvm$ distribute A(*,*,*,*) -cdvm$ reduction_group locsum - - tname='REDA4204' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4mr(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - imax1=N+M+K+L+1.+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1.+NL) - imin1=-(N+M+K+L+1.+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor ),minloc( iminloct1,coor2,lcoor )) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1).and.(coor1(2).eq.nj) - * .and.(coor2(2).eq.nj1) - *.and.(coor1(3).eq.nii).and.(coor2(3).eq.nii1).and. - * (coor1(4).eq.njj).and.(coor2(4).eq.njj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - do i=2,N - do j=2,M - do ii=2,K - do jj=2,L - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N,2 - do j=1,M,2 - do ii=1,K,2 - do jj=1,L,2 - LEQV = LEQV .eqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda43.fdv deleted file mode 100644 index 19af3be..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/reda43.fdv +++ /dev/null @@ -1,643 +0,0 @@ - program REDA43 - -c TESTING OF THE REDUCTION_GROUP DIRECTIVE,REDUCTION_START -c DIRECTIVE,REDUCTION_WAIT DIRECTIVE. -c REDUCTION GROUPE IS EXECUTED FOR DISTRIBUTED ARRAY A(N,M,K,L). -c - print *,'===START OF REDA43=======================' -C -------------------------------------------------- - call reda4301 -C -------------------------------------------------- - call reda4302 -C -------------------------------------------------- - call reda4303 -C ------------------------------------------------- - call reda4304 -C ------------------------------------------------- - -C -C - print *,'=== END OF REDA43 ========================= ' - end - -C ----------------------------------------------------REDA4301 - subroutine REDA4301 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imin1,imint1 ,ni - integer isum1,isumt1 - integer imax1,imaxt1 - -cdvm$ distribute A(BLOCK,BLOCK,BLOCK,*) -cdvm$ reduction_group smaxmin - - tname='REDA4301' - allocate (A(N,M,K,L),C(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4m(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - isumt1 = 0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(smaxmin:sum(isumt1),max(imaxt1),min(imint1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxt1) imaxt1=A(i,j,ii,jj) - if (A(i,j,ii,jj).LT.imint1) imint1=A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start smaxmin -cdvm$ reduction_wait smaxmin -c print *,isumt1,isum1 -c print *,imaxt1,imax1 -c print *,imint1,imin1 - if ((isum1 .eq.isumt1) .and.(imax1 .eq.imaxt1) - * .and.(imin1 .eq.imint1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end -C ----------------------------------------------------REDA4302 - subroutine REDA4302 - integer, parameter :: N = 16,M=8,K=16,L=8,NL=10 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer iprod1,iprodt1 - logical, allocatable :: B(:,:,:,:),CL(:,:,:,:) - logical land1,landt1,lor1,leqv1,lneqv1 - - -cdvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -cdvm$ align B(I,J,II,JJ) with A(I,J,II,JJ) -cdvm$ reduction_group prodand - - tname='REDA4302' - allocate (A(N,M,K,L),C(N,M,K,L)) - allocate (B(N,M,K,L),CL(N,M,K,L)) - NNL=NL - NN=N - MM=M - KK=K - LL=L - call serprod4(C,NN,MM,KK,LL,NNL,iprod1) - call serlog4(CL,NN,MM,KK,LL,land1,lor1,leqv1,lneqv1) - -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo -*dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - B(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - -cdvm$ remote_access (B(1,1,1,1)) - landt1 = B(1,1,1,1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - iprodt1 = 1 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(prodand:product( iprodt1 ),and(landt1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - iprodt1 = iprodt1*A(i,j,ii,jj) - landt1 = landt1 .and.B(i,j,ii,jj) - enddo - enddo - enddo - enddo - -cdvm$ reduction_start prodand - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - -cdvm$ reduction_wait prodand - - if ((iprod1 .eq.iprodt1) - *.and. (land1 .eqv.landt1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - deallocate (B,CL) - - end - - -C ----------------------------------------------------REDA4303 - subroutine REDA4303 - integer, parameter :: N = 8, M=4,K=16,L=8,NL=1000 - character*8 tname - integer, allocatable :: A(:,:,:,:),C(:,:,:,:) - integer imax1,imaxt1 ,ni,imin1,imint1 - integer imaxloct1,iminloct1,lcoor - integer coor1(4),coor2(4) -cdvm$ distribute A(BLOCK,*,BLOCK,BLOCK) -cdvm$ reduction_group locmaxmin - - tname='REDA4303' - allocate (A(N,M,K,L),C(N,M,K,L)) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1+NL - imax1=N+M+K+L+1+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1+NL) - imin1=-(N+M+K+L+1+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locmaxmin:max( imaxt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor), -*dvm$*minloc( iminloct1,coor2,lcoor)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (A(i,j,ii,jj).GT.imaxt1) imaxt1 =A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locmaxmin -cdvm$ reduction_wait locmaxmin - -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1).and. - * (imaxt1.eq.imaxloct1).and.( coor1(1).eq.ni).and. - * (coor1(2).eq.nj).and.(coor1(3).eq.nii) - * .and.(coor1(4).eq.njj).and. - * (coor2(1).eq.ni1) .and.(coor2(2).eq.nj1) - * .and.(coor2(3).eq.nii1).and. - * (coor2(4).eq.njj1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------REDA4304 - subroutine REDA4304 - integer, parameter :: N = 8,M=6,K=16,L=8 - real, parameter :: NL=1000. - character*8 tname - real, allocatable :: A(:,:,:,:),C(:,:,:,:) - real isum1,isumt1 - real imax1,imaxt1 ,imin1,imint1 - real imaxloct1,iminloct1,NNL - integer ni,ni1,lcoor - integer coor1(4),coor2(4) - -cdvm$ distribute A(*,BLOCK,BLOCK,BLOCK) -cdvm$ reduction_group locsum - - tname='REDA4304' - allocate (A(N,M,K,L),C(N,M,K,L)) - - NNL=NL - NN=N - MM=M - KK=K - LL=L - call sersum4mr(C,NN,MM,KK,LL,NNL,isum1) - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - A(ni,nj,nii,njj)=N+M+K+L+1.+NL - imax1=N+M+K+L+1.+NL - -cdvm$ remote_access (A(1,1,1,1)) - imaxt1=A(1,1,1,1) - - imaxloct1=imaxt1 - ni1=N/2-1 - nj1=M/2-1 - nii1=K/2-1 - njj1=L/2-1 - A(ni1,nj1,nii1,njj1)=-(N+M+K+L+1.+NL) - imin1=-(N+M+K+L+1.+NL) - -cdvm$ remote_access (A(1,1,1,1)) - imint1=A(1,1,1,1) - - iminloct1=imint1 - isumt1 = 0. - lcoor=4 - coor1(1)=0 - coor1(2)=0 - coor1(3)=0 - coor1(4)=0 - coor2(1)=0 - coor2(2)=0 - coor2(3)=0 - coor2(4)=0 - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -*dvm$*reduction(locsum:sum( isumt1 ), -*dvm$*maxloc( imaxloct1,coor1,lcoor ),minloc( iminloct1,coor2,lcoor )) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - isumt1 = isumt1+A(i,j,ii,jj) - if (A(i,j,ii,jj).GT.imaxloct1) then - imaxloct1=A(i,j,ii,jj) - coor1(1)=i - coor1(2)=j - coor1(3)=ii - coor1(4)=jj - endif - if (A(i,j,ii,jj).LT.iminloct1) then - iminloct1=A(i,j,ii,jj) - coor2(1)=i - coor2(2)=j - coor2(3)=ii - coor2(4)=jj - endif - enddo - enddo - enddo - enddo - -cdvm$ reduction_start locsum -cdvm$ reduction_wait locsum -c print *,A -c print *,imax1,imaxt1,imaxloct1 -c print *,imin1,imint1,iminloct1 - -c print *,isum1,isumt1 -c print *,it1,ni -c print *,it2,ni1 -c print *,jt1,nj -c print *,jt2,nj1 - if ((imaxloct1.eq.imax1).and.(iminloct1.eq.imin1) - *.and.(isumt1.eq.isum1).and.(coor1(1).eq.ni) - *.and.(coor2(1).eq.ni1).and.(coor1(2).eq.nj) - * .and.(coor2(2).eq.nj1) - *.and.(coor1(3).eq.nii).and.(coor2(3).eq.nii1).and. - * (coor1(4).eq.njj).and.(coor2(4).eq.njj1))then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,C) - - end - - -C ----------------------------------------------------- - - subroutine sersum4(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4m(AR,N,M,K,L,NL,S) - integer AR(N,M,K,L) - integer S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1+NL) - S=0 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine sersum4mr(AR,N,M,K,L,NL,S) - real AR(N,M,K,L) - real S,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - ni=N/2-1 - nj=M/2-1 - nii=K/2-1 - njj=L/2-1 - AR(ni,nj,nii,njj)=N+M+K+L+1.+NL - ni=N/2 - nj=M/2 - nii=K/2 - njj=L/2 - AR(ni,nj,nii,njj)=-(N+M+K+L+1.+NL) - S=0. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - s = s+ AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprod4(AR,N,M,K,L,NL,P) - integer AR(N,M,K,L) - integer P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1 - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serprodr4(AR,N,M,K,L,NL,P) - real AR(N,M,K,L) - real P,NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = i+j+ii+jj+NL - enddo - enddo - enddo - enddo - P=1. - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - P = P* AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine serlog4(AR,N,M,K,L,LAND,LOR,LEQV,LNEQV) - logical AR(N,M,K,L) - logical LAND,LOR,LEQV,LNEQV - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L,2 - AR(i,j,ii,jj) = .true. - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=2,L,2 - AR(i,j,ii,jj)=.false. - enddo - enddo - enddo - enddo - LAND=AR(1,1,1,1) - LOR=AR(1,1,1,1) - LEQV=AR(1,1,1,1) - LNEQV=AR(1,1,1,1) - do i=2,N - do j=2,M - do ii=2,K - do jj=2,L - LAND = LAND .and. AR(i,j,ii,jj) - LOR = LOR .or.AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N,2 - do j=1,M,2 - do ii=1,K,2 - do jj=1,L,2 - LEQV = LEQV .eqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - LNEQV = LNEQV .neqv. AR(i,j,ii,jj) - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*8 name - print *,name,' - complete' - end - subroutine ansno(name) - character*8 name - print *,name,' - ***error' - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/settings deleted file mode 100644 index 3ef2d72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REDUCTIONA/settings +++ /dev/null @@ -1 +0,0 @@ -DVM_ONLY=1 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem11.fdv deleted file mode 100644 index a8a2118..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem11.fdv +++ /dev/null @@ -1,538 +0,0 @@ - program REM11 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM11========================' -C -------------------------------------------------- - call rem1101 -C -------------------------------------------------- - call rem1102 -C -------------------------------------------------- - call rem1103 -C ------------------------------------------------- - call rem1104 -C ------------------------------------------------- - call rem1105 -C ------------------------------------------------- - call rem1106 -C -------------------------------------------------- - call rem1107 -C -------------------------------------------------- - call rem1108 -C -------------------------------------------------- - call rem1109 -C ------------------------------------------------- - call rem1110 -C ------------------------------------------------- - call rem1111 -C ------------------------------------------------- - call rem1112 -C ------------------------------------------------- - -C -C - print *,'=== END OF REM11 ========================= ' - end -C ---------------------------------------------REM1101 - subroutine REM1101 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1101' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A(1)) -!dvm$ remote_access (A(1)) - ib=A(1) - - if (ib .eq.C(1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1102 - subroutine REM1102 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1102' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region -!dvm$ get_actual(A(N)) -!dvm$ remote_access (A(N)) - ib=A(N) - if (ib .eq.C(N)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------REM1103 - subroutine REM1103 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1103' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region -!dvm$ get_actual(A(N/2)) -!dvm$ remote_access (A(N/2)) - ib=A(N/2) - if (ib .eq.C(N/2)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------REM1104 - subroutine REM1104 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1104' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region - do i=1,N -!dvm$ get_actual(A(i)) -!dvm$ remote_access (A(i)) - D(i)=A(i) - isumc=isumc+C(i) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end - -C ----------------------------------------REM1105 - subroutine REM1105 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(BLOCK) - -!dvm$ align (I) with B(I) ::A - - tname='REM1105' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N -!dvm$ remote_access (A(:)) - D(i)=A(i) - isumc=isumc+C(i) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end - -C ----------------------------------------REM1106 - subroutine REM1106 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1106' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region - kk=2 - kk1=3 - - do i=1,N/kk-kk1 -!dvm$ get_actual(A(kk*i+kk1)) -!dvm$ remote_access (A(kk*i+kk1)) - D(i)=A(kk*i+kk1) - isumc=isumc+C(kk*i+kk1) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end -C ---------------------------------------------REM1107 - subroutine REM1107 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1107' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region local(A, B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(1)) - do i=1,N - B(i) = A(1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(1)) nloop=min(nloop, i); - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------REM1108 - subroutine REM1108 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1108' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(N)) - do i=1,N - B(i) = A(N) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(N)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1109 - - subroutine REM1109 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1109' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(N/2)) - do i=1,N - B(i) = A(N/2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(N/2)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1110 - - subroutine REM1110 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1110' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A) - do i=1,N - B(i) = A(i) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------REM1111 - subroutine REM1111 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1111' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(i)) - do i=1,N - B(i) = A(i) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------REM1112 - subroutine REM1112 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='REM1112' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - kk=2 - kk1=3 -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(kk*i+kk1)) - do i=1,N/kk-kk1 - B(i) = A(kk*i+kk1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N/kk-kk1 - if (B(i).ne.C(kk*i+kk1)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem12.fdv deleted file mode 100644 index 2d67fc7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem12.fdv +++ /dev/null @@ -1,533 +0,0 @@ - program REM12 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM12========================' -C -------------------------------------------------- - call rem1201 -C -------------------------------------------------- - call rem1202 -C -------------------------------------------------- - call rem1203 -C ------------------------------------------------- - call rem1204 -C ------------------------------------------------- - call rem1205 -C ------------------------------------------------- - call rem1206 -C -------------------------------------------------- - call rem1207 -C -------------------------------------------------- - call rem1208 -C -------------------------------------------------- - call rem1209 -C ------------------------------------------------- - call rem1210 -C ------------------------------------------------- - call rem1211 -C ------------------------------------------------- - call rem1212 -C ------------------------------------------------- - -C -C - print *,'=== END OF REM12 ========================= ' - end -C ---------------------------------------------REM1201 - subroutine REM1201 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1201' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A(1)) -!dvm$ remote_access (A(1)) - ib=A(1) - - if (ib .eq.C(1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1202 - subroutine REM1202 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1202' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A(N)) -!dvm$ remote_access (A(N)) - ib=A(N) - if (ib .eq.C(N)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------REM1203 - subroutine REM1203 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1203' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A(N/2)) -!dvm$ remote_access (A(N/2)) - ib=A(N/2) - if (ib .eq.C(N/2)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------REM1204 - subroutine REM1204 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1204' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N -!dvm$ remote_access (A(i)) - D(i)=A(i) - isumc=isumc+C(i) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end - -C ----------------------------------------REM1205 - subroutine REM1205 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(*) - -!dvm$ align (I) with B(I) ::A - - tname='REM1205' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N -!dvm$ remote_access (A(:)) - D(i)=A(i) - isumc=isumc+C(i) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end - -C ----------------------------------------REM1206 - subroutine REM1206 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:),D(:) - integer nloop,isumc,isuma - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1206' - allocate (B(N),A(N),C(N),D(N)) - isumc=0 - isuma=0 - NNL=NL - call serial1(C,N,NNL) - nloop=NL - - kk=2 - kk1=3 -!dvm$ region out(A) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ end region -!dvm$ get_actual(A) - - do i=1,N/kk-kk1 -!dvm$ remote_access (A(kk*i+kk1)) - D(i)=A(kk*i+kk1) - isumc=isumc+C(kk*i+kk1) - isuma=isuma+D(i) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C,D) - - end -C ---------------------------------------------REM1207 - subroutine REM1207 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1207' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(1)) - do i=1,N - B(i) = A(1) - enddo - -!dvm$ parallel (i) on A(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(1)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------REM1208 - subroutine REM1208 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1208' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(N)) - do i=1,N - B(i) = A(N) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(N)) nloop=min(nloop, i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1209 - - subroutine REM1209 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1209' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(N/2)) - do i=1,N - B(i) = A(N/2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(N/2)) nloop=min(nloop, i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------REM1210 - - subroutine REM1210 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1210' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -c !dvm$ parallel (i) on B(i),remote_access(A) -!dvm$ parallel (i) on B(i),remote_access(A(:)) - do i=1,N - B(i) = A(i) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop, i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ---------------------------------------------REM1211 - subroutine REM1211 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1211' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(:)) - do i=1,N - B(i) = A(i) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N - if (B(i).ne.C(i)) nloop=min(nloop, i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C ---------------------------------------------REM1212 - subroutine REM1212 - integer, parameter :: N = 16,NL=1000 - integer, allocatable :: A(:),B(:),C(:) - integer nloop - character*7 tname - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='REM1212' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - kk=2 - kk1=3 -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),remote_access(A(:)) - do i=1,N/kk-kk1 - B(i) = A(kk*i+kk1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=1,N/kk-kk1 - if (B(i).ne.C(kk*i+kk1)) nloop=min(nloop, i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem21.fdv deleted file mode 100644 index 8e2ecb2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem21.fdv +++ /dev/null @@ -1,992 +0,0 @@ - program REM21 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM21========================' -C -------------------------------------------------- - call rem2101 -C -------------------------------------------------- - call rem2102 -C -------------------------------------------------- - call rem2103 -C ------------------------------------------------- - call rem2104 -C ------------------------------------------------- - call rem2105 -C ------------------------------------------------- - call rem2106 -C -------------------------------------------------- - call rem2107 -C -------------------------------------------------- - call rem2108 -C -------------------------------------------------- - call rem2109 -C ------------------------------------------------- - call rem2110 -C ------------------------------------------------- - call rem2111 -C ------------------------------------------------- - call rem2112 -C ------------------------------------------------- - call rem2113 -C ------------------------------------------------- - call rem2114 -C ------------------------------------------------- - call rem2115 -C ----------------------------------------------- - call rem2116 -C ----------------------------------------------- - call rem2117 -C ------------------------------------------------- - call rem2118 -C ------------------------------------------------ - call rem2119 -C ------------------------------------------------- - call rem2120 -C ------------------------------------------------- - -C - print *,'=== END OF REM21 ========================= ' - end -C ---------------------------------------------------------REM2101 - - subroutine REM2101 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align :: A - - tname='REM2101' - allocate(B(N,M),A(N,M),C(N,M)) -!dvm$ realign A(i,j) with B(i,j) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1)) -!dvm$ remote_access (A(1,1)) - ib=A(1,1) - - if (ib .eq.C(1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(A,B,C) - - end - -C ------------------------------------------------------REM2102 - subroutine REM2102 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align :: B - - tname='REM2102' - allocate(A(N,M),B(N,M),C(N,M)) -!dvm$ realign B(i,j) with A(i,j) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M)) -!dvm$ remote_access (A(N,M)) - ib=A(N,M) - if (ib .eq.C(N,M)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2103 - subroutine REM2103 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2103' - allocate(A(N,M),B(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,M)) -!dvm$ remote_access (A(1,M)) - ib=A(1,M) - - if (ib .eq.C(1,M)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2104 - subroutine REM2104 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2104' - allocate(A(N,M),B(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,1)) -!dvm$ remote_access (A(N,1)) - ib=A(N,1) - if (ib .eq.C(N,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2105 - subroutine REM2105 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2105' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M -!dvm$ remote_access (A(:,:)) - D(i,j)=A(i,j) - isumc=isumc+C(i,j) - isuma=isuma+D(i,j) - enddo - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2106 - subroutine REM2106 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2106' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,1)) - do i=1,N -!dvm$ remote_access (A(:,1)) - D(i,1)=A(i,1) - isumc=isumc+C(i,1) - isuma=isuma+D(i,1) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2107 - subroutine REM2107 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2107' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:)) - do j=1,M -!dvm$ remote_access (A(1,:)) - D(1,j)=A(1,j) - isumc=isumc+C(1,j) - isuma=isuma+D(1,j) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C -----------------------------------------------------REM2108 - subroutine REM2108 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2108' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M)) - do i=1,N -!dvm$ remote_access (A(:,M)) - D(i,M)=A(i,M) - isumc=isumc+C(i,M) - isuma=isuma+D(i,M) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2109 - subroutine REM2109 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2109' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out (A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,:)) - do j=1,M -!dvm$ remote_access (A(N,:)) - D(N,j)=A(N,j) - isumc=isumc+C(N,j) - isuma=isuma+D(N,j) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2110 - subroutine REM2110 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2110' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M -!dvm$ remote_access (A(i,j)) - D(i,j)=A(i,j) - isumc=isumc+C(i,j) - isuma=isuma+D(i,j) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2111 - subroutine REM2111 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - integer ki -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2111' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - ki=2 - ki1=3 - kj=2 - kj1=3 - do i=1,N/ki-ki1 - do j=i,M/kj-kj1 -!dvm$ remote_access (A(ki*i+ki1,kj*j+kj1)) - D(i,j)=A(ki*i+ki1,kj*j+kj1) - isumc=isumc+C(ki*i+ki1,kj*j+kj1 ) - isuma=isuma+D(i,j) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2112 - subroutine REM2112 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2112' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(1,1)) - do i=1,N - do j=1,M - B(i,j) = A(1,1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2113 - subroutine REM2113 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2113' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(N,M)) - do i=1,N - do j=1,M - B(i,j) = A(N,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2114 - subroutine REM2114 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2114' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(1,M)) - do i=1,N - do j=1,M - B(i,j) = A(1,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2115 - subroutine REM2115 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2115' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(N,1)) - do i=1,N - do j=1,M - B(i,j) = A(N,1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2116 - subroutine REM2116 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2116' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(:,:)) - do i=1,N - do j=1,M - B(i,j) = A(i,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2117 - subroutine REM2117 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2117' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i) on B(i,1),remote_access(A(:,1)) - do i=1,N - B(i,1) = A(i,1) - enddo - -!dvm$ parallel (i) on B(i,1), reduction( min( nloopi),min(nloopj)) - do i=1,N - if (B(i,1).ne.C(i,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C -----------------------------------------------------REM2118 - subroutine REM2118 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2118' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on A(i,j),remote_access(A(1,:)) - do i=1,N - do j=1,M - B(i,j) = A(1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ----------------------------------------------------REM2119 - subroutine REM2119 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2119' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(:,M)) - do i=1,N - do j=1,M - B(i,j) = A(i,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2120 - subroutine REM2120 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK) -!dvm$ align(i,j) with A(i,j) :: B - - tname='REM2120' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on A(i,j),remote_access(A(N,:)) - do i=1,N - do j=1,M - B(i,j) = A(N,j) - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem22.fdv deleted file mode 100644 index fd7d9e1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem22.fdv +++ /dev/null @@ -1,992 +0,0 @@ - program REM22 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM22========================' -C -------------------------------------------------- - call rem2201 -C -------------------------------------------------- - call rem2202 -C -------------------------------------------------- - call rem2203 -C ------------------------------------------------- - call rem2204 -C ------------------------------------------------- - call rem2205 -C ------------------------------------------------- - call rem2206 -C -------------------------------------------------- - call rem2207 -C -------------------------------------------------- - call rem2208 -C -------------------------------------------------- - call rem2209 -C ------------------------------------------------- - call rem2210 -C ------------------------------------------------- - call rem2211 -C ------------------------------------------------- - call rem2212 -C ------------------------------------------------- - call rem2213 -C ------------------------------------------------- - call rem2214 -C ------------------------------------------------- - call rem2215 -C ----------------------------------------------- - call rem2216 -C ----------------------------------------------- - call rem2217 -C ------------------------------------------------- - call rem2218 -C ------------------------------------------------ - call rem2219 -C ------------------------------------------------- - call rem2220 -C ------------------------------------------------- - -C - print *,'=== END OF REM22 ========================= ' - end -C ---------------------------------------------------------REM2201 - - subroutine REM2201 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute B(*,BLOCK) -!dvm$ align(:,:) with B(:,:) :: A - - tname='REM2201' - allocate(B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1)) -!dvm$ remote_access (A(1,1)) - ib=A(1,1) - - if (ib .eq.C(1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(A,B,C) - - end - -C ------------------------------------------------------REM2202 - subroutine REM2202 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2202' - allocate(A(N,M),B(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M)) -!dvm$ remote_access (A(N,M)) - ib=A(N,M) - if (ib .eq.C(N,M)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2203 - subroutine REM2203 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2203' - allocate(A(N,M),B(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,M)) -!dvm$ remote_access (A(1,M)) - ib=A(1,M) - - if (ib .eq.C(1,M)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2204 - subroutine REM2204 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2204' - allocate(A(N,M),B(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,1)) -!dvm$ remote_access (A(N,1)) - ib=A(N,1) - if (ib .eq.C(N,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C) - - end - -C ------------------------------------------------------REM2205 - subroutine REM2205 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2205' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M -!dvm$ remote_access (A(:,:)) - D(i,j)=A(i,j) - isumc=isumc+C(i,j) - isuma=isuma+D(i,j) - enddo - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2206 - subroutine REM2206 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2206' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,1)) - do i=1,N -!dvm$ remote_access (A(:,1)) - D(i,1)=A(i,1) - isumc=isumc+C(i,1) - isuma=isuma+D(i,1) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2207 - subroutine REM2207 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2207' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:)) - do j=1,M -!dvm$ remote_access (A(1,:)) - D(1,j)=A(1,j) - isumc=isumc+C(1,j) - isuma=isuma+D(1,j) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C -----------------------------------------------------REM2208 - subroutine REM2208 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2208' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M)) - do i=1,N -!dvm$ remote_access (A(:,M)) - D(i,M)=A(i,M) - isumc=isumc+C(i,M) - isuma=isuma+D(i,M) - enddo - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2209 - subroutine REM2209 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2209' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,:)) - do j=1,M -!dvm$ remote_access (A(N,:)) - D(N,j)=A(N,j) - isumc=isumc+C(N,j) - isuma=isuma+D(N,j) - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2210 - subroutine REM2210 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2210' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M -!dvm$ remote_access (A(i,j)) - D(i,j)=A(i,j) - isumc=isumc+C(i,j) - isuma=isuma+D(i,j) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ------------------------------------------------------REM2211 - subroutine REM2211 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj,isumc,isuma - character*7 tname - integer ki -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2211' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - isumc=0 - isuma=0 - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region out(A) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - ki=2 - ki1=3 - kj=2 - kj1=3 - do i=1,N/ki-ki1 - do j=i,M/kj-kj1 -!dvm$ remote_access (A(ki*i+ki1,kj*j+kj1)) - D(i,j)=A(ki*i+ki1,kj*j+kj1) - isumc=isumc+C(ki*i+ki1,kj*j+kj1 ) - isuma=isuma+D(i,j) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2212 - subroutine REM2212 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2212' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(1,1)) - do i=1,N - do j=1,M - B(i,j) = A(1,1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2213 - subroutine REM2213 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2213' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(N,M)) - do i=1,N - do j=1,M - B(i,j) = A(N,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2214 - subroutine REM2214 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2214' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(1,M)) - do i=1,N - do j=1,M - B(i,j) = A(1,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2215 - subroutine REM2215 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2215' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(N,1)) - do i=1,N - do j=1,M - B(i,j) = A(N,1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2216 - subroutine REM2216 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2216' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -c !dvm$ parallel (i,J) on A(i,j),remote_access(A) -!dvm$ parallel (i,J) on B(i,j),remote_access(A(:,:)) - do i=1,N - do j=1,M - B(i,j) = A(i,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C -----------------------------------------------------REM2217 - subroutine REM2217 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2217' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i) on B(i,1),remote_access(A(:,1)) - do i=1,N - B(i,1) = A(i,1) - enddo - -!dvm$ parallel (i) on B(i,1), reduction( min( nloopi),min(nloopj)) - do i=1,N - if (B(i,1).ne.C(i,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C -----------------------------------------------------REM2218 - subroutine REM2218 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2218' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on A(i,j),remote_access(A(1,:)) - do i=1,N - do j=1,M - B(i,j) = A(1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(1,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C ----------------------------------------------------REM2219 - subroutine REM2219 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(*,BLOCK) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2219' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),remote_access(A(:,M)) - do i=1,N - do j=1,M - B(i,j) = A(i,M) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(i,M)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end -C ------------------------------------------------------REM2220 - subroutine REM2220 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:),D(:,:) - integer nloopi,nloopj - character*7 tname - -!dvm$ distribute A(BLOCK,*) -!dvm$ align(:,:) with A(:,:) :: B - - tname='REM2220' - allocate(A(N,M),B(N,M),C(N,M),D(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on A(i,j),remote_access(A(N,:)) - do i=1,N - do j=1,M - B(i,j) = A(N,j) - enddo - enddo - -!dvm$ parallel (i,j) on A(i,j), reduction( min( nloopi),min(nloopj)) - do i=1,N - do j=1,M - if (B(i,j).ne.C(N,j)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate(B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem31.fdv deleted file mode 100644 index 921f5ff..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem31.fdv +++ /dev/null @@ -1,763 +0,0 @@ - program REM31 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM31========================' -C -------------------------------------------------- - call rem3101 -C -------------------------------------------------- - call rem3102 -C -------------------------------------------------- - call rem3103 -C ------------------------------------------------- - call rem3104 -C ------------------------------------------------- - call rem3105 -C ------------------------------------------------- - call rem3106 -C -------------------------------------------------- - call rem3107 -C -------------------------------------------------- - call rem3108 -C -------------------------------------------------- - call rem3109 -C ------------------------------------------------- - call rem3110 -C ------------------------------------------------- - call rem3111 -C ------------------------------------------------- - call rem3112 -C ------------------------------------------------- - call rem3113 -C ------------------------------------------------- -C - print *,'=== END OF REM31 ========================= ' - end -C ---------------------------------------------------------REM3101 - subroutine REM3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with B(:,:,:) :: A - - tname='REM3101' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1,1)) -!dvm$ remote_access (A(1,1,1)) - ib=A(1,1,1) - - if (ib .eq.C(1,1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------------------REM3102 - subroutine REM3102 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3102' - allocate (A(N,M,K),B(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M,K)) -!dvm$ remote_access (A(N,M,K)) - ib=A(N,M,K) - if (ib .eq.C(N,M,K)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM3103 - subroutine REM3103 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3103' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M - do ii=1,K -!dvm$ remote_access (A(:,:,:)) - D(i,j,ii)=A(i,j,ii) - isumc=isumc+C(i,j,ii) - isuma=isuma+D(i,j,ii) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ------------------------------------------------------REM3104 - subroutine REM3104 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3104' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=Nl - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:,:)) - - do j=1,M - do ii=1,K -!dvm$ remote_access (A(1,:,:)) - D(1,j,ii)=A(1,j,ii) - isumc=isumc+C(1,j,ii) - isuma=isuma+D(1,j,ii) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C -----------------------------------------------------REM3105 - subroutine REM3105 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3105' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M,:)) - - do i=1,N - do ii=1,K -!dvm$ remote_access (A(:,M,:)) - D(i,M,ii)=A(i,M,ii) - isumc=isumc+C(i,M,ii) - isuma=isuma+D(i,M,ii) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3106 - subroutine REM3106 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3106' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,K)) - - do i=1,N - do j=1,M -!dvm$ remote_access (A(:,:,K)) - D(i,j,K)=A(i,j,K) - isumc=isumc+C(i,j,K) - isuma=isuma+D(i,j,K) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ------------------------------------------------------REM3107 - subroutine REM3107 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3107' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - - ki=2 - ki1=3 - kj=2 - kj1=3 - kii=2 - kii1=3 - do i=1,N/ki-ki1 - do j=1,M/kj-kj1 - do ii=1,K/kii-kii1 -!dvm$ remote_access (A(ki*i+ki1,kj*j+kj1,kii*ii+kii1)) - D(i,j,ii)=A(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isumc=isumc+C(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isuma=isuma+D(i,j,ii) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3108 - subroutine REM3108 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3108' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3109 - subroutine REM3109 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3109' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(N,M,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(N,M,K) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(N,M,K)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM3110 - subroutine REM3110 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3110' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM3111 - subroutine REM3111 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3111' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii),remote_access(A(1,:,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ----------------------------------------------------REM3112 - subroutine REM3112 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3112' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(:,M,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,M,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,M,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3113 - subroutine REM3113 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3113' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$*remote_access(A(:,:,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,K) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,K)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem32.fdv deleted file mode 100644 index 6bc085f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem32.fdv +++ /dev/null @@ -1,763 +0,0 @@ - program REM32 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM32========================' -C -------------------------------------------------- - call rem3201 -C -------------------------------------------------- - call rem3202 -C -------------------------------------------------- - call rem3203 -C ------------------------------------------------- - call rem3204 -C ------------------------------------------------- - call rem3205 -C ------------------------------------------------- - call rem3206 -C -------------------------------------------------- - call rem3207 -C -------------------------------------------------- - call rem3208 -C -------------------------------------------------- - call rem3209 -C ------------------------------------------------- - call rem3210 -C ------------------------------------------------- - call rem3211 -C ------------------------------------------------- - call rem3212 -C ------------------------------------------------- - call rem3213 -C ------------------------------------------------- -C - print *,'=== END OF REM32 ========================= ' - end -C ---------------------------------------------------------REM3201 - subroutine REM3201 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ align(:,:,:) with B(:,:,:) :: A - - tname='REM3201' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1,1)) -!dvm$ remote_access (A(1,1,1)) - ib=A(1,1,1) - - if (ib .eq.C(1,1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------------------REM3202 - subroutine REM3202 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3202' - allocate (A(N,M,K),B(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M,K)) -!dvm$ remote_access (A(N,M,K)) - ib=A(N,M,K) - if (ib .eq.C(N,M,K)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM3203 - subroutine REM3203 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3203' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M - do ii=1,K -!dvm$ remote_access (A(:,:,:)) - D(i,j,ii)=A(i,j,ii) - isumc=isumc+C(i,j,ii) - isuma=isuma+D(i,j,ii) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ------------------------------------------------------REM3204 - subroutine REM3204 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3204' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=Nl - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:,:)) - - do j=1,M - do ii=1,K -!dvm$ remote_access (A(1,:,:)) - D(1,j,ii)=A(1,j,ii) - isumc=isumc+C(1,j,ii) - isuma=isuma+D(1,j,ii) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C -----------------------------------------------------REM3205 - subroutine REM3205 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3205' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M,:)) - - do i=1,N - do ii=1,K -!dvm$ remote_access (A(:,M,:)) - D(i,M,ii)=A(i,M,ii) - isumc=isumc+C(i,M,ii) - isuma=isuma+D(i,M,ii) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3206 - subroutine REM3206 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3206' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,K)) - - do i=1,N - do j=1,M -!dvm$ remote_access (A(:,:,K)) - D(i,j,K)=A(i,j,K) - isumc=isumc+C(i,j,K) - isuma=isuma+D(i,j,K) - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ------------------------------------------------------REM3207 - subroutine REM3207 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii,isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3207' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - isumc=0 - isuma=0 - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - - ki=2 - ki1=3 - kj=2 - kj1=3 - kii=2 - kii1=3 - do i=1,N/ki-ki1 - do j=1,M/kj-kj1 - do ii=1,K/kii-kii1 -!dvm$ remote_access (A(ki*i+ki1,kj*j+kj1,kii*ii+kii1)) - D(i,j,ii)=A(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isumc=isumc+C(ki*i+ki1,kj*j+kj1,kii*ii+kii1) - isuma=isuma+D(i,j,ii) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3208 - subroutine REM3208 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3208' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,1,1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3209 - subroutine REM3209 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3209' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(N,M,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(N,M,K) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(N,M,K)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM3210 - subroutine REM3210 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3210' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM3211 - subroutine REM3211 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3211' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii),remote_access(A(1,:,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(1,j,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(1,j,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ----------------------------------------------------REM3212 - subroutine REM3212 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3212' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),remote_access(A(:,M,:)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,M,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,M,ii)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM3213 - subroutine REM3213 - integer, parameter :: N=8,M=4,K=4,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:),D(:,:,:) - integer nloopi,nloopj,nloopii - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK) -!dvm$ align(:,:,:) with A(:,:,:) :: B - - tname='REM3213' - allocate (A(N,M,K),B(N,M,K),C(N,M,K),D(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$*remote_access(A(:,:,K)) - do i=1,N - do j=1,M - do ii=1,K - B(i,j,ii) = A(i,j,K) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on A(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) - do i=1,N - do j=1,M - do ii=1,K - if (B(i,j,ii).ne.C(i,j,K)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem41.fdv deleted file mode 100644 index 4d5852a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem41.fdv +++ /dev/null @@ -1,883 +0,0 @@ - program REM41 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM41========================' -C -------------------------------------------------- - call rem4101 -C -------------------------------------------------- - call rem4102 -C -------------------------------------------------- - call rem4103 -C ------------------------------------------------- - call rem4104 -C ------------------------------------------------- - call rem4105 -C ------------------------------------------------- - call rem4106 -C -------------------------------------------------- - call rem4107 -C -------------------------------------------------- - call rem4108 -C -------------------------------------------------- - call rem4109 -C ------------------------------------------------- - call rem4110 -C ------------------------------------------------- - call rem4111 -C ------------------------------------------------- - call rem4112 -C ------------------------------------------------- - call rem4113 -C ------------------------------------------------- - call rem4114 -C ------------------------------------------------- -C - print *,'=== END OF REM41 ========================= ' - end -C ---------------------------------------------------------REM3101 - subroutine REM4101 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with B(:,:,:,:) :: A - - tname='REM4101' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1,1,1)) - -!dvm$ remote_access (A(1,1,1,1)) - ib=A(1,1,1,1) - - if (ib .eq.C(1,1,1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------------------REM4102 - subroutine REM4102 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4102' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M,K,L)) - -!dvm$ remote_access (A(N,M,K,L)) - ib=A(N,M,K,L) - - if (ib .eq.C(N,M,K,L)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4103 - subroutine REM4103 - integer, parameter :: N = 4,M=4,K=4,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4103' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,:,:,:)) - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc=isumc+C(i,j,ii,jj) - isuma=isuma+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4104 - subroutine REM4104 - integer, parameter :: N = 6,M=8,K=8,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4104' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:,:,:)) - - do j=1,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(1,:,:,:)) - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc=isumc+C(1,j,ii,jj) - isuma=isuma+D(1,j,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C -----------------------------------------------------REM4105 - subroutine REM4105 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4105' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M,:,:)) - - do i=1,N - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,M,:,:)) - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc=isumc+C(i,M,ii,jj) - isuma=isuma+D(i,M,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4106 - subroutine REM4106 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4106' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,K,:)) - - do i=1,N - do j=1,M - do jj=1,L -!dvm$ remote_access (A(:,:,K,:)) - D(i,j,K,jj)=A(i,j,K,jj) - isumc=isumc+C(i,j,K,jj) - isuma=isuma+D(i,j,K,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4107 - subroutine REM4107 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4107' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,:,L)) - - do i=1,N - do j=1,M - do ii=1,K -!dvm$ remote_access (A(:,:,:,L)) - D(i,j,ii,L)=A(i,j,ii,L) - isumc=isumc+C(i,j,ii,L) - isuma=isuma+D(i,j,ii,L) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4108 - subroutine REM4108 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4108' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4109 - subroutine REM4109 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4109' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4110 - subroutine REM4110 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4110' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4111 - subroutine REM4111 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4111' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ----------------------------------------------------REM4112 - subroutine REM4112 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4112' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4113 - subroutine REM4113 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4113' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,K,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4114 - subroutine REM4114 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4114' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem42.fdv deleted file mode 100644 index 46a7963..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem42.fdv +++ /dev/null @@ -1,883 +0,0 @@ - program REM42 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM42========================' -C -------------------------------------------------- - call rem4201 -C -------------------------------------------------- - call rem4202 -C -------------------------------------------------- - call rem4203 -C ------------------------------------------------- - call rem4204 -C ------------------------------------------------- - call rem4205 -C ------------------------------------------------- - call rem4206 -C -------------------------------------------------- - call rem4207 -C -------------------------------------------------- - call rem4208 -C -------------------------------------------------- - call rem4209 -C ------------------------------------------------- - call rem4210 -C ------------------------------------------------- - call rem4211 -C ------------------------------------------------- - call rem4212 -C ------------------------------------------------- - call rem4213 -C ------------------------------------------------- - call rem4214 -C ------------------------------------------------- -C - print *,'=== END OF REM42 ========================= ' - end -C ---------------------------------------------------------REM3101 - subroutine REM4201 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ align(:,:,:,:) with B(:,:,:,:) :: A - - tname='REM4201' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1,1,1)) - -!dvm$ remote_access (A(1,1,1,1)) - ib=A(1,1,1,1) - - if (ib .eq.C(1,1,1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------------------REM4202 - subroutine REM4202 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4202' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M,K,L)) - -!dvm$ remote_access (A(N,M,K,L)) - ib=A(N,M,K,L) - - if (ib .eq.C(N,M,K,L)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4203 - subroutine REM4203 - integer, parameter :: N = 4,M=4,K=4,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4203' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,:,:,:)) - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc=isumc+C(i,j,ii,jj) - isuma=isuma+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4204 - subroutine REM4204 - integer, parameter :: N = 6,M=8,K=8,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4204' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:,:,:)) - - do j=1,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(1,:,:,:)) - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc=isumc+C(1,j,ii,jj) - isuma=isuma+D(1,j,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C -----------------------------------------------------REM4205 - subroutine REM4205 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4205' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M,:,:)) - - do i=1,N - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,M,:,:)) - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc=isumc+C(i,M,ii,jj) - isuma=isuma+D(i,M,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4206 - subroutine REM4206 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4206' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,K,:)) - - do i=1,N - do j=1,M - do jj=1,L -!dvm$ remote_access (A(:,:,K,:)) - D(i,j,K,jj)=A(i,j,K,jj) - isumc=isumc+C(i,j,K,jj) - isuma=isuma+D(i,j,K,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4207 - subroutine REM4207 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4207' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,:,L)) - - do i=1,N - do j=1,M - do ii=1,K -!dvm$ remote_access (A(:,:,:,L)) - D(i,j,ii,L)=A(i,j,ii,L) - isumc=isumc+C(i,j,ii,L) - isuma=isuma+D(i,j,ii,L) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4208 - subroutine REM4208 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4208' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4209 - subroutine REM4209 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4209' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4210 - subroutine REM4210 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4210' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4211 - subroutine REM4211 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4211' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ----------------------------------------------------REM4212 - subroutine REM4212 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4212' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4213 - subroutine REM4213 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4213' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,K,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4214 - subroutine REM4214 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,*,*,*) -!dvm$ align(:,:,:,:) with A(:,:,:,:) :: B - - tname='REM4214' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem43.fdv deleted file mode 100644 index d58a86a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/REMOTE/rem43.fdv +++ /dev/null @@ -1,884 +0,0 @@ - program REM43 - -c TESTING OF THE REMOTE_ACCESS DIRECTIVE AND THE REMOTE_ACCESS CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) OR ELEMENTS OF THIS ARRAY ARE REPLICATED -c ON ALL PROCESSORS. - - print *,'===START OF REM43========================' -C -------------------------------------------------- - call rem4301 -C -------------------------------------------------- - call rem4302 -C -------------------------------------------------- - call rem4303 -C ------------------------------------------------- - call rem4304 -C ------------------------------------------------- - call rem4305 -C ------------------------------------------------- - call rem4306 -C -------------------------------------------------- - call rem4307 -C -------------------------------------------------- - call rem4308 -C -------------------------------------------------- - call rem4309 -C ------------------------------------------------- - call rem4310 -C ------------------------------------------------- - call rem4311 -C ------------------------------------------------- - call rem4312 -C ------------------------------------------------- - call rem4313 -C ------------------------------------------------- - call rem4314 -C ------------------------------------------------- -C - print *,'=== END OF REM43 ========================= ' - end -C ---------------------------------------------------------REM3101 - subroutine REM4301 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - integer :: i,j,ii,jj - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,*) -!dvm$ align(i,j,ii,jj) with B(i,j,ii,jj) :: A - - tname='REM4301' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,1,1,1)) - -!dvm$ remote_access (A(1,1,1,1)) - ib=A(1,1,1,1) - - if (ib .eq.C(1,1,1,1)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------------------REM4302 - subroutine REM4302 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4302' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(N,M,K,L)) - -!dvm$ remote_access (A(N,M,K,L)) - ib=A(N,M,K,L) - - if (ib .eq.C(N,M,K,L)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4303 - subroutine REM4303 - integer, parameter :: N = 4,M=4,K=4,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4303' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A) - do i=1,N - do j=i,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,:,:,:)) - D(i,j,ii,jj)=A(i,j,ii,jj) - isumc=isumc+C(i,j,ii,jj) - isuma=isuma+D(i,j,ii,jj) - enddo - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C) - - end - -C ------------------------------------------------------REM4304 - subroutine REM4304 - integer, parameter :: N = 6,M=8,K=8,L=4,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) -!dvm$ align(i1,i2,i3,i4) with A(i1,i2,i3,i4) :: B - - tname='REM4304' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(1,:,:,:)) - - do j=1,M - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(1,:,:,:)) - D(1,j,ii,jj)=A(1,j,ii,jj) - isumc=isumc+C(1,j,ii,jj) - isuma=isuma+D(1,j,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C -----------------------------------------------------REM4305 - subroutine REM4305 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4305' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,M,:,:)) - - do i=1,N - do ii=1,K - do jj=1,L -!dvm$ remote_access (A(:,M,:,:)) - D(i,M,ii,jj)=A(i,M,ii,jj) - isumc=isumc+C(i,M,ii,jj) - isuma=isuma+D(i,M,ii,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4306 - subroutine REM4306 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4306' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,K,:)) - - do i=1,N - do j=1,M - do jj=1,L -!dvm$ remote_access (A(:,:,K,:)) - D(i,j,K,jj)=A(i,j,K,jj) - isumc=isumc+C(i,j,K,jj) - isuma=isuma+D(i,j,K,jj) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4307 - subroutine REM4307 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer isumc,isuma - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4307' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - isumc=0 - isuma=0 - NNL=NL - call serial4(C,N,M,K,L,NNL) - -!dvm$ region out(A) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(A(:,:,:,L)) - - do i=1,N - do j=1,M - do ii=1,K -!dvm$ remote_access (A(:,:,:,L)) - D(i,j,ii,L)=A(i,j,ii,L) - isumc=isumc+C(i,j,ii,L) - isuma=isuma+D(i,j,ii,L) - enddo - enddo - enddo - - if (isumc .eq.isuma) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4308 - subroutine REM4308 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4308' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(1,1,1,1)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,1,1,1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,1,1,1)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4309 - subroutine REM4309 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4309' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A(N,M,K,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(N,M,K,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(N,M,K,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4310 - subroutine REM4310 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4310' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),remote_access(A) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C -----------------------------------------------------REM4311 - subroutine REM4311 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,*,BLOCK,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4311' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),remote_access(A(1,:,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(1,j,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(1,j,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C ----------------------------------------------------REM4312 - subroutine REM4312 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(*,BLOCK,BLOCK,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4312' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*remote_access(A(:,M,:,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,M,ii,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$* reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,M,ii,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4313 - subroutine REM4313 - integer, parameter :: N = 6,M=8,K=8,L=6,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,BLOCK,*) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4313' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,K,:)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,K,jj) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,K,jj)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end -C ------------------------------------------------------REM4314 - subroutine REM4314 - integer, parameter :: N = 16,M=8,K=8,L=16,NL=1000 - integer,allocatable::A(:,:,:,:),B(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj - character*7 tname - -!dvm$ distribute A(BLOCK,BLOCK,*,BLOCK) -!dvm$ align(i,j,ii,jj) with A(i,j,ii,jj) :: B - - tname='REM4314' - allocate (A(N,M,K,L),B(N,M,K,L),C(N,M,K,L),D(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*remote_access(A(:,:,:,L)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - B(i,j,ii,jj) = A(i,j,ii,L) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - if (B(i,j,ii,jj).ne.C(i,j,ii,L)) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (B,A,C,D) - - end - -C --------------------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh11.fdv deleted file mode 100644 index 6dfa3ea..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh11.fdv +++ /dev/null @@ -1,830 +0,0 @@ - program SH11 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH11========================' -C -------------------------------------------------- - call sh1101 -C -------------------------------------------------- - call sh1102 -C -------------------------------------------------- - call sh1103 -C ------------------------------------------------- - call sh1104 -C ------------------------------------------------- - call sh1105 -C ------------------------------------------------- - call sh1106 -C -------------------------------------------------- - call sh1107 -C -------------------------------------------------- - call sh1108 -C -------------------------------------------------- - call sh1109 -C ------------------------------------------------- - call sh1110 -C ------------------------------------------------- - call sh1111 -C ------------------------------------------------- - call sh1112 -C ------------------------------------------------- - call sh1113 -C -------------------------------------------------- - call sh1114 -C -------------------------------------------------- - call sh1115 -C ------------------------------------------------- - call sh1116 -C ------------------------------------------------- - call sh1117 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SH11 ========================= ' - end -C ---------------------------------------------SH1101 - subroutine SH1101 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SH1101' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH1102 - subroutine sh1102 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SH1102' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:1)) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH1103 - subroutine sh1103 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SH1103' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:1)) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH1104 - subroutine sh1104 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SH1104' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:0)) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.(c(i-1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH1105 - subroutine sh1105 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:1) - - tname='SH1105' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:1)) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SH1106 - - subroutine sh1106 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(1:0) - - tname='SH1106' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:0)) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.(c(i-1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1107 - - subroutine sh1107 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1107' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(2:2)) - do i=3,N-2 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N-2 - if (B(i).ne.(C(i-1)+c(i+1)+c(i-2)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1108 - - subroutine sh1108 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1108' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:2)) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(c(i+1)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH1109 - - subroutine sh1109 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1109' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(2:0)) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(c(i-1)+c(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1110 - - subroutine sh1110 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:2) - - tname='SH1110' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(c(i+1)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1111 - - subroutine sh1111 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:0) - - tname='SH1111' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(c(i-1)+c(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1112 - - subroutine sh1112 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1112' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=4,N-3 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2)+A(i-3)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N-3 - if (B(i).ne.(C(i-1)+c(i+1)+c(i-2)+c(i+2)+c(i-3)+c(i+3))) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1113 - - subroutine sh1113 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1113' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:3)) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(c(i+1)+c(i+2)+c(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1114 - - subroutine sh1114 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1114' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(3:0)) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(c(i-1)+c(i-2)+c(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1115 - - subroutine sh1115 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:0) - - tname='SH1115' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(c(i-1)+c(i-2)+c(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1116 - - subroutine sh1116 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:3) - - tname='SH1116' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(c(i+1)+c(i+2)+c(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH1117 - - subroutine sh1117 - integer, parameter :: N = 500,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(11:11) - - tname='SH1117' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=12,N-11 - B(i) = A(i-9)+A(i+9)+A(i+10)+A(i-10)+A(i-11)+A(i+11) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=12,N-11 - if (B(i).ne.(C(i-9)+c(i+9)+c(i-10)+c(i+10)+ - *c(i-11)+c(i+11))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh12.fdv deleted file mode 100644 index 27ca477..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh12.fdv +++ /dev/null @@ -1,831 +0,0 @@ - program SH12 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH12========================' -C -------------------------------------------------- - call sh1201 -C -------------------------------------------------- - call sh1202 -C -------------------------------------------------- - call sh1203 -C ------------------------------------------------- - call sh1204 -C ------------------------------------------------- - call sh1205 -C ------------------------------------------------- - call sh1206 -C -------------------------------------------------- - call sh1207 -C -------------------------------------------------- - call sh1208 -C -------------------------------------------------- - call sh1209 -C ------------------------------------------------- - call sh1210 -C ------------------------------------------------- - call sh1211 -C ------------------------------------------------- - call sh1212 -C ------------------------------------------------- - call sh1213 -C -------------------------------------------------- - call sh1214 -C -------------------------------------------------- - call sh1215 -C ------------------------------------------------- - call sh1216 -C ------------------------------------------------- - call sh1217 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SH12 ========================= ' - end -C ---------------------------------------------SH1201 - subroutine SH1201 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='SH1201' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH1202 - subroutine sh1202 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='SH1202' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:1)) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH1203 - subroutine sh1203 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='SH1203' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:1)) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH1204 - subroutine sh1204 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A - - tname='SH1204' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:0)) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.(c(i-1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH1205 - subroutine sh1205 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:1) - - tname='SH1205' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:1)) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(c(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SH1206 - - subroutine sh1206 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(1:0) - - tname='SH1206' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(1:0)) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.(c(i-1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1207 - - subroutine sh1207 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1207' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(2:2)) - do i=3,N-2 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N-2 - if (B(i).ne.(C(i-1)+c(i+1)+c(i-2)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1208 - - subroutine sh1208 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1208' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:2)) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(c(i+1)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH1209 - - subroutine sh1209 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SH1209' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(2:0)) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(c(i-1)+c(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1210 - - subroutine sh1210 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:2) - - tname='SH1210' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(c(i+1)+c(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1211 - - subroutine sh1211 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:0) - - tname='SH1211' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(c(i-1)+c(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1212 - - subroutine sh1212 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1212' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=4,N-3 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2)+A(i-3)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N-3 - if (B(i).ne.(C(i-1)+c(i+1)+c(i-2)+c(i+2)+c(i-3)+c(i+3))) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1213 - - subroutine sh1213 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1213' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(0:3)) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(c(i+1)+c(i+2)+c(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1214 - - subroutine sh1214 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SH1214' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A(3:0)) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(c(i-1)+c(i-2)+c(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1215 - - subroutine sh1215 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:0) - - tname='SH1215' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(c(i-1)+c(i-2)+c(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH1216 - - subroutine sh1216 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:3) - - tname='SH1216' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(c(i+1)+c(i+2)+c(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH1217 - - subroutine sh1217 - integer, parameter :: N = 50,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(*) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(11:11) - - tname='SH1217' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - enddo - - -!dvm$ parallel (i) on B(i),shadow_renew(A) - do i=12,N-11 - B(i) = A(i-9)+A(i+9)+A(i+10)+A(i-10)+A(i-11)+A(i+11) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=12,N-11 - if (B(i).ne.(C(i-9)+c(i+9)+c(i-10)+c(i+10)+ - *c(i-11)+c(i+11))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh21.fdv deleted file mode 100644 index 696cb49..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh21.fdv +++ /dev/null @@ -1,1220 +0,0 @@ - program SH21 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH21========================' -C -------------------------------------------------- - call sh2101 -C -------------------------------------------------- - call sh2102 -C -------------------------------------------------- - call sh2103 -C ------------------------------------------------- - call sh2104 -C ------------------------------------------------- - call sh2105 -C ------------------------------------------------- - call sh2106 -C -------------------------------------------------- - call sh2107 -C -------------------------------------------------- - call sh2108 -C---------------------------------------------------- - call sh2109 -C ------------------------------------------------- - call sh2110 -C ------------------------------------------------- - call sh2111 -C ------------------------------------------------- - call sh2112 -C ------------------------------------------------- - call sh2113 -C -------------------------------------------------- - call sh2114 -C -------------------------------------------------- - call sh2115 -C ------------------------------------------------- - call sh2116 -C ------------------------------------------------- - call sh2117 -C ------------------------------------------------- - call sh2118 -C ------------------------------------------------- - call sh2119 -C ------------------------------------------------- - call sh2120 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SH21 ========================= ' - end -C ---------------------------------------------SH2101 - subroutine SH2101 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - character*6 tname -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2101' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1)+ - *A(i-1,j-1)+ A(i+1,j+1)+A(i-1,j+1)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1)+ - *C(i-1,j-1)+ C(i+1,j+1)+C(i-1,j+1)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH2102 - subroutine sh2102 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2102' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:1)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH2103 - subroutine sh2103 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2103' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(1:0,0:1)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i-1,j)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH2104 - subroutine sh2104 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(1:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2104' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:1)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH2105 - subroutine sh2105 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:1,1:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2105' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,1:0)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i,j-1)+A(i+1,j)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1)+C(i+1,j)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SH2106 - - subroutine sh2106 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2106' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2107 - - subroutine sh2107 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(1:0,1:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2107' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,1:0)) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2108 - - subroutine sh2108 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2108' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i+2,j+2)+ - * A(i-2,j+2)+A(i-2,j)+A(i,j-2)+A(i-2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i+2,j+2)+ - *C(i-2,j+2)+C(i-2,j)+C(i,j-2)+C(i-2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH2109 - - subroutine sh2109 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2109' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:2,2:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i,j+2)+A(i,j-2)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i,j+2)+C(i,j-2)+A(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2110 - - subroutine sh2110 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2110' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(2:2,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-2,j-2)+ A(i-1,j-1)+A(i-2,j)+A(i+2,j)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-2,j-2)+C(i-1,j-1)+C(i-2,j)+C(i+2,j)+C(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2111 - - subroutine sh2111 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,0:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2111' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(2:2,0:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i-2,j+2)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i-2,j+2)+C(i+2,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2112 - - subroutine sh2112 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2112' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(1:0,0:1)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-1,j+1)+ A(i,j+1)+A(i-1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-1,j+1)+ C(i,j+1)+C(i-1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2113 - - subroutine sh2113 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2113' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2114 - - subroutine sh2114 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2114' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,0:2)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+2)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+2)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2115 - - subroutine sh2115 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2115' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i+1,j+1)+A(i+2,j+2)+A(i+3,j+3)+A(i-3,j-3)+ - * A(i-2,j-2)+A(i-1,j-1)+A(i-3,j+3)+A(i+3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i+1,j+1)+C(i+2,j+2)+C(i+3,j+3)+C(i-3,j-3)+ - * C(i-2,j-2)+C(i-1,j-1)+C(i-3,j+3)+C(i+3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2116 - - subroutine sh2116 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2116' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,0:1)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2117 - - subroutine sh2117 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2117' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2118 - - subroutine sh2118 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2118' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i+3,j)+A(i-3,j)+A(i-3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i+3,j)+C(i-3,j)+C(i-3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2119 - - subroutine sh2119 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:0,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2119' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(3:0,3:3)(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i,j+3)+A(i-3,j+3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i,j+3)+C(i-3,j+3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2120 - - subroutine sh2120 - integer, parameter :: N = 480,M=480,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2120' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - B(i,j) = A(i+11,j+11)+A(i+10,j+10)+A(i+9,j+9)+ - *A(i-11,j-11)+A(i-10,j-10)+A(i-9,j-9)+A(i+11,j-11)+ - *A(i-11,j+11) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - isum = C(i+11,j+11)+C(i+10,j+10)+C(i+9,j+9)+ - *C(i-11,j-11)+C(i-10,j-10)+C(i-9,j-9)+C(i+11,j-11)+ - *C(i-11,j+11) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh22.fdv deleted file mode 100644 index 1b573c1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh22.fdv +++ /dev/null @@ -1,1221 +0,0 @@ - program SH22 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH22========================' -C -------------------------------------------------- - call sh2201 -C -------------------------------------------------- - call sh2202 -C -------------------------------------------------- - call sh2203 -C ------------------------------------------------- - call sh2204 -C ------------------------------------------------- - call sh2205 -C ------------------------------------------------- - call sh2206 -C -------------------------------------------------- - call sh2207 -C -------------------------------------------------- - call sh2208 -C---------------------------------------------------- - call sh2209 -C ------------------------------------------------- - call sh2210 -C ------------------------------------------------- - call sh2211 -C ------------------------------------------------- - call sh2212 -C ------------------------------------------------- - call sh2213 -C -------------------------------------------------- - call sh2214 -C -------------------------------------------------- - call sh2215 -C ------------------------------------------------- - call sh2216 -C ------------------------------------------------- - call sh2217 -C ------------------------------------------------- - call sh2218 -C ------------------------------------------------- - call sh2219 -C ------------------------------------------------- - call sh2220 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SH22 ========================= ' - end -C ---------------------------------------------SH2201 - subroutine SH2201 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - character*6 tname -!dvm$ distribute B(BLOCK,*) -!dvm$ align (I,J) with B(I,J) ::A - - - tname='SH2201' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1)+ - *A(i-1,j-1)+ A(i+1,j+1)+A(i-1,j+1)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1)+ - *C(i-1,j-1)+ C(i+1,j+1)+C(i-1,j+1)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH2202 - subroutine sh2202 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2202' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:1)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH2203 - subroutine sh2203 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2203' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(1:0,0:1)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i-1,j)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH2204 - subroutine sh2204 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(1:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2204' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:1)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH2205 - subroutine sh2205 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(0:1,1:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2205' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,1:0)(CORNER)) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i,j-1)+A(i+1,j)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1)+C(i+1,j)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SH2206 - - subroutine sh2206 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(0:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2206' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2207 - - subroutine sh2207 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(1:0,1:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2207' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,1:0)) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2208 - - subroutine sh2208 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2208' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i+2,j+2)+ - * A(i-2,j+2)+A(i-2,j)+A(i,j-2)+A(i-2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i+2,j+2)+ - *C(i-2,j+2)+C(i-2,j)+C(i,j-2)+C(i-2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH2209 - - subroutine sh2209 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2209' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:2,2:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i,j+2)+A(i,j-2)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i,j+2)+C(i,j-2)+A(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2210 - - subroutine sh2210 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2210' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(2:2,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-2,j-2)+ A(i-1,j-1)+A(i-2,j)+A(i+2,j)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-2,j-2)+C(i-1,j-1)+C(i-2,j)+C(i+2,j)+C(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2211 - - subroutine sh2211 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,0:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2211' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(2:2,0:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i-2,j+2)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i-2,j+2)+C(i+2,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2212 - - subroutine sh2212 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2212' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(1:0,0:1)(CORNER)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-1,j+1)+ A(i,j+1)+A(i-1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-1,j+1)+ C(i,j+1)+C(i-1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2213 - - subroutine sh2213 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,2:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2213' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2214 - - subroutine sh2214 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2214' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,0:2)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+2)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+2)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2215 - - subroutine sh2215 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(3:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2215' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i+1,j+1)+A(i+2,j+2)+A(i+3,j+3)+A(i-3,j-3)+ - * A(i-2,j-2)+A(i-1,j-1)+A(i-3,j+3)+A(i+3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i+1,j+1)+C(i+2,j+2)+C(i+3,j+3)+C(i-3,j-3)+ - * C(i-2,j-2)+C(i-1,j-1)+C(i-3,j+3)+C(i+3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH2216 - - subroutine sh2216 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(3:3,0:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2216' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:0,0:1)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2217 - - subroutine sh2217 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(0:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2217' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(0:1,0:0)) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2218 - - subroutine sh2218 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(3:3,3:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2218' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i+3,j)+A(i-3,j)+A(i-3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i+3,j)+C(i-3,j)+C(i-3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2219 - - subroutine sh2219 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(3:0,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2219' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(3:0,3:3)(CORNER)) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i,j+3)+A(i-3,j+3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i,j+3)+C(i-3,j+3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH2220 - - subroutine sh2220 - integer, parameter :: N = 480,M=480,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(11:11,11:11) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SH2220' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j),shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - B(i,j) = A(i+11,j+11)+A(i+10,j+10)+A(i+9,j+9)+ - *A(i-11,j-11)+A(i-10,j-10)+A(i-9,j-9)+A(i+11,j-11)+ - *A(i-11,j+11) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - isum = C(i+11,j+11)+C(i+10,j+10)+C(i+9,j+9)+ - *C(i-11,j-11)+C(i-10,j-10)+C(i-9,j-9)+C(i+11,j-11)+ - *C(i-11,j+11) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh31.fdv deleted file mode 100644 index b2eac6f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh31.fdv +++ /dev/null @@ -1,691 +0,0 @@ - program SH31 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH31========================' -C -------------------------------------------------- - call sh3101 -C -------------------------------------------------- - call sh3102 -C -------------------------------------------------- - call sh3103 -C ------------------------------------------------- - call sh3104 -C ------------------------------------------------- - call sh3105 -C ------------------------------------------------- - call sh3106 -C -------------------------------------------------- - call sh3107 -C -------------------------------------------------- - call sh3108 -C---------------------------------------------------- - call sh3109 -C---------------------------------------------------- - -C -C - print *,'=== END OF SH31 ========================= ' - end -C ---------------------------------------------SH3101 - subroutine SH3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3101' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1)+A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1)+ - *A(i-1,j+1,ii)+A(i+1,j-1,ii)+A(i-1,j+1,ii-1)+A(i-1,j+1,ii+1)+ - *A(i+1,j-1,ii-1)+A(i+1,j-1,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - isum = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1)+C(i-1,j-1,ii-1)+C(i+1,j+1,ii+1)+ - *C(i-1,j+1,ii)+C(i+1,j-1,ii)+C(i-1,j+1,ii-1)+C(i-1,j+1,ii+1)+ - *C(i+1,j-1,ii-1)+C(i+1,j-1,ii+1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH3102 - subroutine SH3102 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3102' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(1:2,2:2,1:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i-1,j-2,ii+2)+A(i-1,j+2,ii-1)+A(i-1,j+2,ii+2)+ - *A(i+2,j+2,ii+2)+ A(i+2,j+2,ii-1)+A(i+2,j-2,ii+2)+A(i+2,j-2,ii-1)+ - *A(i-1,j-2,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i-1,j-2,ii+2)+C(i-1,j+2,ii-1)+C(i-1,j+2,ii+2)+ - *C(i+2,j+2,ii+2)+ C(i+2,j+2,ii-1)+C(i+2,j-2,ii+2)+C(i+2,j-2,ii-1)+ - *C(i-1,j-2,ii-1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH3103 - subroutine SH3103 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3103' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(0:2,2:2,0:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - *A(i+2,j-2,ii)+A(i,j+2,ii)+ A(i,j+2,ii+2)+A(i+2,j-2,ii+2)+ - * A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - *C(i+2,j-2,ii)+C(i,j+2,ii)+ C(i,j+2,ii+2)+C(i+2,j-2,ii+2)+ - *C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH3104 - subroutine SH3104 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3104' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(2:2,2:0,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j,ii)+A(i-2,j-2,ii-2)+ - *A(i+2,j-2,ii-2)+ A(i-2,j,ii-2)+A(i-2,j-2,ii)+ - *A(i-2,j,ii)+A(i+2,j-2,ii)+A(i+2,j,ii-2) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j,ii)+C(i-2,j-2,ii-2)+ - *C(i+2,j-2,ii-2)+ C(i-2,j,ii-2)+C(i-2,j-2,ii)+ - *C(i-2,j,ii)+C(i+2,j-2,ii)+C(i+2,j,ii-2) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH3105 - subroutine SH3105 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3105' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - * A(i+2,j-2,ii)+ A(i,j+2,ii)+A(i,j+2,ii+2)+ - * A(i+2,j-2,ii+2)+A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - * C(i+2,j-2,ii)+ C(i,j+2,ii)+C(i,j+2,ii+2)+ - * C(i+2,j-2,ii+2)+C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C --------------------------------------------SH3106 - subroutine SH3106 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3106' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i-3,j-3,ii+3)+A(i+3,j+3,ii-3)+ - * A(i+3,j-3,ii+3)+ A(i-3,j+3,ii+3)+A(i-3,j+3,ii-3)+ - * A(i+3,j-3,ii-3)+A(i+3,j+3,ii+3)+A(i-3,j-3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i-3,j-3,ii+3)+C(i+3,j+3,ii-3)+ - * C(i+3,j-3,ii+3)+ C(i-3,j+3,ii+3)+C(i-3,j+3,ii-3)+ - * C(i+3,j-3,ii-3)+ C(i+3,j+3,ii+3)+ C(i-3,j-3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH3107 - subroutine SH3107 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3,3:0) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3107' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii)+A(i-3,j,ii-3)+ - * A(i+3,j,ii-3)+ A(i-3,j+3,ii-3)+ A(i-3,j,ii)+ - * A(i-3,j+3,ii)+ A(i+3,j,ii)+ A(i+3,j+3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii)+C(i-3,j,ii-3)+ - * C(i+3,j,ii-3)+ C(i-3,j+3,ii-3)+C(i-3,j,ii)+ - * C(i-3,j+3,ii)+ C(i+3,j,ii)+ C(i+3,j+3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C -------------------------------------------SH3108 - subroutine SH3108 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3108' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(0:3,0:3,0:3)(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii+3)+A(i+3,j,ii)+ - * A(i,j+3,ii)+ A(i,j,ii+3)+ A(i,j+3,ii+3)+ - * A(i+3,j,ii+3)+ A(i+3,j+3,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii+3)+C(i+3,j,ii)+ - * C(i,j+3,ii)+ C(i,j,ii+3)+ C(i,j+3,ii+3)+ - * C(i+3,j,ii+3)+ C(i+3,j+3,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH3109 - subroutine SH3109 - integer, parameter :: N = 120,M=120,K=120,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3109' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - B(i,j,ii) = A(i+11,j+11,ii+11)+A(i-11,j-11,ii-11)+ - * A(i+11,j-11,ii-11)+ A(i-11,j+11,ii-11)+ A(i-11,j-11,ii+11)+ - * A(i-11,j+11,ii+11)+ A(i+11,j-11,ii+11)+A(i+11,j+11,ii-11) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - isum = C(i+11,j+11,ii+11)+C(i-11,j-11,ii-11)+ - * C(i+11,j-11,ii-11)+ C(i-11,j+11,ii-11)+ C(i-11,j-11,ii+11)+ - * C(i-11,j+11,ii+11)+ C(i+11,j-11,ii+11)+C(i+11,j+11,ii-11) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh32.fdv deleted file mode 100644 index c1c800c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh32.fdv +++ /dev/null @@ -1,692 +0,0 @@ - program SH32 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH32========================' -C -------------------------------------------------- - call sh3201 -C -------------------------------------------------- - call sh3202 -C -------------------------------------------------- - call sh3203 -C ------------------------------------------------- - call sh3204 -C ------------------------------------------------- - call sh3205 -C ------------------------------------------------- - call sh3206 -C -------------------------------------------------- - call sh3207 -C -------------------------------------------------- - call sh3208 -C---------------------------------------------------- - call sh3209 -C---------------------------------------------------- - -C -C - print *,'=== END OF SH32 ========================= ' - end -C ---------------------------------------------SH3201 - subroutine SH3201 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3201' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1)+A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1)+ - *A(i-1,j+1,ii)+A(i+1,j-1,ii)+A(i-1,j+1,ii-1)+A(i-1,j+1,ii+1)+ - *A(i+1,j-1,ii-1)+A(i+1,j-1,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - isum = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1)+C(i-1,j-1,ii-1)+C(i+1,j+1,ii+1)+ - *C(i-1,j+1,ii)+C(i+1,j-1,ii)+C(i-1,j+1,ii-1)+C(i-1,j+1,ii+1)+ - *C(i+1,j-1,ii-1)+C(i+1,j-1,ii+1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH3202 - subroutine SH3202 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3202' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(1:2,2:2,1:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i-1,j-2,ii+2)+A(i-1,j+2,ii-1)+A(i-1,j+2,ii+2)+ - *A(i+2,j+2,ii+2)+ A(i+2,j+2,ii-1)+A(i+2,j-2,ii+2)+A(i+2,j-2,ii-1)+ - *A(i-1,j-2,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i-1,j-2,ii+2)+C(i-1,j+2,ii-1)+C(i-1,j+2,ii+2)+ - *C(i+2,j+2,ii+2)+ C(i+2,j+2,ii-1)+C(i+2,j-2,ii+2)+C(i+2,j-2,ii-1)+ - *C(i-1,j-2,ii-1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH3203 - subroutine SH3203 - integer, parameter :: N = 16,M=116,K=116,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3203' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(0:2,2:2,0:2)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - *A(i+2,j-2,ii)+A(i,j+2,ii)+ A(i,j+2,ii+2)+A(i+2,j-2,ii+2)+ - * A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - *C(i+2,j-2,ii)+C(i,j+2,ii)+ C(i,j+2,ii+2)+C(i+2,j-2,ii+2)+ - *C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH3204 - subroutine SH3204 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3204' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(2:2,2:0,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j,ii)+A(i-2,j-2,ii-2)+ - *A(i+2,j-2,ii-2)+ A(i-2,j,ii-2)+A(i-2,j-2,ii)+ - *A(i-2,j,ii)+A(i+2,j-2,ii)+A(i+2,j,ii-2) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j,ii)+C(i-2,j-2,ii-2)+ - *C(i+2,j-2,ii-2)+ C(i-2,j,ii-2)+C(i-2,j-2,ii)+ - *C(i-2,j,ii)+C(i+2,j-2,ii)+C(i+2,j,ii-2) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SH3205 - subroutine SH3205 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3205' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - * A(i+2,j-2,ii)+ A(i,j+2,ii)+A(i,j+2,ii+2)+ - * A(i+2,j-2,ii+2)+A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - * C(i+2,j-2,ii)+ C(i,j+2,ii)+C(i,j+2,ii+2)+ - * C(i+2,j-2,ii+2)+C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C --------------------------------------------SH3206 - subroutine SH3206 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3206' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i-3,j-3,ii+3)+A(i+3,j+3,ii-3)+ - * A(i+3,j-3,ii+3)+ A(i-3,j+3,ii+3)+A(i-3,j+3,ii-3)+ - * A(i+3,j-3,ii-3)+A(i+3,j+3,ii+3)+A(i-3,j-3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i-3,j-3,ii+3)+C(i+3,j+3,ii-3)+ - * C(i+3,j-3,ii+3)+ C(i-3,j+3,ii+3)+C(i-3,j+3,ii-3)+ - * C(i+3,j-3,ii-3)+ C(i+3,j+3,ii+3)+ C(i-3,j-3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH3207 - subroutine SH3207 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ shadow(3:3,0:3,3:0) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3207' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii)+A(i-3,j,ii-3)+ - * A(i+3,j,ii-3)+ A(i-3,j+3,ii-3)+ A(i-3,j,ii)+ - * A(i-3,j+3,ii)+ A(i+3,j,ii)+ A(i+3,j+3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii)+C(i-3,j,ii-3)+ - * C(i+3,j,ii-3)+ C(i-3,j+3,ii-3)+C(i-3,j,ii)+ - * C(i-3,j+3,ii)+ C(i+3,j,ii)+ C(i+3,j+3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C -------------------------------------------SH3208 - subroutine SH3208 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3208' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(0:3,0:3,0:3)(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii+3)+A(i+3,j,ii)+ - * A(i,j+3,ii)+ A(i,j,ii+3)+ A(i,j+3,ii+3)+ - * A(i+3,j,ii+3)+ A(i+3,j+3,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii+3)+C(i+3,j,ii)+ - * C(i,j+3,ii)+ C(i,j,ii+3)+ C(i,j+3,ii+3)+ - * C(i+3,j,ii+3)+ C(i+3,j+3,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SH3209 - subroutine SH3209 - integer, parameter :: N = 120,M=120,K=120,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SH3209' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - B(i,j,ii) = A(i+11,j+11,ii+11)+A(i-11,j-11,ii-11)+ - * A(i+11,j-11,ii-11)+ A(i-11,j+11,ii-11)+ A(i-11,j-11,ii+11)+ - * A(i-11,j+11,ii+11)+ A(i+11,j-11,ii+11)+A(i+11,j+11,ii-11) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - isum = C(i+11,j+11,ii+11)+C(i-11,j-11,ii-11)+ - * C(i+11,j-11,ii-11)+ C(i-11,j+11,ii-11)+ C(i-11,j-11,ii+11)+ - * C(i-11,j+11,ii+11)+ C(i+11,j-11,ii+11)+C(i+11,j+11,ii-11) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh41.fdv deleted file mode 100644 index 2b81283..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh41.fdv +++ /dev/null @@ -1,803 +0,0 @@ - program SH41 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH41========================' -C -------------------------------------------------- - call sh4101 -C -------------------------------------------------- - call sh4102 -C -------------------------------------------------- - call sh4103 -C ------------------------------------------------- - call sh4104 -C ------------------------------------------------- - call sh4105 -C ------------------------------------------------- - call sh4106 -C -------------------------------------------------- - call sh4107 -C -------------------------------------------------- - call sh4108 -C---------------------------------------------------- - call sh4109 -C---------------------------------------------------- - -C -C - print *,'=== END OF SH41 ========================= ' - end -C ---------------------------------------------SH4101 - subroutine SH4101 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4101' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - B(i,j,ii,jj) = A(i+1,j+1,ii+1,jj+1)+A(i-1,j-1,ii-1,jj-1)+ - * A(i+1,j-1,ii-1,jj-1)+A(i-1,j+1,ii-1,jj-1)+ - * A(i-1,j-1,ii+1,jj-1)+ A(i-1,j-1,ii-1,jj+1)+ - * A(i+1,j+1,ii-1,jj-1)+A(i-1,j+1,ii+1,jj-1)+ - * A(i-1,j-1,ii+1,jj+1)+A(i+1,j-1,ii-1,jj+1)+ - * A(i+1,j-1,ii+1,jj-1)+A(i-1,j+1,ii-1,jj+1)+ - * A(i+1,j+1,ii+1,jj-1)+A(i-1,j+1,ii+1,jj+1)+ - * A(i+1,j-1,ii+1,jj+1)+A(i+1,j+1,ii-1,jj+1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - isum = C(i+1,j+1,ii+1,jj+1)+C(i-1,j-1,ii-1,jj-1)+ - * C(i+1,j-1,ii-1,jj-1)+ C(i-1,j+1,ii-1,jj-1)+ - * C(i-1,j-1,ii+1,jj-1)+ C(i-1,j-1,ii-1,jj+1)+ - * C(i+1,j+1,ii-1,jj-1)+ C(i-1,j+1,ii+1,jj-1)+ - * C(i-1,j-1,ii+1,jj+1)+ C(i+1,j-1,ii-1,jj+1)+ - * C(i+1,j-1,ii+1,jj-1)+ C(i-1,j+1,ii-1,jj+1)+ - * C(i+1,j+1,ii+1,jj-1)+ C(i-1,j+1,ii+1,jj+1)+ - * C(i+1,j-1,ii+1,jj+1)+ C(i+1,j+1,ii-1,jj+1) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH4102 - - subroutine SH4102 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4102' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj+2)+A(i-2,j-2,ii-2,jj-2)+ - * A(i+2,j-2,ii-2,jj-2)+ A(i-2,j+2,ii-2,jj-2)+ - * A(i-2,j-2,ii+2,jj-2)+ A(i-2,j-2,ii-2,jj+2)+ - * A(i+2,j+2,ii-2,jj-2)+ A(i-2,j+2,ii+2,jj-2)+ - * A(i-2,j-2,ii+2,jj+2)+ A(i+2,j-2,ii-2,jj+2)+ - * A(i+2,j-2,ii+2,jj-2)+ A(i-2,j+2,ii-2,jj+2)+ - * A(i+2,j+2,ii+2,jj-2)+ A(i-2,j+2,ii+2,jj+2)+ - * A(i+2,j-2,ii+2,jj+2)+ A(i+2,j+2,ii-2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj+2)+C(i-2,j-2,ii-2,jj-2)+ - * C(i+2,j-2,ii-2,jj-2)+ C(i-2,j+2,ii-2,jj-2)+ - * C(i-2,j-2,ii+2,jj-2)+ C(i-2,j-2,ii-2,jj+2)+ - * C(i+2,j+2,ii-2,jj-2)+ C(i-2,j+2,ii+2,jj-2)+ - * C(i-2,j-2,ii+2,jj+2)+ C(i+2,j-2,ii-2,jj+2)+ - * C(i+2,j-2,ii+2,jj-2)+ C(i-2,j+2,ii-2,jj+2)+ - * C(i+2,j+2,ii+2,jj-2)+ C(i-2,j+2,ii+2,jj+2)+ - * C(i+2,j-2,ii+2,jj+2)+ C(i+2,j+2,ii-2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH4103 - subroutine SH4103 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4103' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(2:0,2:2,2:0,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i-2,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj)+ A(i-2,j-2,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j-2,ii-2,jj)+ - * A(i-2,j-2,ii,jj)+ A(i,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj-2)+ A(i-2,j-2,ii-2,jj)+ - * A(i,j-2,ii-2,jj-2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i-2,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj)+ C(i-2,j-2,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j-2,ii-2,jj)+ - * C(i-2,j-2,ii,jj)+ C(i,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj-2)+ C(i-2,j-2,ii-2,jj)+ - * C(i,j-2,ii-2,jj-2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SH4104 - subroutine SH4104 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2,0:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4104' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj)+ - * A(i,j-2,ii,jj)+ A(i+2,j-2,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j-2,ii+2,jj)+ - * A(i+2,j+2,ii,jj)+ A(i,j-2,ii+2,jj+2)+ - * A(i,j+2,ii,jj+2)+ A(i+2,j+2,ii+2,jj)+ - * A(i,j+2,ii+2,jj+2)+A(i+2,j-2,ii+2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj)+ - * C(i,j-2,ii,jj)+ C(i+2,j-2,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j-2,ii+2,jj)+ - * C(i+2,j+2,ii,jj)+ C(i,j-2,ii+2,jj+2)+ - * C(i,j+2,ii,jj+2)+ C(i+2,j+2,ii+2,jj)+ - * C(i,j+2,ii+2,jj+2)+C(i+2,j-2,ii+2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SH4105 - subroutine SH4105 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4105' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(0:0,0:0,0:0,0:2)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i,j,ii,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i,j,ii,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH4106 - subroutine SH4106 - integer, parameter :: N = 32,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4106' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i-3,j-3,ii-3,jj-3)+ - * A(i+3,j-3,ii-3,jj-3)+ A(i-3,j+3,ii-3,jj-3)+ - * A(i-3,j-3,ii+3,jj-3)+ A(i-3,j-3,ii-3,jj+3)+ - * A(i+3,j+3,ii-3,jj-3)+ A(i-3,j+3,ii+3,jj-3)+ - * A(i-3,j-3,ii+3,jj+3)+ A(i+3,j-3,ii-3,jj+3)+ - * A(i+3,j-3,ii+3,jj-3)+ A(i-3,j+3,ii-3,jj+3)+ - * A(i+3,j+3,ii+3,jj-3)+ A(i-3,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3)+ A(i+3,j+3,ii-3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i-3,j-3,ii-3,jj-3)+ - * C(i+3,j-3,ii-3,jj-3)+ C(i-3,j+3,ii-3,jj-3)+ - * C(i-3,j-3,ii+3,jj-3)+ C(i-3,j-3,ii-3,jj+3)+ - * C(i+3,j+3,ii-3,jj-3)+ C(i-3,j+3,ii+3,jj-3)+ - * C(i-3,j-3,ii+3,jj+3)+ C(i+3,j-3,ii-3,jj+3)+ - * C(i+3,j-3,ii+3,jj-3)+ C(i-3,j+3,ii-3,jj+3)+ - * C(i+3,j+3,ii+3,jj-3)+ C(i-3,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3)+ C(i+3,j+3,ii-3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4107 - subroutine SH4107 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4107' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i,j-3,ii,jj)+ - * A(i+3,j-3,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj)+ A(i+3,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj+3)+ A(i,j+3,ii,jj+3)+ - * A(i+3,j+3,ii+3,jj)+ A(i,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i,j-3,ii,jj)+ - * C(i+3,j-3,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj)+ C(i+3,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj+3)+ C(i,j+3,ii,jj+3)+ - * C(i+3,j+3,ii+3,jj)+ C(i,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4108 - subroutine SH4108 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4108' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(0:0,0:0,0:0,3:0)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i,j,ii,jj-3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum =C(i,j,ii,jj-3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4109 - subroutine SH4109 - integer, parameter :: N = 60,M=60,K=60,L=60,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4109' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - B(i,j,ii,jj) = A(i+11,j+11,ii+11,jj+11)+ - * A(i-11,j-11,ii-11,jj-11)+ - * A(i+11,j-11,ii-11,jj-11)+ A(i-11,j+11,ii-11,jj-11)+ - * A(i-11,j-11,ii+11,jj-11)+ A(i-11,j-11,ii-11,jj+11)+ - * A(i+11,j+11,ii-11,jj-11)+ A(i-11,j+11,ii+11,jj-11)+ - * A(i-11,j-11,ii+11,jj+11)+ A(i+11,j-11,ii-11,jj+11)+ - * A(i+11,j-11,ii+11,jj-11)+ A(i-11,j+11,ii-11,jj+11)+ - * A(i+11,j+11,ii+11,jj-11)+ A(i-11,j+11,ii+11,jj+11)+ - * A(i+11,j-11,ii+11,jj+11)+ A(i+11,j+11,ii-11,jj+11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - isum = C(i+11,j+11,ii+11,jj+11)+ - * C(i-11,j-11,ii-11,jj-11)+ - * C(i+11,j-11,ii-11,jj-11)+ C(i-11,j+11,ii-11,jj-11)+ - * C(i-11,j-11,ii+11,jj-11)+ C(i-11,j-11,ii-11,jj+11)+ - * C(i+11,j+11,ii-11,jj-11)+ C(i-11,j+11,ii+11,jj-11)+ - * C(i-11,j-11,ii+11,jj+11)+ C(i+11,j-11,ii-11,jj+11)+ - * C(i+11,j-11,ii+11,jj-11)+ C(i-11,j+11,ii-11,jj+11)+ - * C(i+11,j+11,ii+11,jj-11)+ C(i-11,j+11,ii+11,jj+11)+ - * C(i+11,j-11,ii+11,jj+11)+ C(i+11,j+11,ii-11,jj+11) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh42.fdv deleted file mode 100644 index 17ae5de..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW/sh42.fdv +++ /dev/null @@ -1,803 +0,0 @@ - program SH42 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_RENEW CLAUSE'. -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SH42========================' -C -------------------------------------------------- - call sh4201 -C -------------------------------------------------- - call sh4202 -C -------------------------------------------------- - call sh4203 -C ------------------------------------------------- - call sh4204 -C ------------------------------------------------- - call sh4205 -C ------------------------------------------------- - call sh4206 -C -------------------------------------------------- - call sh4207 -C -------------------------------------------------- - call sh4208 -C---------------------------------------------------- - call sh4209 -C---------------------------------------------------- - -C -C - print *,'=== END OF SH42 ========================= ' - end -C ---------------------------------------------SH4201 - subroutine SH4201 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4201' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - B(i,j,ii,jj) = A(i+1,j+1,ii+1,jj+1)+A(i-1,j-1,ii-1,jj-1)+ - * A(i+1,j-1,ii-1,jj-1)+A(i-1,j+1,ii-1,jj-1)+ - * A(i-1,j-1,ii+1,jj-1)+ A(i-1,j-1,ii-1,jj+1)+ - * A(i+1,j+1,ii-1,jj-1)+A(i-1,j+1,ii+1,jj-1)+ - * A(i-1,j-1,ii+1,jj+1)+A(i+1,j-1,ii-1,jj+1)+ - * A(i+1,j-1,ii+1,jj-1)+A(i-1,j+1,ii-1,jj+1)+ - * A(i+1,j+1,ii+1,jj-1)+A(i-1,j+1,ii+1,jj+1)+ - * A(i+1,j-1,ii+1,jj+1)+A(i+1,j+1,ii-1,jj+1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - isum = C(i+1,j+1,ii+1,jj+1)+C(i-1,j-1,ii-1,jj-1)+ - * C(i+1,j-1,ii-1,jj-1)+ C(i-1,j+1,ii-1,jj-1)+ - * C(i-1,j-1,ii+1,jj-1)+ C(i-1,j-1,ii-1,jj+1)+ - * C(i+1,j+1,ii-1,jj-1)+ C(i-1,j+1,ii+1,jj-1)+ - * C(i-1,j-1,ii+1,jj+1)+ C(i+1,j-1,ii-1,jj+1)+ - * C(i+1,j-1,ii+1,jj-1)+ C(i-1,j+1,ii-1,jj+1)+ - * C(i+1,j+1,ii+1,jj-1)+ C(i-1,j+1,ii+1,jj+1)+ - * C(i+1,j-1,ii+1,jj+1)+ C(i+1,j+1,ii-1,jj+1) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SH4202 - - subroutine SH4202 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4202' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj+2)+A(i-2,j-2,ii-2,jj-2)+ - * A(i+2,j-2,ii-2,jj-2)+ A(i-2,j+2,ii-2,jj-2)+ - * A(i-2,j-2,ii+2,jj-2)+ A(i-2,j-2,ii-2,jj+2)+ - * A(i+2,j+2,ii-2,jj-2)+ A(i-2,j+2,ii+2,jj-2)+ - * A(i-2,j-2,ii+2,jj+2)+ A(i+2,j-2,ii-2,jj+2)+ - * A(i+2,j-2,ii+2,jj-2)+ A(i-2,j+2,ii-2,jj+2)+ - * A(i+2,j+2,ii+2,jj-2)+ A(i-2,j+2,ii+2,jj+2)+ - * A(i+2,j-2,ii+2,jj+2)+ A(i+2,j+2,ii-2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj+2)+C(i-2,j-2,ii-2,jj-2)+ - * C(i+2,j-2,ii-2,jj-2)+ C(i-2,j+2,ii-2,jj-2)+ - * C(i-2,j-2,ii+2,jj-2)+ C(i-2,j-2,ii-2,jj+2)+ - * C(i+2,j+2,ii-2,jj-2)+ C(i-2,j+2,ii+2,jj-2)+ - * C(i-2,j-2,ii+2,jj+2)+ C(i+2,j-2,ii-2,jj+2)+ - * C(i+2,j-2,ii+2,jj-2)+ C(i-2,j+2,ii-2,jj+2)+ - * C(i+2,j+2,ii+2,jj-2)+ C(i-2,j+2,ii+2,jj+2)+ - * C(i+2,j-2,ii+2,jj+2)+ C(i+2,j+2,ii-2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SH4203 - subroutine SH4203 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4203' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(2:0,2:2,2:0,2:0)(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i-2,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj)+ A(i-2,j-2,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j-2,ii-2,jj)+ - * A(i-2,j-2,ii,jj)+ A(i,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj-2)+ A(i-2,j-2,ii-2,jj)+ - * A(i,j-2,ii-2,jj-2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i-2,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj)+ C(i-2,j-2,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j-2,ii-2,jj)+ - * C(i-2,j-2,ii,jj)+ C(i,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj-2)+ C(i-2,j-2,ii-2,jj)+ - * C(i,j-2,ii-2,jj-2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SH4204 - subroutine SH4204 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(0:2,2:2,0:2,0:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4204' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(CORNER)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj)+ - * A(i,j-2,ii,jj)+ A(i+2,j-2,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j-2,ii+2,jj)+ - * A(i+2,j+2,ii,jj)+ A(i,j-2,ii+2,jj+2)+ - * A(i,j+2,ii,jj+2)+ A(i+2,j+2,ii+2,jj)+ - * A(i,j+2,ii+2,jj+2)+A(i+2,j-2,ii+2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj)+ - * C(i,j-2,ii,jj)+ C(i+2,j-2,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j-2,ii+2,jj)+ - * C(i+2,j+2,ii,jj)+ C(i,j-2,ii+2,jj+2)+ - * C(i,j+2,ii,jj+2)+ C(i+2,j+2,ii+2,jj)+ - * C(i,j+2,ii+2,jj+2)+C(i+2,j-2,ii+2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SH4205 - subroutine SH4205 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4205' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(0:0,0:0,0:0,0:2)) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i,j,ii,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i,j,ii,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SH4206 - subroutine SH4206 - integer, parameter :: N = 32,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4206' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i-3,j-3,ii-3,jj-3)+ - * A(i+3,j-3,ii-3,jj-3)+ A(i-3,j+3,ii-3,jj-3)+ - * A(i-3,j-3,ii+3,jj-3)+ A(i-3,j-3,ii-3,jj+3)+ - * A(i+3,j+3,ii-3,jj-3)+ A(i-3,j+3,ii+3,jj-3)+ - * A(i-3,j-3,ii+3,jj+3)+ A(i+3,j-3,ii-3,jj+3)+ - * A(i+3,j-3,ii+3,jj-3)+ A(i-3,j+3,ii-3,jj+3)+ - * A(i+3,j+3,ii+3,jj-3)+ A(i-3,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3)+ A(i+3,j+3,ii-3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i-3,j-3,ii-3,jj-3)+ - * C(i+3,j-3,ii-3,jj-3)+ C(i-3,j+3,ii-3,jj-3)+ - * C(i-3,j-3,ii+3,jj-3)+ C(i-3,j-3,ii-3,jj+3)+ - * C(i+3,j+3,ii-3,jj-3)+ C(i-3,j+3,ii+3,jj-3)+ - * C(i-3,j-3,ii+3,jj+3)+ C(i+3,j-3,ii-3,jj+3)+ - * C(i+3,j-3,ii+3,jj-3)+ C(i-3,j+3,ii-3,jj+3)+ - * C(i+3,j+3,ii+3,jj-3)+ C(i-3,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3)+ C(i+3,j+3,ii-3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4207 - subroutine SH4207 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4207' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i,j-3,ii,jj)+ - * A(i+3,j-3,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj)+ A(i+3,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj+3)+ A(i,j+3,ii,jj+3)+ - * A(i+3,j+3,ii+3,jj)+ A(i,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i,j-3,ii,jj)+ - * C(i+3,j-3,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj)+ C(i+3,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj+3)+ C(i,j+3,ii,jj+3)+ - * C(i+3,j+3,ii+3,jj)+ C(i,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4208 - subroutine SH4208 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4208' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*shadow_renew(A(0:0,0:0,0:0,3:0)) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i,j,ii,jj-3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum =C(i,j,ii,jj-3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SH4209 - subroutine SH4209 - integer, parameter :: N = 32,M=32,K=32,L=32,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,*,*,*) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SH4209' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj),shadow_renew(A(CORNER)) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - B(i,j,ii,jj) = A(i+11,j+11,ii+11,jj+11)+ - * A(i-11,j-11,ii-11,jj-11)+ - * A(i+11,j-11,ii-11,jj-11)+ A(i-11,j+11,ii-11,jj-11)+ - * A(i-11,j-11,ii+11,jj-11)+ A(i-11,j-11,ii-11,jj+11)+ - * A(i+11,j+11,ii-11,jj-11)+ A(i-11,j+11,ii+11,jj-11)+ - * A(i-11,j-11,ii+11,jj+11)+ A(i+11,j-11,ii-11,jj+11)+ - * A(i+11,j-11,ii+11,jj-11)+ A(i-11,j+11,ii-11,jj+11)+ - * A(i+11,j+11,ii+11,jj-11)+ A(i-11,j+11,ii+11,jj+11)+ - * A(i+11,j-11,ii+11,jj+11)+ A(i+11,j+11,ii-11,jj+11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - isum = C(i+11,j+11,ii+11,jj+11)+ - * C(i-11,j-11,ii-11,jj-11)+ - * C(i+11,j-11,ii-11,jj-11)+ C(i-11,j+11,ii-11,jj-11)+ - * C(i-11,j-11,ii+11,jj-11)+ C(i-11,j-11,ii-11,jj+11)+ - * C(i+11,j+11,ii-11,jj-11)+ C(i-11,j+11,ii+11,jj-11)+ - * C(i-11,j-11,ii+11,jj+11)+ C(i+11,j-11,ii-11,jj+11)+ - * C(i+11,j-11,ii+11,jj-11)+ C(i-11,j+11,ii-11,jj+11)+ - * C(i+11,j+11,ii+11,jj-11)+ C(i-11,j+11,ii+11,jj+11)+ - * C(i+11,j-11,ii+11,jj+11)+ C(i+11,j+11,ii-11,jj+11) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/settings deleted file mode 100644 index 3ef2d72..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/settings +++ /dev/null @@ -1 +0,0 @@ -DVM_ONLY=1 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha11.fdv deleted file mode 100644 index bc624eb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha11.fdv +++ /dev/null @@ -1,260 +0,0 @@ - program SHA11 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N),D(N),F(N) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA11========================' -C -------------------------------------------------- - call sha1101 -C -------------------------------------------------- - call sha1102 -C -------------------------------------------------- - call sha1103 -C ------------------------------------------------- - call sha1104 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA11 ========================= ' - end -C ---------------------------------------------SHA1101 - subroutine SHA1101 - - integer, parameter :: N = 32,NL=1000 - - - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(BLOCK) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1101' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -*dvm$ parallel (i) on BA(i) - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA1102 - subroutine SHA1102 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(BLOCK) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1102' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i) on BA(i),shadow_wait ADF - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA1103 - - - subroutine SHA1103 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(BLOCK) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1103' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i),shadow_start ADF - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_wait ADF -*dvm$ parallel (i) on BA(i) - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ---------------------------------------------SHA1104 - subroutine SHA1104 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(BLOCK) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1104' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i),shadow_start ADF - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -*dvm$ parallel (i) on BA(i),shadow_wait ADF - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha12.fdv deleted file mode 100644 index a631e8d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha12.fdv +++ /dev/null @@ -1,260 +0,0 @@ - program SHA12 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N),D(N),F(N) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA12========================' -C -------------------------------------------------- - call sha1201 -C -------------------------------------------------- - call sha1202 -C -------------------------------------------------- - call sha1203 -C ------------------------------------------------- - call sha1204 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA12 ========================= ' - end -C ---------------------------------------------SHA1201 - subroutine SHA1201 - - integer, parameter :: N = 32,NL=1000 - - - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(*) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1201' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -*dvm$ parallel (i) on BA(i) - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA1202 - subroutine SHA1202 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(*) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1202' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i) - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i) on BA(i),shadow_wait ADF - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA1203 - - - subroutine SHA1203 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(*) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1203' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i),shadow_start ADF - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -cdvm$ shadow_wait ADF -*dvm$ parallel (i) on BA(i) - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ---------------------------------------------SHA1204 - subroutine SHA1204 - integer, parameter :: N = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:),BA(:),BD(:),BF(:),C(:),D(:),F(:) - integer nloop - -cdvm$ distribute BA(*) -cdvm$ shadow D(2:2) -cdvm$ shadow F(3:3) -cdvm$ align (I) with BA(I) ::A,D,F,BD,BF - - tname='SHA1204' - allocate (BA(N),A(N),BD(N),BF(N),C(N),D(N),F(N)) -cdvm$ shadow_group ADF(A(1:1),D(2:2),F(3:3)) - - NNL=NL - call serial1(C,N,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i) on A(i),shadow_start ADF - do i=1,N - A(i) = NL+i - D(i) =NL+i - F(i) =NL+i - enddo - -*dvm$ parallel (i) on BA(i),shadow_wait ADF - do i=4,N-3 - BA(i) = A(i-1)+A(i+1) - BD(i)= D(i-2)+D(i+2) - BF(i)= F(i-3)+F(i+3) - enddo - -*dvm$ parallel (i) on BA(i), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - if (BA(i).ne.(C(i-1)+c(i+1))) nloopa=min(nloopa,i) - if (BD(i).ne.(C(i-2)+c(i+2))) nloopd=min(nloopd,i) - if (BF(i).ne.(C(i-3)+c(i+3))) nloopf=min(nloopf,i) - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha21.fdv deleted file mode 100644 index ffcefe5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha21.fdv +++ /dev/null @@ -1,297 +0,0 @@ - program SHA21 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M),D(N,M),F(N,M) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA21========================' -C -------------------------------------------------- - call sha2101 -C -------------------------------------------------- - call sha2102 -C -------------------------------------------------- - call sha2103 -C ------------------------------------------------- - call sha2104 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA21 ========================= ' - end -C ---------------------------------------------SHA2101 - subroutine SHA2101 - integer,parameter :: N = 16,M=16, PN = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2101' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -c print *,'C' -c print *,C -c print *,'A' -c print *,A -*dvm$ parallel (i,j) on BA(i,j),NEW(K) - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j) on BA(i,j),NEW(K),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA2102 - subroutine SHA2102 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2102' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i,j) on BA(i,j),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA2103 - - - subroutine SHA2103 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2103' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j),shadow_start ADF - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j) on BA(i,j) - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ---------------------------------------------SHA2104 - subroutine SHA2104 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2104' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j) on A(i,j),shadow_start ADF - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha22.fdv deleted file mode 100644 index 48ef178..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha22.fdv +++ /dev/null @@ -1,297 +0,0 @@ - program SHA22 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M),D(N,M),F(N,M) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA22========================' -C -------------------------------------------------- - call sha2201 -C -------------------------------------------------- - call sha2202 -C -------------------------------------------------- - call sha2203 -C ------------------------------------------------- - call sha2204 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA22 ========================= ' - end -C ---------------------------------------------SHA2201 - subroutine SHA2201 - integer,parameter :: N = 16,M=16, PN = 16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,*) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2201' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -c print *,'C' -c print *,C -c print *,'A' -c print *,A -*dvm$ parallel (i,j) on BA(i,j),NEW(K) - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j) on BA(i,j),NEW(K),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA2202 - subroutine SHA2202 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(*,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2202' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i,j) on BA(i,j),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA2203 - - - subroutine SHA2203 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(*,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2203' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j) on A(i,j),shadow_start ADF - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j) on BA(i,j) - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ---------------------------------------------SHA2204 - subroutine SHA2204 - integer,parameter :: N = 32,M=32,NL=1000 - character*7 tname - integer, allocatable :: A(:,:),BA(:,:),BD(:,:) - integer, allocatable :: BF(:,:),C(:,:),D(:,:),F(:,:) - integer nloop - -cdvm$ distribute BA(*,BLOCK) -cdvm$ shadow D(2:2,2:2) -cdvm$ shadow F(3:3,3:3) -cdvm$ align (I,J) with BA(I,J) ::A,D,F,BD,BF - - tname='SHA2204' - allocate (BA(N,M),A(N,M),BD(N,M)) - allocate (BF(N,M),C(N,M),D(N,M),F(N,M)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial2(C,N,M,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j) on A(i,j),shadow_start ADF - do i=1,N - do j=1,M - A(i,j) = NL+i+j - D(i,j) =NL+i+j - F(i,j) =NL+i+j - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - BA(i,j) = A(i-1,j-1)+A(i+1,j+1) - BD(i,j)= D(i-2,j-2)+D(i+2,j+2) - BF(i,j)= F(i-3,j-3)+F(i+3,j+3) - enddo - enddo - -*dvm$ parallel (i,j) on BA(i,j), reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - if (BA(i,j).ne.(C(i-1,j-1)+c(i+1,j+1))) nloopa=min(nloopa,i) - if (BD(i,j).ne.(C(i-2,j-2)+c(i+2,j+2))) nloopd=min(nloopd,i) - if (BF(i,j).ne.(C(i-3,j-3)+c(i+3,j+3))) nloopf=min(nloopf,i) - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha31.fdv deleted file mode 100644 index c694075..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha31.fdv +++ /dev/null @@ -1,335 +0,0 @@ - program SHA31 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M,K),D(N,M,K),F(N,M,K) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA31========================' -C -------------------------------------------------- - call sha3101 -C -------------------------------------------------- - call sha3102 -C -------------------------------------------------- - call sha3103 -C ------------------------------------------------- - call sha3104 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA31 ========================= ' - end -C ---------------------------------------------SHA3101 - subroutine SHA3101 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3101' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -c print *,'C' -c print *,C -c print *,'A' -c print *,A - -*dvm$ parallel (i,j,ii) on BA(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3102 - subroutine SHA3102 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3102' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3103 - subroutine SHA3103 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3103' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j,ii) on BA(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3104 - subroutine SHA3104 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3104' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha32.fdv deleted file mode 100644 index e8b6ada..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha32.fdv +++ /dev/null @@ -1,335 +0,0 @@ - program SHA32 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M,K),D(N,M,K),F(N,M,K) IS TO HAVE DIFFERENT -c SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA32========================' -C -------------------------------------------------- - call sha3201 -C -------------------------------------------------- - call sha3202 -C -------------------------------------------------- - call sha3203 -C ------------------------------------------------- - call sha3204 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA32 ========================= ' - end -C ---------------------------------------------SHA3201 - subroutine SHA3201 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,*) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3201' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF - -c print *,'C' -c print *,C -c print *,'A' -c print *,A - -*dvm$ parallel (i,j,ii) on BA(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3202 - subroutine SHA3202 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,*,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3202' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_start ADF - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3203 - subroutine SHA3203 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(*,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3203' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j,ii) on BA(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end - -C ---------------------------------------------SHA3204 - subroutine SHA3204 - integer, parameter :: N = 16,M=16, K=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:),BA(:,:,:),BD(:,:,:) - integer, allocatable :: BF(:,:,:),C(:,:,:),D(:,:,:),F(:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,*) -cdvm$ shadow D(2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3) -cdvm$ align (I,J,II) with BA(I,J,II) ::A,D,F,BD,BF - - tname='SHA3204' - allocate (BA(N,M,K),A(N,M,K),BD(N,M,K)) - allocate (BF(N,M,K),C(N,M,K),D(N,M,K),F(N,M,K)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial3(C,N,M,K,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - D(i,j,ii) =NL+i+j+ii - F(i,j,ii) =NL+i+j+ii - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - BA(i,j,ii) = A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1) - BD(i,j,ii)= D(i-2,j-2,ii-2)+D(i+2,j+2,ii+2) - BF(i,j,ii)= F(i-3,j-3,ii-3)+F(i+3,j+3,ii+3) - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii) on BA(i,j,ii),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - if (BA(i,j,ii).ne.(C(i-1,j-1,ii-1)+c(i+1,j+1,ii+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii).ne.(C(i-2,j-2,ii-2)+c(i+2,j+2,ii+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii).ne.(C(i-3,j-3,ii-3)+c(i+3,j+3,ii+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,BA,BD,BF,C,D,F) - - end -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha41.fdv deleted file mode 100644 index 0f74676..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha41.fdv +++ /dev/null @@ -1,364 +0,0 @@ - program SHA41 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M,K,L),D(N,M,K,L),F(N,M,K,L) -c IS TO HAVE DIFFERENT SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA41========================' -C -------------------------------------------------- - call sha4101 -C -------------------------------------------------- - call sha4102 -C -------------------------------------------------- - call sha4103 -C ------------------------------------------------- - call sha4104 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA41 ========================= ' - end -C ---------------------------------------------------------SHA4101 - subroutine SHA4101 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4101' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF -c print *,'C' -c print *,C -c print *,'A' -c print *,A - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj)=A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------------------SHA4102 - subroutine SHA4102 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4102' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C --------------------------------------------------------------SHA4103 - subroutine SHA4103 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4103' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C --------------------------------------------------------------SHA4104 - subroutine SHA4104 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4104' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha42.fdv deleted file mode 100644 index f886ad0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha42.fdv +++ /dev/null @@ -1,364 +0,0 @@ - program SHA42 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M,K,L),D(N,M,K,L),F(N,M,K,L) -c IS TO HAVE DIFFERENT SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA42========================' -C -------------------------------------------------- - call sha4201 -C -------------------------------------------------- - call sha4202 -C -------------------------------------------------- - call sha4203 -C ------------------------------------------------- - call sha4204 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA42 ========================= ' - end -C ---------------------------------------------------------SHA4201 - subroutine SHA4201 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(*,*,*,*) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4201' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF -c print *,'C' -c print *,C -c print *,'A' -c print *,A - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj)=A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------------------SHA4202 - subroutine SHA4202 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(*,*,*,*) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4202' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C --------------------------------------------------------------SHA4203 - subroutine SHA4203 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(*,*,*,*) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4203' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C --------------------------------------------------------------SHA4204 - subroutine SHA4204 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(*,*,*,*) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4204' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha43.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha43.fdv deleted file mode 100644 index f32afd9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOWA/sha43.fdv +++ /dev/null @@ -1,364 +0,0 @@ - program SHA43 - -c TESTING OF THE SHADOW_GROUP DIRECTIVE ,SHADOW_START DIRECRIVE AND -c SHADOW_WAIT DIRECTIVE. -c DISTRIBUTED ARRAYES A(N,M,K,L),D(N,M,K,L),F(N,M,K,L) -c IS TO HAVE DIFFERENT SHADOW WIDTH ON BOTH SIDES - - print *,'===START OF SHA43========================' -C -------------------------------------------------- - call sha4301 -C -------------------------------------------------- - call sha4302 -C -------------------------------------------------- - call sha4303 -C ------------------------------------------------- - call sha4304 -C ------------------------------------------------- - -C -C - print *,'=== END OF SHA43 ========================= ' - end -C ---------------------------------------------------------SHA4301 - subroutine SHA4301 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,BLOCK,*) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4301' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -cdvm$ shadow_wait ADF -c print *,'C' -c print *,C -c print *,'A' -c print *,A - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj)=A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C ------------------------------------------------------------SHA4302 - subroutine SHA4302 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,BLOCK,*,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4302' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_start ADF -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - -C --------------------------------------------------------------SHA4303 - subroutine SHA4303 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(BLOCK,*,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4303' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -cdvm$ shadow_wait ADF - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C --------------------------------------------------------------SHA4304 - subroutine SHA4304 - integer, parameter :: N = 16,M=16, K=16,L=16,NL=1000 - character*7 tname - integer, allocatable :: A(:,:,:,:),BA(:,:,:,:),BD(:,:,:,:) - integer, allocatable :: BF(:,:,:,:),C(:,:,:,:),D(:,:,:,:) - integer, allocatable :: F(:,:,:,:) - integer nloop - -cdvm$ distribute BA(*,BLOCK,BLOCK,BLOCK) -cdvm$ shadow D(2:2,2:2,2:2,2:2) -cdvm$ shadow F(3:3,3:3,3:3,3:3) -cdvm$ align (I,J,II,JJ) with BA(I,J,II,JJ) ::A,D,F,BD,BF - - tname='SHA4304' - allocate (BA(N,M,K,L),A(N,M,K,L),BD(N,M,K,L)) - allocate (BF(N,M,K,L),C(N,M,K,L),D(N,M,K,L),F(N,M,K,L)) -cdvm$ shadow_group ADF(A(CORNER),D(CORNER),F(CORNER)) - - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopa=NL - nloopd=NL - nloopf=NL - -*dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_start ADF - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - D(i,j,ii,jj) =NL+i+j+ii+jj - F(i,j,ii,jj) =NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),shadow_wait ADF - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - BA(i,j,ii,jj) = A(i-1,j-1,ii-1,jj-1)+A(i+1,j+1,ii+1,jj+1) - BD(i,j,ii,jj)= D(i-2,j-2,ii-2,jj-2)+D(i+2,j+2,ii+2,jj+2) - BF(i,j,ii,jj)= F(i-3,j-3,ii-3,jj-3)+F(i+3,j+3,ii+3,jj+3) - enddo - enddo - enddo - enddo -c print *,'BA' -c print *,BA - -*dvm$ parallel (i,j,ii,jj) on BA(i,j,ii,jj),reduction( min( nloopa), -*dvm$* min(nloopd),min(nloopf) ) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - if (BA(i,j,ii,jj).ne.(C(i-1,j-1,ii-1,jj-1)+c(i+1,j+1,ii+1,jj+1))) - * nloopa=min(nloopa,i) - if (BD(i,j,ii,jj).ne.(C(i-2,j-2,ii-2,jj-2)+c(i+2,j+2,ii+2,jj+2))) - * nloopd=min(nloopd,i) - if (BF(i,j,ii,jj).ne.(C(i-3,j-3,ii-3,jj-3)+c(i+3,j+3,ii+3,jj+3))) - * nloopf=min(nloopf,i) - enddo - enddo - enddo - enddo - - if ((nloopa .eq.NL).and.(nloopd.eq.NL).and.(nloopf.eq.NL)) then - call ansyes(tname) - else - call ansno(tname) - endif - - end - - -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*7 name - print *,name,' - complete' - end - subroutine ansno(name) - character*7 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc11.fdv deleted file mode 100644 index 450b018..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc11.fdv +++ /dev/null @@ -1,829 +0,0 @@ - program SC11 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE -c DISTRIBUTED ARRAY A(N) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC11========================' -C -------------------------------------------------- - call sc1101 -C -------------------------------------------------- - call sc1102 -C -------------------------------------------------- - call sc1103 -C ------------------------------------------------- - call sc1104 -C ------------------------------------------------- - call sc1105 -C ------------------------------------------------- - call sc1106 -C -------------------------------------------------- - call sc1107 -C -------------------------------------------------- - call sc1108 -C -------------------------------------------------- - call sc1109 -C ------------------------------------------------- - call sc1110 -C ------------------------------------------------- - call sc1111 -C ------------------------------------------------- - call sc1112 -C ------------------------------------------------- - call sc1113 -C -------------------------------------------------- - call sc1114 -C -------------------------------------------------- - call sc1115 -C ------------------------------------------------- - call sc1116 -C ------------------------------------------------- - call sc1117 -C ------------------------------------------------- - -C -C - print *,'=== END OF SC11 ========================= ' - end -C ---------------------------------------------SC1101 - subroutine SC1101 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SC1101' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+C(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC1102 - subroutine SC1102 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SC1102' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute (A(1:1)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-1 - B(i) = A(i-1)+A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i-1)+C(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC1103 - subroutine SC1103 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SC1103' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(0:1)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.(C(i+1))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC1104 - subroutine SC1104 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A - - tname='SC1104' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(1:0)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.C(i-1)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC1105 - subroutine SC1105 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:1) - - tname='SC1105' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(0:1)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-1 - B(i) = A(i+1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-1 - if (B(i).ne.C(i+1)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SC1106 - - subroutine SC1106 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(1:0) - - tname='SC1106' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(1:0)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N - B(i) = A(i-1) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N - if (B(i).ne.C(i-1)) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1107 - - subroutine SC1107 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SC1107' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i) ,shadow_compute(A(2:2)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=3,N-2 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N-2 - if (B(i).ne.(C(i-1)+C(i+1)+C(i-2)+C(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1108 - - subroutine SC1108 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SC1108' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(0:2)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(C(i+1)+C(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC1109 - - subroutine SC1109 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:2) - - tname='SC1109' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(2:0)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(C(i-1)+C(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1110 - - subroutine SC1110 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:2) - - tname='SC1110' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-2 - B(i) = A(i+1)+A(i+2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-2 - if (B(i).ne.(C(i+1)+C(i+2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1111 - - subroutine SC1111 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(2:0) - - tname='SC1111' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=3,N - B(i) = A(i-1)+A(i-2) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=3,N - if (B(i).ne.(C(i-1)+C(i-2))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1112 - - subroutine SC1112 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SC1112' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=4,N-3 - B(i) = A(i-1)+A(i+1)+A(i+2)+A(i-2)+A(i-3)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N-3 - if (B(i).ne.(C(i-1)+C(i+1)+C(i-2)+C(i+2)+C(i-3)+C(i+3))) then - nloop=min(nloop,i) - endif - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1113 - - subroutine SC1113 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SC1113' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(0:3)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(C(i+1)+C(i+2)+C(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1114 - - subroutine SC1114 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:3) - - tname='SC1114' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute(A(3:0)) - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(C(i-1)+C(i-2)+C(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1115 - - subroutine SC1115 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(3:0) - - tname='SC1115' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=4,N - B(i) = A(i-1)+A(i-2)+A(i-3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=4,N - if (B(i).ne.(C(i-1)+C(i-2)+C(i-3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC1116 - - subroutine SC1116 - integer, parameter :: N = 16,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(0:3) - - tname='SC1116' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=2,N-3 - B(i) = A(i+1)+A(i+2)+A(i+3) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=2,N-3 - if (B(i).ne.(C(i+1)+C(i+2)+C(i+3))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC1117 - - subroutine SC1117 - integer, parameter :: N = 500,NL=1000 - character*6 tname - integer, allocatable :: A(:),B(:),C(:) - integer nloop - -!dvm$ distribute B(BLOCK) -!dvm$ align (I) with B(I) ::A -!dvm$ shadow A(11:11) - - tname='SC1117' - allocate (B(N),A(N),C(N)) - NNL=NL - call serial1(C,N,NNL) - nloop=NL - -!dvm$ actual(nloop) -!dvm$ region local(A,B) -!dvm$ parallel (i) on A(i),shadow_compute - do i=1,N - A(i) = NL+i - enddo - -!dvm$ parallel (i) on B(i) - do i=12,N-11 - B(i) = A(i-9)+A(i+9)+A(i+10)+A(i-10)+A(i-11)+A(i+11) - enddo - -!dvm$ parallel (i) on B(i), reduction( min( nloop ) ) - do i=12,N-11 - if (B(i).ne.(C(i-9)+C(i+9)+C(i-10)+C(i+10)+ - *C(i-11)+C(i+11))) nloop=min(nloop,i) - enddo -!dvm$ end region -!dvm$ get_actual(nloop) - - if (nloop .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial1(AR,N,NL) - integer AR(N) - integer NL - do i=1,N - AR(i) = NL+i - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc21.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc21.fdv deleted file mode 100644 index cfc2512..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc21.fdv +++ /dev/null @@ -1,1220 +0,0 @@ - program SC21 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC21========================' -C -------------------------------------------------- - call sc2101 -C -------------------------------------------------- - call sc2102 -C -------------------------------------------------- - call sc2103 -C ------------------------------------------------- - call sc2104 -C ------------------------------------------------- - call sc2105 -C ------------------------------------------------- - call sc2106 -C ------------------------------------------------- - call sc2107 -C -------------------------------------------------- - call sc2108 -C---------------------------------------------------- - call sc2109 -C ------------------------------------------------- - call sc2110 -C ------------------------------------------------- - call sc2111 -C ------------------------------------------------- - call sc2112 -C ------------------------------------------------- - call sc2113 -C -------------------------------------------------- - call sc2114 -C -------------------------------------------------- - call sc2115 -C ------------------------------------------------- - call sc2116 -C ------------------------------------------------- - call sc2117 -C ------------------------------------------------- - call sc2118 -C ------------------------------------------------- - call sc2119 -C ------------------------------------------------- - call sc2120 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SC21 ========================= ' - end -C ---------------------------------------------SC2101 - subroutine sc2101 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - character*6 tname -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2101' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1)+ - *A(i-1,j-1)+ A(i+1,j+1)+A(i-1,j+1)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1)+ - *C(i-1,j-1)+ C(i+1,j+1)+C(i-1,j+1)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC2102 - subroutine sc2102 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2102' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC2103 - subroutine sc2103 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2103' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(1:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i-1,j)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC2104 - subroutine sc2104 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(1:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2104' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC2105 - subroutine sc2105 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:1,1:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2105' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,1:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i,j-1)+A(i+1,j)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1)+C(i+1,j)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SC2106 - - subroutine sc2106 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2106' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2107 - - subroutine sc2107 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(1:0,1:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2107' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,1:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2108 - - subroutine sc2108 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2108' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i+2,j+2)+ - * A(i-2,j+2)+A(i-2,j)+A(i,j-2)+A(i-2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i+2,j+2)+ - *C(i-2,j+2)+C(i-2,j)+C(i,j-2)+C(i-2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC2109 - - subroutine sc2109 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2109' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:2,2:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i,j+2)+A(i,j-2)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i,j+2)+C(i,j-2)+A(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2110 - - subroutine sc2110 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2110' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(2:2,2:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-2,j-2)+ A(i-1,j-1)+A(i-2,j)+A(i+2,j)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-2,j-2)+C(i-1,j-1)+C(i-2,j)+C(i+2,j)+C(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2111 - - subroutine sc2111 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,0:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2111' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(2:2,0:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i-2,j+2)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i-2,j+2)+C(i+2,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2112 - - subroutine sc2112 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2112' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(1:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-1,j+1)+ A(i,j+1)+A(i-1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-1,j+1)+ C(i,j+1)+C(i-1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2113 - - subroutine sc2113 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2113' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2114 - - subroutine sc2114 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2114' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,0:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+2)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+2)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2115 - - subroutine sc2115 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2115' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i+1,j+1)+A(i+2,j+2)+A(i+3,j+3)+A(i-3,j-3)+ - * A(i-2,j-2)+A(i-1,j-1)+A(i-3,j+3)+A(i+3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i+1,j+1)+C(i+2,j+2)+C(i+3,j+3)+C(i-3,j-3)+ - * C(i-2,j-2)+C(i-1,j-1)+C(i-3,j+3)+C(i+3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2116 - - subroutine sc2116 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2116' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2117 - - subroutine sc2117 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2117' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2118 - - subroutine sc2118 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:3,3:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2118' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i+3,j)+A(i-3,j)+A(i-3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i+3,j)+C(i-3,j)+C(i-3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2119 - - subroutine sc2119 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(3:0,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2119' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(3:0,3:3)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i,j+3)+A(i-3,j+3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i,j+3)+C(i-3,j+3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2120 - - subroutine sc2120 - integer, parameter :: N = 480,M=480,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2120' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=12,N-11 - do j=12,M-11 - B(i,j) = A(i+11,j+11)+A(i+10,j+10)+A(i+9,j+9)+ - *A(i-11,j-11)+A(i-10,j-10)+A(i-9,j-9)+A(i+11,j-11)+ - *A(i-11,j+11) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - isum = C(i+11,j+11)+C(i+10,j+10)+C(i+9,j+9)+ - *C(i-11,j-11)+C(i-10,j-10)+C(i-9,j-9)+C(i+11,j-11)+ - *C(i-11,j+11) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc22.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc22.fdv deleted file mode 100644 index 1441eef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc22.fdv +++ /dev/null @@ -1,1220 +0,0 @@ - program SC22 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE'. -c DISTRIBUTED ARRAY A(N,M) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC22========================' -C -------------------------------------------------- - call sc2201 -C -------------------------------------------------- - call sc2202 -C -------------------------------------------------- - call sc2203 -C ------------------------------------------------- - call sc2204 -C ------------------------------------------------- - call sc2205 -C ------------------------------------------------- - call sc2206 -C ------------------------------------------------- - call sc2207 -C -------------------------------------------------- - call sc2208 -C---------------------------------------------------- - call sc2209 -C ------------------------------------------------- - call sc2210 -C ------------------------------------------------- - call sc2211 -C ------------------------------------------------- - call sc2212 -C ------------------------------------------------- - call sc2213 -C -------------------------------------------------- - call sc2214 -C -------------------------------------------------- - call sc2215 -C ------------------------------------------------- - call sc2216 -C ------------------------------------------------- - call sc2217 -C ------------------------------------------------- - call sc2218 -C ------------------------------------------------- - call sc2219 -C ------------------------------------------------- - call sc2220 -C ------------------------------------------------- - -C ------------------------------------------------- - -C -C - print *,'=== END OF SC22 ========================= ' - end -C ---------------------------------------------SC2201 - subroutine SC2201 - integer, parameter :: N = 16,M=8,NL=1000 - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - character*6 tname -!dvm$ distribute B(BLOCK,*) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2201' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i-1,j)+A(i,j-1)+ - *A(i-1,j-1)+ A(i+1,j+1)+A(i-1,j+1)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i-1,j)+C(i,j-1)+ - *C(i-1,j-1)+ C(i+1,j+1)+C(i-1,j+1)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC2202 - subroutine SC2202 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2202' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC2203 - subroutine SC2203 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2203' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(1:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i-1,j)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i-1,j)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC2204 - subroutine SC2204 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(1:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2204' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i+1,j)+A(i,j+1)+A(i+1,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j)+C(i,j+1)+C(i+1,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC2205 - subroutine SC2205 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(0:1,1:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2205' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,1:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) = A(i,j-1)+A(i+1,j)+A(i+1,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1)+C(i+1,j)+C(i+1,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C --------------------------------------------SC2206 - - subroutine SC2206 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(0:1,0:1) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2206' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2207 - - subroutine SC2207 - integer, parameter :: N = 16,M=8,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(1:0,1:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2207' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,1:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=2,N-1 - do j=2,M-1 - B(i,j) =A(i,j-1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - isum = C(i,j-1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2208 - - subroutine SC2208 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2208' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j)+A(i,j+2)+A(i+2,j)+A(i+2,j+2)+ - * A(i-2,j+2)+A(i-2,j)+A(i,j-2)+A(i-2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j)+C(i,j+2)+C(i+2,j)+C(i+2,j+2)+ - *C(i-2,j+2)+C(i-2,j)+C(i,j-2)+C(i-2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC2209 - - subroutine SC2209 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2209' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:2,2:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i,j+2)+A(i,j-2)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i,j+2)+C(i,j-2)+A(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2210 - - subroutine sc2210 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:2,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2210' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(2:2,2:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-2,j-2)+ A(i-1,j-1)+A(i-2,j)+A(i+2,j)+A(i+2,j-2) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-2,j-2)+C(i-1,j-1)+C(i-2,j)+C(i+2,j)+C(i+2,j-2) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2211 - - subroutine SC2211 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,0:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2211' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(2:2,0:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+2,j+2)+ A(i+1,j+1)+A(i-2,j+2)+A(i+2,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+2,j+2)+ C(i+1,j+1)+C(i-2,j+2)+C(i+2,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2212 - - subroutine SC2212 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2212' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(1:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i-1,j+1)+ A(i,j+1)+A(i-1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i-1,j+1)+ C(i,j+1)+C(i-1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2213 - - subroutine SC2213 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(2:2,2:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2213' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2214 - - subroutine SC2214 - integer, parameter :: N = 16,M=17,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(2:0,2:2) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2214' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,0:2)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+2)+A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+2)+C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2215 - - subroutine SC2215 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(3:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2215' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i+1,j+1)+A(i+2,j+2)+A(i+3,j+3)+A(i-3,j-3)+ - * A(i-2,j-2)+A(i-1,j-1)+A(i-3,j+3)+A(i+3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i+1,j+1)+C(i+2,j+2)+C(i+3,j+3)+C(i-3,j-3)+ - * C(i-2,j-2)+C(i-1,j-1)+C(i-3,j+3)+C(i+3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC2216 - - subroutine SC2216 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(3:3,0:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2216' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:0,0:1)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i,j+1) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i,j+1) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2217 - - subroutine SC2217 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(0:3,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2217' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(0:1,0:0)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=3,N-2 - do j=3,M-2 - B(i,j) = A(i+1,j) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - isum = C(i+1,j) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2218 - - subroutine SC2218 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(3:3,3:0) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2218' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i+3,j)+A(i-3,j)+A(i-3,j-3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i+3,j)+C(i-3,j)+C(i-3,j-3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2219 - - subroutine SC2219 - integer, parameter :: N = 32,M=32,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(BLOCK,*) -!dvm$ shadow(3:0,3:3) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2219' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute(A(3:0,3:3)) - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=4,N-3 - do j=4,M-3 - B(i,j) = A(i-3,j-3)+A(i,j+3)+A(i-3,j+3) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - isum = C(i-3,j-3)+C(i,j+3)+C(i-3,j+3) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC2220 - - subroutine SC2220 - integer, parameter :: N = 480,M=480,NL=1000 - character*6 tname - integer, allocatable :: A(:,:),B(:,:),C(:,:) - integer nloopi,nloopj,isum - -!dvm$ distribute B(*,BLOCK) -!dvm$ shadow(11:11,11:11) :: A -!dvm$ align (I,J) with B(I,J) ::A - - tname='SC2220' - allocate (B(N,M),A(N,M),C(N,M)) - NNL=NL - call serial2(C,N,M,NNL) - nloopi=NL - nloopj=NL - -!dvm$ actual(nloopi,nloopj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j) on A(i,j),shadow_compute - do i=1,N - do j=1,M - A(i,j) = NL+i+j - enddo - enddo - -!dvm$ parallel (i,J) on B(i,j) - do i=12,N-11 - do j=12,M-11 - B(i,j) = A(i+11,j+11)+A(i+10,j+10)+A(i+9,j+9)+ - *A(i-11,j-11)+A(i-10,j-10)+A(i-9,j-9)+A(i+11,j-11)+ - *A(i-11,j+11) - enddo - enddo - -!dvm$ parallel (i,j) on B(i,j), reduction( min( nloopi),min(nloopj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - isum = C(i+11,j+11)+C(i+10,j+10)+C(i+9,j+9)+ - *C(i-11,j-11)+C(i-10,j-10)+C(i-9,j-9)+C(i+11,j-11)+ - *C(i-11,j+11) - if (B(i,j).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial2(AR,N,M,NL) - integer AR(N,M) - integer NL - do i=1,N - do j=1,M - AR(i,j) = NL+i+j - enddo - enddo - end - - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc31.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc31.fdv deleted file mode 100644 index 54e6a2a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc31.fdv +++ /dev/null @@ -1,684 +0,0 @@ - program SC31 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC31========================' -C -------------------------------------------------- - call sc3101 -C -------------------------------------------------- - call sc3102 -C -------------------------------------------------- - call sc3103 -C ------------------------------------------------- - call sc3104 -C ------------------------------------------------- - call sc3105 -C ------------------------------------------------- - call sc3106 -C -------------------------------------------------- - call sc3107 -C -------------------------------------------------- - call sc3108 -C---------------------------------------------------- - call sc3109 -C---------------------------------------------------- - -C -C - print *,'=== END OF SC31 ========================= ' - end -C ---------------------------------------------SC3101 - subroutine sc3101 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3101' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1)+A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1)+ - *A(i-1,j+1,ii)+A(i+1,j-1,ii)+A(i-1,j+1,ii-1)+A(i-1,j+1,ii+1)+ - *A(i+1,j-1,ii-1)+A(i+1,j-1,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - isum = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1)+C(i-1,j-1,ii-1)+C(i+1,j+1,ii+1)+ - *C(i-1,j+1,ii)+C(i+1,j-1,ii)+C(i-1,j+1,ii-1)+C(i-1,j+1,ii+1)+ - *C(i+1,j-1,ii-1)+C(i+1,j-1,ii+1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC3102 - subroutine SC3102 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3102' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(1:2,2:2,1:2)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i-1,j-2,ii+2)+A(i-1,j+2,ii-1)+A(i-1,j+2,ii+2)+ - *A(i+2,j+2,ii+2)+ A(i+2,j+2,ii-1)+A(i+2,j-2,ii+2)+A(i+2,j-2,ii-1)+ - *A(i-1,j-2,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i-1,j-2,ii+2)+C(i-1,j+2,ii-1)+C(i-1,j+2,ii+2)+ - *C(i+2,j+2,ii+2)+ C(i+2,j+2,ii-1)+C(i+2,j-2,ii+2)+C(i+2,j-2,ii-1)+ - *C(i-1,j-2,ii-1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC3103 - subroutine SC3103 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3103' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(0:2,2:2,0:2)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - *A(i+2,j-2,ii)+A(i,j+2,ii)+ A(i,j+2,ii+2)+A(i+2,j-2,ii+2)+ - * A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - *C(i+2,j-2,ii)+C(i,j+2,ii)+ C(i,j+2,ii+2)+C(i+2,j-2,ii+2)+ - *C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC3104 - subroutine SC3104 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3104' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(2:2,2:0,2:0)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j,ii)+A(i-2,j-2,ii-2)+ - *A(i+2,j-2,ii-2)+ A(i-2,j,ii-2)+A(i-2,j-2,ii)+ - *A(i-2,j,ii)+A(i+2,j-2,ii)+A(i+2,j,ii-2) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j,ii)+C(i-2,j-2,ii-2)+ - *C(i+2,j-2,ii-2)+ C(i-2,j,ii-2)+C(i-2,j-2,ii)+ - *C(i-2,j,ii)+C(i+2,j-2,ii)+C(i+2,j,ii-2) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC3105 - subroutine SC3105 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3105' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - * A(i+2,j-2,ii)+ A(i,j+2,ii)+A(i,j+2,ii+2)+ - * A(i+2,j-2,ii+2)+A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - * C(i+2,j-2,ii)+ C(i,j+2,ii)+C(i,j+2,ii+2)+ - * C(i+2,j-2,ii+2)+C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C --------------------------------------------SC3106 - subroutine SC3106 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3106' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i-3,j-3,ii+3)+A(i+3,j+3,ii-3)+ - * A(i+3,j-3,ii+3)+ A(i-3,j+3,ii+3)+A(i-3,j+3,ii-3)+ - * A(i+3,j-3,ii-3)+A(i+3,j+3,ii+3)+A(i-3,j-3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i-3,j-3,ii+3)+C(i+3,j+3,ii-3)+ - * C(i+3,j-3,ii+3)+ C(i-3,j+3,ii+3)+C(i-3,j+3,ii-3)+ - * C(i+3,j-3,ii-3)+ C(i+3,j+3,ii+3)+ C(i-3,j-3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC3107 - subroutine SC3107 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,0:3,3:0) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3107' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii)+A(i-3,j,ii-3)+ - * A(i+3,j,ii-3)+ A(i-3,j+3,ii-3)+ A(i-3,j,ii)+ - * A(i-3,j+3,ii)+ A(i+3,j,ii)+ A(i+3,j+3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii)+C(i-3,j,ii-3)+ - * C(i+3,j,ii-3)+ C(i-3,j+3,ii-3)+C(i-3,j,ii)+ - * C(i-3,j+3,ii)+ C(i+3,j,ii)+ C(i+3,j+3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C -------------------------------------------SC3108 - subroutine SC3108 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3108' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(0:3,0:3,0:3)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii+3)+A(i+3,j,ii)+ - * A(i,j+3,ii)+ A(i,j,ii+3)+ A(i,j+3,ii+3)+ - * A(i+3,j,ii+3)+ A(i+3,j+3,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii+3)+C(i+3,j,ii)+ - * C(i,j+3,ii)+ C(i,j,ii+3)+ C(i,j+3,ii+3)+ - * C(i+3,j,ii+3)+ C(i+3,j+3,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC3109 - subroutine SC3109 - integer, parameter :: N = 120,M=120,K=120,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3109' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - B(i,j,ii) = A(i+11,j+11,ii+11)+A(i-11,j-11,ii-11)+ - * A(i+11,j-11,ii-11)+ A(i-11,j+11,ii-11)+ A(i-11,j-11,ii+11)+ - * A(i-11,j+11,ii+11)+ A(i+11,j-11,ii+11)+A(i+11,j+11,ii-11) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - isum = C(i+11,j+11,ii+11)+C(i-11,j-11,ii-11)+ - * C(i+11,j-11,ii-11)+ C(i-11,j+11,ii-11)+ C(i-11,j-11,ii+11)+ - * C(i-11,j+11,ii+11)+ C(i+11,j-11,ii+11)+C(i+11,j+11,ii-11) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc32.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc32.fdv deleted file mode 100644 index 090814f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc32.fdv +++ /dev/null @@ -1,684 +0,0 @@ - program SC32 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE -c DISTRIBUTED ARRAY A(N,M,K) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC32========================' -C -------------------------------------------------- - call sc3201 -C -------------------------------------------------- - call sc3202 -C -------------------------------------------------- - call sc3203 -C ------------------------------------------------- - call sc3204 -C ------------------------------------------------- - call sc3205 -C ------------------------------------------------- - call sc3206 -C -------------------------------------------------- - call sc3207 -C -------------------------------------------------- - call sc3208 -C---------------------------------------------------- - call sc3209 -C---------------------------------------------------- - -C -C - print *,'=== END OF SC32 ========================= ' - end -C ---------------------------------------------SC3201 - subroutine sc3201 - integer, parameter :: N = 16,M=8,K=8,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3201' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - B(i,j,ii) = A(i+1,j,ii)+A(i,j+1,ii)+A(i,j,ii+1)+A(i-1,j,ii)+ - *A(i,j-1,ii)+ A(i,j,ii-1)+A(i-1,j-1,ii-1)+A(i+1,j+1,ii+1)+ - *A(i-1,j+1,ii)+A(i+1,j-1,ii)+A(i-1,j+1,ii-1)+A(i-1,j+1,ii+1)+ - *A(i+1,j-1,ii-1)+A(i+1,j-1,ii+1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - isum = C(i+1,j,ii)+C(i,j+1,ii)+C(i,j,ii+1)+C(i-1,j,ii)+ - *C(i,j-1,ii)+ C(i,j,ii-1)+C(i-1,j-1,ii-1)+C(i+1,j+1,ii+1)+ - *C(i-1,j+1,ii)+C(i+1,j-1,ii)+C(i-1,j+1,ii-1)+C(i-1,j+1,ii+1)+ - *C(i+1,j-1,ii-1)+C(i+1,j-1,ii+1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC3202 - subroutine SC3202 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3202' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(1:2,2:2,1:2)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i-1,j-2,ii+2)+A(i-1,j+2,ii-1)+A(i-1,j+2,ii+2)+ - *A(i+2,j+2,ii+2)+ A(i+2,j+2,ii-1)+A(i+2,j-2,ii+2)+A(i+2,j-2,ii-1)+ - *A(i-1,j-2,ii-1) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i-1,j-2,ii+2)+C(i-1,j+2,ii-1)+C(i-1,j+2,ii+2)+ - *C(i+2,j+2,ii+2)+ C(i+2,j+2,ii-1)+C(i+2,j-2,ii+2)+C(i+2,j-2,ii-1)+ - *C(i-1,j-2,ii-1) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC3203 - subroutine SC3203 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3203' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(0:2,2:2,0:2)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - *A(i+2,j-2,ii)+A(i,j+2,ii)+ A(i,j+2,ii+2)+A(i+2,j-2,ii+2)+ - * A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - *C(i+2,j-2,ii)+C(i,j+2,ii)+ C(i,j+2,ii+2)+C(i+2,j-2,ii+2)+ - *C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC3204 - subroutine SC3204 - integer, parameter :: N = 16,M=10,K=10,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ shadow(2:2,2:2,2:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3204' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(2:2,2:0,2:0)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j,ii)+A(i-2,j-2,ii-2)+ - *A(i+2,j-2,ii-2)+ A(i-2,j,ii-2)+A(i-2,j-2,ii)+ - *A(i-2,j,ii)+A(i+2,j-2,ii)+A(i+2,j,ii-2) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j,ii)+C(i-2,j-2,ii-2)+ - *C(i+2,j-2,ii-2)+ C(i-2,j,ii-2)+C(i-2,j-2,ii)+ - *C(i-2,j,ii)+C(i+2,j-2,ii)+C(i+2,j,ii-2) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ------------------------------------------SC3205 - subroutine SC3205 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(0:2,2:2,0:2) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3205' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - B(i,j,ii) = A(i+2,j+2,ii+2)+A(i,j-2,ii)+ - * A(i+2,j-2,ii)+ A(i,j+2,ii)+A(i,j+2,ii+2)+ - * A(i+2,j-2,ii+2)+A(i+2,j+2,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - isum = C(i+2,j+2,ii+2)+C(i,j-2,ii)+ - * C(i+2,j-2,ii)+ C(i,j+2,ii)+C(i,j+2,ii+2)+ - * C(i+2,j-2,ii+2)+C(i+2,j+2,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C --------------------------------------------SC3206 - subroutine SC3206 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3206' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i-3,j-3,ii+3)+A(i+3,j+3,ii-3)+ - * A(i+3,j-3,ii+3)+ A(i-3,j+3,ii+3)+A(i-3,j+3,ii-3)+ - * A(i+3,j-3,ii-3)+A(i+3,j+3,ii+3)+A(i-3,j-3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i-3,j-3,ii+3)+C(i+3,j+3,ii-3)+ - * C(i+3,j-3,ii+3)+ C(i-3,j+3,ii+3)+C(i-3,j+3,ii-3)+ - * C(i+3,j-3,ii-3)+ C(i+3,j+3,ii+3)+ C(i-3,j-3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC3207 - subroutine SC3207 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*) -!dvm$ shadow(3:3,0:3,3:0) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3207' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii)+A(i-3,j,ii-3)+ - * A(i+3,j,ii-3)+ A(i-3,j+3,ii-3)+ A(i-3,j,ii)+ - * A(i-3,j+3,ii)+ A(i+3,j,ii)+ A(i+3,j+3,ii-3) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii)+C(i-3,j,ii-3)+ - * C(i+3,j,ii-3)+ C(i-3,j+3,ii-3)+C(i-3,j,ii)+ - * C(i-3,j+3,ii)+ C(i+3,j,ii)+ C(i+3,j+3,ii-3) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - - -C -------------------------------------------SC3208 - subroutine SC3208 - integer, parameter :: N = 16,M=16,K=16,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK) -!dvm$ shadow(0:3,0:3,0:3) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3208' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute(A(0:3,0:3,0:3)) - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - B(i,j,ii) = A(i+3,j+3,ii+3)+A(i+3,j,ii)+ - * A(i,j+3,ii)+ A(i,j,ii+3)+ A(i,j+3,ii+3)+ - * A(i+3,j,ii+3)+ A(i+3,j+3,ii) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - isum = C(i+3,j+3,ii+3)+C(i+3,j,ii)+ - * C(i,j+3,ii)+ C(i,j,ii+3)+ C(i,j+3,ii+3)+ - * C(i+3,j,ii+3)+ C(i+3,j+3,ii) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C -------------------------------------------SC3209 - subroutine SC3209 - integer, parameter :: N = 120,M=120,K=120,NL=1000 - integer, allocatable :: A(:,:,:),B(:,:,:),C(:,:,:) - integer nloopi,nloopj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11) :: A -!dvm$ align (I,J,II) with B(I,J,II) ::A - - tname='SC3209' - allocate (B(N,M,K),A(N,M,K),C(N,M,K)) - NNL=NL - call serial3(C,N,M,K,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - -!dvm$ actual(nloopi,nloopj,nloopii) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii) on A(i,j,ii),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - A(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - B(i,j,ii) = A(i+11,j+11,ii+11)+A(i-11,j-11,ii-11)+ - * A(i+11,j-11,ii-11)+ A(i-11,j+11,ii-11)+ A(i-11,j-11,ii+11)+ - * A(i-11,j+11,ii+11)+ A(i+11,j-11,ii+11)+A(i+11,j+11,ii-11) - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii) on B(i,j,ii), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - isum = C(i+11,j+11,ii+11)+C(i-11,j-11,ii-11)+ - * C(i+11,j-11,ii-11)+ C(i-11,j+11,ii-11)+ C(i-11,j-11,ii+11)+ - * C(i-11,j+11,ii+11)+ C(i+11,j-11,ii+11)+C(i+11,j+11,ii-11) - if (B(i,j,ii).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - endif - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end - -C ----------------------------------------------- - subroutine serial3(AR,N,M,K,NL) - integer AR(N,M,K) - integer NL - do i=1,N - do j=1,M - do ii=1,K - AR(i,j,ii) = NL+i+j+ii - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc41.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc41.fdv deleted file mode 100644 index 49e9dba..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc41.fdv +++ /dev/null @@ -1,801 +0,0 @@ - program SC41 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC41========================' -C -------------------------------------------------- - call sc4101 -C -------------------------------------------------- - call sc4102 -C -------------------------------------------------- - call sc4103 -C ------------------------------------------------- - call sc4104 -C ------------------------------------------------- - call sc4105 -C ------------------------------------------------- - call sc4106 -C -------------------------------------------------- - call sc4107 -C -------------------------------------------------- - call sc4108 -C---------------------------------------------------- - call sc4109 -C---------------------------------------------------- - -C -C - print *,'=== END OF SC41 ========================= ' - end -C ---------------------------------------------SC4101 - subroutine SC4101 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4101' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - B(i,j,ii,jj) = A(i+1,j+1,ii+1,jj+1)+A(i-1,j-1,ii-1,jj-1)+ - * A(i+1,j-1,ii-1,jj-1)+A(i-1,j+1,ii-1,jj-1)+ - * A(i-1,j-1,ii+1,jj-1)+ A(i-1,j-1,ii-1,jj+1)+ - * A(i+1,j+1,ii-1,jj-1)+A(i-1,j+1,ii+1,jj-1)+ - * A(i-1,j-1,ii+1,jj+1)+A(i+1,j-1,ii-1,jj+1)+ - * A(i+1,j-1,ii+1,jj-1)+A(i-1,j+1,ii-1,jj+1)+ - * A(i+1,j+1,ii+1,jj-1)+A(i-1,j+1,ii+1,jj+1)+ - * A(i+1,j-1,ii+1,jj+1)+A(i+1,j+1,ii-1,jj+1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - isum = C(i+1,j+1,ii+1,jj+1)+C(i-1,j-1,ii-1,jj-1)+ - * C(i+1,j-1,ii-1,jj-1)+ C(i-1,j+1,ii-1,jj-1)+ - * C(i-1,j-1,ii+1,jj-1)+ C(i-1,j-1,ii-1,jj+1)+ - * C(i+1,j+1,ii-1,jj-1)+ C(i-1,j+1,ii+1,jj-1)+ - * C(i-1,j-1,ii+1,jj+1)+ C(i+1,j-1,ii-1,jj+1)+ - * C(i+1,j-1,ii+1,jj-1)+ C(i-1,j+1,ii-1,jj+1)+ - * C(i+1,j+1,ii+1,jj-1)+ C(i-1,j+1,ii+1,jj+1)+ - * C(i+1,j-1,ii+1,jj+1)+ C(i+1,j+1,ii-1,jj+1) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC4102 - - subroutine SC4102 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4102' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj+2)+A(i-2,j-2,ii-2,jj-2)+ - * A(i+2,j-2,ii-2,jj-2)+ A(i-2,j+2,ii-2,jj-2)+ - * A(i-2,j-2,ii+2,jj-2)+ A(i-2,j-2,ii-2,jj+2)+ - * A(i+2,j+2,ii-2,jj-2)+ A(i-2,j+2,ii+2,jj-2)+ - * A(i-2,j-2,ii+2,jj+2)+ A(i+2,j-2,ii-2,jj+2)+ - * A(i+2,j-2,ii+2,jj-2)+ A(i-2,j+2,ii-2,jj+2)+ - * A(i+2,j+2,ii+2,jj-2)+ A(i-2,j+2,ii+2,jj+2)+ - * A(i+2,j-2,ii+2,jj+2)+ A(i+2,j+2,ii-2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj+2)+C(i-2,j-2,ii-2,jj-2)+ - * C(i+2,j-2,ii-2,jj-2)+ C(i-2,j+2,ii-2,jj-2)+ - * C(i-2,j-2,ii+2,jj-2)+ C(i-2,j-2,ii-2,jj+2)+ - * C(i+2,j+2,ii-2,jj-2)+ C(i-2,j+2,ii+2,jj-2)+ - * C(i-2,j-2,ii+2,jj+2)+ C(i+2,j-2,ii-2,jj+2)+ - * C(i+2,j-2,ii+2,jj-2)+ C(i-2,j+2,ii-2,jj+2)+ - * C(i+2,j+2,ii+2,jj-2)+ C(i-2,j+2,ii+2,jj+2)+ - * C(i+2,j-2,ii+2,jj+2)+ C(i+2,j+2,ii-2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC4103 - subroutine SC4103 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4103' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(2:0,2:2,2:0,2:0)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i-2,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj)+ A(i-2,j-2,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j-2,ii-2,jj)+ - * A(i-2,j-2,ii,jj)+ A(i,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj-2)+ A(i-2,j-2,ii-2,jj)+ - * A(i,j-2,ii-2,jj-2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i-2,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj)+ C(i-2,j-2,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j-2,ii-2,jj)+ - * C(i-2,j-2,ii,jj)+ C(i,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj-2)+ C(i-2,j-2,ii-2,jj)+ - * C(i,j-2,ii-2,jj-2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SC4104 - subroutine SC4104 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2,0:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4104' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj)+ - * A(i,j-2,ii,jj)+ A(i+2,j-2,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j-2,ii+2,jj)+ - * A(i+2,j+2,ii,jj)+ A(i,j-2,ii+2,jj+2)+ - * A(i,j+2,ii,jj+2)+ A(i+2,j+2,ii+2,jj)+ - * A(i,j+2,ii+2,jj+2)+A(i+2,j-2,ii+2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj)+ - * C(i,j-2,ii,jj)+ C(i+2,j-2,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j-2,ii+2,jj)+ - * C(i+2,j+2,ii,jj)+ C(i,j-2,ii+2,jj+2)+ - * C(i,j+2,ii,jj+2)+ C(i+2,j+2,ii+2,jj)+ - * C(i,j+2,ii+2,jj+2)+C(i+2,j-2,ii+2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SC4105 - subroutine SC4105 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4105' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(0:0,0:0,0:0,0:2)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i,j,ii,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i,j,ii,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC4106 - subroutine SC4106 - integer, parameter :: N = 32,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4106' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i-3,j-3,ii-3,jj-3)+ - * A(i+3,j-3,ii-3,jj-3)+ A(i-3,j+3,ii-3,jj-3)+ - * A(i-3,j-3,ii+3,jj-3)+ A(i-3,j-3,ii-3,jj+3)+ - * A(i+3,j+3,ii-3,jj-3)+ A(i-3,j+3,ii+3,jj-3)+ - * A(i-3,j-3,ii+3,jj+3)+ A(i+3,j-3,ii-3,jj+3)+ - * A(i+3,j-3,ii+3,jj-3)+ A(i-3,j+3,ii-3,jj+3)+ - * A(i+3,j+3,ii+3,jj-3)+ A(i-3,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3)+ A(i+3,j+3,ii-3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i-3,j-3,ii-3,jj-3)+ - * C(i+3,j-3,ii-3,jj-3)+ C(i-3,j+3,ii-3,jj-3)+ - * C(i-3,j-3,ii+3,jj-3)+ C(i-3,j-3,ii-3,jj+3)+ - * C(i+3,j+3,ii-3,jj-3)+ C(i-3,j+3,ii+3,jj-3)+ - * C(i-3,j-3,ii+3,jj+3)+ C(i+3,j-3,ii-3,jj+3)+ - * C(i+3,j-3,ii+3,jj-3)+ C(i-3,j+3,ii-3,jj+3)+ - * C(i+3,j+3,ii+3,jj-3)+ C(i-3,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3)+ C(i+3,j+3,ii-3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4107 - subroutine SC4107 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4107' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i,j-3,ii,jj)+ - * A(i+3,j-3,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj)+ A(i+3,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj+3)+ A(i,j+3,ii,jj+3)+ - * A(i+3,j+3,ii+3,jj)+ A(i,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i,j-3,ii,jj)+ - * C(i+3,j-3,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj)+ C(i+3,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj+3)+ C(i,j+3,ii,jj+3)+ - * C(i+3,j+3,ii+3,jj)+ C(i,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4108 - subroutine SC4108 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4108' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(0:0,0:0,0:0,3:0)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i,j,ii,jj-3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum =C(i,j,ii,jj-3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4109 - subroutine SC4109 - integer, parameter :: N = 60,M=60,K=60,L=60,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4109' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - B(i,j,ii,jj) = A(i+11,j+11,ii+11,jj+11)+ - * A(i-11,j-11,ii-11,jj-11)+ - * A(i+11,j-11,ii-11,jj-11)+ A(i-11,j+11,ii-11,jj-11)+ - * A(i-11,j-11,ii+11,jj-11)+ A(i-11,j-11,ii-11,jj+11)+ - * A(i+11,j+11,ii-11,jj-11)+ A(i-11,j+11,ii+11,jj-11)+ - * A(i-11,j-11,ii+11,jj+11)+ A(i+11,j-11,ii-11,jj+11)+ - * A(i+11,j-11,ii+11,jj-11)+ A(i-11,j+11,ii-11,jj+11)+ - * A(i+11,j+11,ii+11,jj-11)+ A(i-11,j+11,ii+11,jj+11)+ - * A(i+11,j-11,ii+11,jj+11)+ A(i+11,j+11,ii-11,jj+11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - isum = C(i+11,j+11,ii+11,jj+11)+ - * C(i-11,j-11,ii-11,jj-11)+ - * C(i+11,j-11,ii-11,jj-11)+ C(i-11,j+11,ii-11,jj-11)+ - * C(i-11,j-11,ii+11,jj-11)+ C(i-11,j-11,ii-11,jj+11)+ - * C(i+11,j+11,ii-11,jj-11)+ C(i-11,j+11,ii+11,jj-11)+ - * C(i-11,j-11,ii+11,jj+11)+ C(i+11,j-11,ii-11,jj+11)+ - * C(i+11,j-11,ii+11,jj-11)+ C(i-11,j+11,ii-11,jj+11)+ - * C(i+11,j+11,ii+11,jj-11)+ C(i-11,j+11,ii+11,jj+11)+ - * C(i+11,j-11,ii+11,jj+11)+ C(i+11,j+11,ii-11,jj+11) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc42.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc42.fdv deleted file mode 100644 index f57e6d1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/SHADOW_COMP/sc42.fdv +++ /dev/null @@ -1,801 +0,0 @@ - program SC42 - -c TESTING OF THE SHADOW DIRECTIVE AND THE SHADOW_COMPUTE CLAUSE -c DISTRIBUTED ARRAY A(N,M,K,L) IS TO HAVE DIFFERENT SHADOW WIDTH -c ON BOTH SIDES - - print *,'===START OF SC42========================' -C -------------------------------------------------- - call sc4201 -C -------------------------------------------------- - call sc4202 -C -------------------------------------------------- - call sc4203 -C ------------------------------------------------- - call sc4204 -C ------------------------------------------------- - call sc4205 -C ------------------------------------------------- - call sc4206 -C -------------------------------------------------- - call sc4207 -C -------------------------------------------------- - call sc4208 -C---------------------------------------------------- - call sc4209 -C---------------------------------------------------- - -C -C - print *,'=== END OF SC42 ========================= ' - end -C ---------------------------------------------SC4201 - subroutine SC4201 - integer, parameter :: N = 16,M=8,K=8,L=8,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,*) -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4201' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - B(i,j,ii,jj) = A(i+1,j+1,ii+1,jj+1)+A(i-1,j-1,ii-1,jj-1)+ - * A(i+1,j-1,ii-1,jj-1)+A(i-1,j+1,ii-1,jj-1)+ - * A(i-1,j-1,ii+1,jj-1)+ A(i-1,j-1,ii-1,jj+1)+ - * A(i+1,j+1,ii-1,jj-1)+A(i-1,j+1,ii+1,jj-1)+ - * A(i-1,j-1,ii+1,jj+1)+A(i+1,j-1,ii-1,jj+1)+ - * A(i+1,j-1,ii+1,jj-1)+A(i-1,j+1,ii-1,jj+1)+ - * A(i+1,j+1,ii+1,jj-1)+A(i-1,j+1,ii+1,jj+1)+ - * A(i+1,j-1,ii+1,jj+1)+A(i+1,j+1,ii-1,jj+1) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=2,N-1 - do j=2,M-1 - do ii=2,K-1 - do jj=2,L-1 - isum = C(i+1,j+1,ii+1,jj+1)+C(i-1,j-1,ii-1,jj-1)+ - * C(i+1,j-1,ii-1,jj-1)+ C(i-1,j+1,ii-1,jj-1)+ - * C(i-1,j-1,ii+1,jj-1)+ C(i-1,j-1,ii-1,jj+1)+ - * C(i+1,j+1,ii-1,jj-1)+ C(i-1,j+1,ii+1,jj-1)+ - * C(i-1,j-1,ii+1,jj+1)+ C(i+1,j-1,ii-1,jj+1)+ - * C(i+1,j-1,ii+1,jj-1)+ C(i-1,j+1,ii-1,jj+1)+ - * C(i+1,j+1,ii+1,jj-1)+ C(i-1,j+1,ii+1,jj+1)+ - * C(i+1,j-1,ii+1,jj+1)+ C(i+1,j+1,ii-1,jj+1) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ---------------------------------------------SC4202 - - subroutine SC4202 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4202' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj+2)+A(i-2,j-2,ii-2,jj-2)+ - * A(i+2,j-2,ii-2,jj-2)+ A(i-2,j+2,ii-2,jj-2)+ - * A(i-2,j-2,ii+2,jj-2)+ A(i-2,j-2,ii-2,jj+2)+ - * A(i+2,j+2,ii-2,jj-2)+ A(i-2,j+2,ii+2,jj-2)+ - * A(i-2,j-2,ii+2,jj+2)+ A(i+2,j-2,ii-2,jj+2)+ - * A(i+2,j-2,ii+2,jj-2)+ A(i-2,j+2,ii-2,jj+2)+ - * A(i+2,j+2,ii+2,jj-2)+ A(i-2,j+2,ii+2,jj+2)+ - * A(i+2,j-2,ii+2,jj+2)+ A(i+2,j+2,ii-2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj+2)+C(i-2,j-2,ii-2,jj-2)+ - * C(i+2,j-2,ii-2,jj-2)+ C(i-2,j+2,ii-2,jj-2)+ - * C(i-2,j-2,ii+2,jj-2)+ C(i-2,j-2,ii-2,jj+2)+ - * C(i+2,j+2,ii-2,jj-2)+ C(i-2,j+2,ii+2,jj-2)+ - * C(i-2,j-2,ii+2,jj+2)+ C(i+2,j-2,ii-2,jj+2)+ - * C(i+2,j-2,ii+2,jj-2)+ C(i-2,j+2,ii-2,jj+2)+ - * C(i+2,j+2,ii+2,jj-2)+ C(i-2,j+2,ii+2,jj+2)+ - * C(i+2,j-2,ii+2,jj+2)+ C(i+2,j+2,ii-2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -----------------------------------------SC4203 - subroutine SC4203 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK,BLOCK) -!dvm$ shadow(2:2,2:2,2:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4203' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(2:0,2:2,2:0,2:0)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i-2,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj)+ A(i-2,j-2,ii,jj)+ - * A(i,j-2,ii,jj)+ A(i,j-2,ii-2,jj)+ - * A(i-2,j-2,ii,jj)+ A(i,j-2,ii-2,jj-2)+ - * A(i,j-2,ii,jj-2)+ A(i-2,j-2,ii-2,jj)+ - * A(i,j-2,ii-2,jj-2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i-2,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj)+ C(i-2,j-2,ii,jj)+ - * C(i,j-2,ii,jj)+ C(i,j-2,ii-2,jj)+ - * C(i-2,j-2,ii,jj)+ C(i,j-2,ii-2,jj-2)+ - * C(i,j-2,ii,jj-2)+ C(i-2,j-2,ii-2,jj)+ - * C(i,j-2,ii-2,jj-2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SC4204 - subroutine SC4204 - integer, parameter :: N = 16,M=10,K=10,L=10,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:2,2:2,0:2,0:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4204' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i+2,j+2,ii+2,jj)+ - * A(i,j-2,ii,jj)+ A(i+2,j-2,ii,jj)+ - * A(i,j+2,ii,jj)+ A(i,j-2,ii+2,jj)+ - * A(i+2,j+2,ii,jj)+ A(i,j-2,ii+2,jj+2)+ - * A(i,j+2,ii,jj+2)+ A(i+2,j+2,ii+2,jj)+ - * A(i,j+2,ii+2,jj+2)+A(i+2,j-2,ii+2,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i+2,j+2,ii+2,jj)+ - * C(i,j-2,ii,jj)+ C(i+2,j-2,ii,jj)+ - * C(i,j+2,ii,jj)+ C(i,j-2,ii+2,jj)+ - * C(i+2,j+2,ii,jj)+ C(i,j-2,ii+2,jj+2)+ - * C(i,j+2,ii,jj+2)+ C(i+2,j+2,ii+2,jj)+ - * C(i,j+2,ii+2,jj+2)+C(i+2,j-2,ii+2,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ------------------------------------------SC4205 - subroutine SC4205 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,*) -!dvm$ shadow(2:2,2:0,0:2,2:2) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4205' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(0:0,0:0,0:0,0:2)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - B(i,j,ii,jj) = A(i,j,ii,jj+2) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=3,N-2 - do j=3,M-2 - do ii=3,K-2 - do jj=3,L-2 - isum = C(i,j,ii,jj+2) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C --------------------------------------------SC4206 - subroutine SC4206 - integer, parameter :: N = 32,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,*,BLOCK) -!dvm$ shadow(3:3,3:3,3:3,3:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4206' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i-3,j-3,ii-3,jj-3)+ - * A(i+3,j-3,ii-3,jj-3)+ A(i-3,j+3,ii-3,jj-3)+ - * A(i-3,j-3,ii+3,jj-3)+ A(i-3,j-3,ii-3,jj+3)+ - * A(i+3,j+3,ii-3,jj-3)+ A(i-3,j+3,ii+3,jj-3)+ - * A(i-3,j-3,ii+3,jj+3)+ A(i+3,j-3,ii-3,jj+3)+ - * A(i+3,j-3,ii+3,jj-3)+ A(i-3,j+3,ii-3,jj+3)+ - * A(i+3,j+3,ii+3,jj-3)+ A(i-3,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3)+ A(i+3,j+3,ii-3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i-3,j-3,ii-3,jj-3)+ - * C(i+3,j-3,ii-3,jj-3)+ C(i-3,j+3,ii-3,jj-3)+ - * C(i-3,j-3,ii+3,jj-3)+ C(i-3,j-3,ii-3,jj+3)+ - * C(i+3,j+3,ii-3,jj-3)+ C(i-3,j+3,ii+3,jj-3)+ - * C(i-3,j-3,ii+3,jj+3)+ C(i+3,j-3,ii-3,jj+3)+ - * C(i+3,j-3,ii+3,jj-3)+ C(i-3,j+3,ii-3,jj+3)+ - * C(i+3,j+3,ii+3,jj-3)+ C(i-3,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3)+ C(i+3,j+3,ii-3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4207 - subroutine SC4207 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,*,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,0:3) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4207' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i+3,j+3,ii+3,jj+3)+A(i,j-3,ii,jj)+ - * A(i+3,j-3,ii,jj)+ A(i,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj)+ A(i+3,j+3,ii,jj)+ - * A(i,j-3,ii+3,jj+3)+ A(i,j+3,ii,jj+3)+ - * A(i+3,j+3,ii+3,jj)+ A(i,j+3,ii+3,jj+3)+ - * A(i+3,j-3,ii+3,jj+3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum = C(i+3,j+3,ii+3,jj+3)+C(i,j-3,ii,jj)+ - * C(i+3,j-3,ii,jj)+ C(i,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj)+ C(i+3,j+3,ii,jj)+ - * C(i,j-3,ii+3,jj+3)+ C(i,j+3,ii,jj+3)+ - * C(i+3,j+3,ii+3,jj)+ C(i,j+3,ii+3,jj+3)+ - * C(i+3,j-3,ii+3,jj+3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4208 - subroutine SC4208 - integer, parameter :: N = 16,M=16,K=16,L=16,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(*,BLOCK,BLOCK,BLOCK) -!dvm$ shadow(0:3,3:3,0:3,3:0) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4208' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj) -!dvm$*,shadow_compute(A(0:0,0:0,0:0,3:0)) - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - B(i,j,ii,jj) = A(i,j,ii,jj-3) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=4,N-3 - do j=4,M-3 - do ii=4,K-3 - do jj=4,L-3 - isum =C(i,j,ii,jj-3) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C -------------------------------------------SC4209 - subroutine SC4209 - integer, parameter :: N = 60,M=60,K=60,L=60,NL=1000 - integer, allocatable :: A(:,:,:,:),B(:,:,:,:),C(:,:,:,:) - integer nloopi,nloopj,nloopii,nloopjj,isum - character*6 tname - -!dvm$ distribute B(BLOCK,BLOCK,BLOCK,*) -!dvm$ shadow(11:11,11:11,11:11,11:11) :: A -!dvm$ align (i,j,ii,jj) with B(i,j,ii,jj) ::A - - tname='SC4209' - allocate (B(N,M,K,L),A(N,M,K,L),C(N,M,K,L)) - NNL=NL - call serial4(C,N,M,K,L,NNL) - nloopi=NL - nloopj=NL - nloopii=NL - nloopjj=NL - -!dvm$ actual(nloopi,nloopj,nloopii,nloopjj) -!dvm$ region local(A,B) -!dvm$ parallel (i,j,ii,jj) on A(i,j,ii,jj),shadow_compute - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - A(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - B(i,j,ii,jj) = A(i+11,j+11,ii+11,jj+11)+ - * A(i-11,j-11,ii-11,jj-11)+ - * A(i+11,j-11,ii-11,jj-11)+ A(i-11,j+11,ii-11,jj-11)+ - * A(i-11,j-11,ii+11,jj-11)+ A(i-11,j-11,ii-11,jj+11)+ - * A(i+11,j+11,ii-11,jj-11)+ A(i-11,j+11,ii+11,jj-11)+ - * A(i-11,j-11,ii+11,jj+11)+ A(i+11,j-11,ii-11,jj+11)+ - * A(i+11,j-11,ii+11,jj-11)+ A(i-11,j+11,ii-11,jj+11)+ - * A(i+11,j+11,ii+11,jj-11)+ A(i-11,j+11,ii+11,jj+11)+ - * A(i+11,j-11,ii+11,jj+11)+ A(i+11,j+11,ii-11,jj+11) - enddo - enddo - enddo - enddo - -!dvm$ parallel (i,j,ii,jj) on B(i,j,ii,jj), -!dvm$*reduction( min( nloopi),min(nloopj),min(nloopii),min(nloopjj)) -!dvm$*,private(isum) - do i=12,N-11 - do j=12,M-11 - do ii=12,K-11 - do jj=12,L-11 - isum = C(i+11,j+11,ii+11,jj+11)+ - * C(i-11,j-11,ii-11,jj-11)+ - * C(i+11,j-11,ii-11,jj-11)+ C(i-11,j+11,ii-11,jj-11)+ - * C(i-11,j-11,ii+11,jj-11)+ C(i-11,j-11,ii-11,jj+11)+ - * C(i+11,j+11,ii-11,jj-11)+ C(i-11,j+11,ii+11,jj-11)+ - * C(i-11,j-11,ii+11,jj+11)+ C(i+11,j-11,ii-11,jj+11)+ - * C(i+11,j-11,ii+11,jj-11)+ C(i-11,j+11,ii-11,jj+11)+ - * C(i+11,j+11,ii+11,jj-11)+ C(i-11,j+11,ii+11,jj+11)+ - * C(i+11,j-11,ii+11,jj+11)+ C(i+11,j+11,ii-11,jj+11) - if (B(i,j,ii,jj).ne.isum) then - nloopi=min(nloopi,i) - nloopj=min(nloopj,j) - nloopii=min(nloopii,ii) - nloopjj=min(nloopjj,jj) - endif - enddo - enddo - enddo - enddo -!dvm$ end region -!dvm$ get_actual(nloopi,nloopj,nloopii,nloopjj) - - if (nloopi .eq.NL) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (A,B,C) - - end -C ----------------------------------------------- - subroutine serial4(AR,N,M,K,L,NL) - integer AR(N,M,K,L) - integer NL - do i=1,N - do j=1,M - do ii=1,K - do jj=1,L - AR(i,j,ii,jj) = NL+i+j+ii+jj - enddo - enddo - enddo - enddo - end - - subroutine ansyes(name) - character*6 name - print *,name,' - complete' - end - subroutine ansno(name) - character*6 name - print *,name,' - ***error' - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst11.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst11.fdv deleted file mode 100644 index b082d22..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst11.fdv +++ /dev/null @@ -1,236 +0,0 @@ - PROGRAM taskst11 -! rectangular grid is distributed on two blocks -! -! - PARAMETER (K=8, N1 = 4, ITMAX=20, N2 = K-N1, ER = 10000) - REAL,ALLOCATABLE :: A(:,:),A1(:,:),A2(:,:) - REAL,ALLOCATABLE :: B(:,:),B1(:,:),B2(:,:),B_1(:,:),B_2(:,:) - INTEGER LP(2),HP(2), ERRT1, ERRT2 - CHARACTER*8:: TNAME='taskst11' -!DVM$ PROCESSORS P(NUMBER_OF_PROCESSORS( )) -!DVM$ TASK MB( 2 ) -!DVM$ DISTRIBUTE A(*,BLOCK) ONTO P -!DVM$ ALIGN B( I, J ) WITH A( I, J ) -!DVM$ ALIGN B1( I, J ) WITH A1( I, J ) -!DVM$ ALIGN B2( I, J ) WITH A2( I, J ) -!DVM$ DISTRIBUTE :: A1, A2 - - PRINT *, '===START OF taskst11 =====================' - CALL DPT(LP,HP,2) -!DVM$ MAP MB( 1 ) ONTO P( LP(1) : HP(1) ) - ALLOCATE(A1(N1+1,K)) -!DVM$ REDISTRIBUTE A1( *, BLOCK ) ONTO MB( 1 ) - ALLOCATE(B1(N1+1,K)) -!DVM$ MAP MB( 2 ) ONTO P( LP(2) : HP(2) ) - ALLOCATE(A2(N2+1,K)) -!DVM$ REDISTRIBUTE A2( *, BLOCK ) ONTO MB( 2 ) - ALLOCATE(B2(N2+1,K)) - ALLOCATE(A(K,K),B(K,K),B_1(K,K),B_2(K,K)) -! Initialization -!DVM$ TASK_REGION MB -!DVM$ ON MB(1) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON A1(I, J) - DO J = 1, K - DO I = 1, N1 - IF(I.EQ.1 .OR. J.EQ.1 .OR. J.EQ.K) THEN - A1(I, J) = 0. - B1(I, J) = 0. - ELSE - B1(I, J) = 1. + I + J - A1(I, J) = B1(I, J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ ON MB(2) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON A2(I, J) - DO J = 1, K - DO I = 2, N2+1 - IF(I.EQ.N2+1 .OR. J.EQ.1 .OR. J.EQ.K) THEN - A2(I, J) = 0. - B2(I, J) = 0. - ELSE - B2(I, J) = 1. + (I+N1-1) + J - A2(I, J) = B2(I, J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ END TASK_REGION - - DO 2 IT = 1, ITMAX - -! exchange bounds -!DVM$ GET_ACTUAL (B2(2,:),B1(N1, :)) -!DVM$ PARALLEL ( J ) ON A1(N1+1, J), -!DVM$* REMOTE_ACCESS (B2( 2, J ) ) - DO J = 1, K - A1(N1+1, J) = B2(2, J) - ENDDO -!DVM$ PARALLEL ( J ) ON A2( 1, J), -!DVM$* REMOTE_ACCESS (B1( N1, J ) ) - DO J = 1, K - A2(1, J) = B1(N1, J) - ENDDO -!DVM$ ACTUAL (A2(1, :),A1(N1+1,:)) -!DVM$ TASK_REGION MB -!DVM$ ON MB( 1 ) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON B1(I, J), -!DVM$* SHADOW_RENEW ( A1 ) - DO J = 2, K-1 - DO I = 2, N1 - B1(I, J)=(A1(I-1, J) + A1(I,J-1) + - * A1(I+1,J) + A1(I,J+1))/4 - ENDDO - ENDDO - -!DVM$ PARALLEL ( J, I ) ON A1(I, J) - DO J = 2, K-1 - DO I = 2, N1 - A1(I, J) = B1( I, J ) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ ON MB( 2 ) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON B2(I, J), -!DVM$* SHADOW_RENEW ( A2 ) - DO J = 2, K-1 - DO I = 2, N2 - B2(I,J) = (A2(I-1,J) + A2(I,J-1) + - * A2(I+1,J) + A2(I,J+1))/4 - ENDDO - ENDDO -!DVM$ PARALLEL ( J, I ) ON A2(I, J) - DO J = 2, K-1 - DO I = 2, N2 - A2(I, J) = B2( I, J ) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ END TASK_REGION -2 CONTINUE -!1-task JACOBI - -!DVM$ REGION -!DVM$ PARALLEL (J,I) ON A(I, J) -! nest of two parallel loops, iteration (i,j) will be executed on -! processor, which is owner of element A(i,j) - DO J = 1, K - DO I = 1, K - A(I, J) = 0. - IF(I.EQ.1.OR.J.EQ.1.OR.I.EQ.K.OR.J.EQ.K) THEN - B(I, J) = 0. - ELSE - B(I, J) = ( 1. + I + J ) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION - DO IT = 1, ITMAX -!DVM$ REGION -!DVM$ PARALLEL (J, I) ON A(I, J) -! variable EPS is used for calculation of maximum value - DO J = 2, K-1 - DO I = 2, K-1 - A(I, J) = B(I, J) - ENDDO - ENDDO -!DVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A) -! Copying shadow elements of array A from -! neighbouring processors before loop execution - DO J = 2, K-1 - DO I = 2, K-1 - B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+ - * A( I, J+1 )) / 4 - ENDDO - ENDDO -!DVM$ END REGION - ENDDO -!DVM$ GET_ACTUAL (B,B1,B2) - ERRT1 = ER - ERRT2 = ER -! compare 2-task JACOBI with 1-task JACOBI -!DVM$ PARALLEL (I,J) ON B1(I,J),REMOTE_ACCESS (B(I,J)) - DO I = 2,N1 - DO J = 2, K-1 - B_1(I,J) = B(I,J) - ENDDO - ENDDO -!DVM$ PARALLEL (I,J) ON B2(I,J),REMOTE_ACCESS (B(I+(N1-1),J)) - DO I = 2,N2 - DO J = 2, K-1 - B_2(I,J) = B(I+(N1-1),J) - ENDDO - ENDDO - -!DVM$ TASK_REGION MB -!DVM$ ON MB(1) -!DVM$ PARALLEL (I,J) ON B1(I,J), REDUCTION(MIN(ERRT1)) - DO I = 2,N1 - DO J = 2, K-1 - IF(B1(I,J).NE.B_1(I,J)) THEN - ERRT1 = MIN(ERRT1, I) - ENDIF - ENDDO - ENDDO -!DVM$ END ON -!DVM$ ON MB(2) -!DVM$ PARALLEL (I,J) ON B2(I,J), REDUCTION(MIN(ERRT2)) - DO I = 2,N2 - DO J = 2, K-1 - IF(B2(I,J).NE.B_2(I,J)) THEN - ERRT2 = MIN(ERRT2, I) - ENDIF - ENDDO - ENDDO -!DVM$ END ON -!DVM$ END TASK_REGION -!DVM$ GET_ACTUAL(ERRT1,ERRT2) - IF (ERRT1 .EQ. ER .AND. ERRT2 .EQ. ER) THEN - CALL ANSYES(TNAME) - ELSE - CALL ANSNO (TNAME) - ENDIF - DEALLOCATE (B,B_1,B_2,B1,B2,A,A1,A2) - - PRINT *, '=== END OF taskst11 ======================' - END - - SUBROUTINE DPT(LP,HP,NT) -! distributing processors for NT tasks (NT = 2) - INTEGER LP(2), HP(2) - NUMBER_OF_PROCESSORS() = 1 -!DVM$ DEBUG 1 (D = 0) - NP = NUMBER_OF_PROCESSORS() - NTP = NP/NT - IF(NP.EQ.1) THEN - LP(1) = 1 - HP(1) = 1 - LP(2) = 1 - HP(2) = 1 - ELSE - LP(1) = 1 - HP(1) = NTP - LP(2) = NTP+1 - HP(2) = NP - END IF -!DVM$ ENDDEBUG 1 - END -C ------------------------------------------------- - - SUBROUTINE ANSYES(NAME) - CHARACTER*8 NAME - PRINT *, NAME, ' - complete' - END - SUBROUTINE ANSNO (NAME) - CHARACTER*8 NAME - PRINT *, NAME, ' - ***error' - END \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst12.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst12.fdv deleted file mode 100644 index adf117b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst12.fdv +++ /dev/null @@ -1,207 +0,0 @@ - PROGRAM taskst12 -! rectangular grid is distributed on two blocks -! -! - INTEGER,PARAMETER :: K=8, N1=4, ITMAX=20, N2=K-N1, ER=10000 - REAL,ALLOCATABLE :: A(:,:),A1(:,:),A2(:,:) - REAL,ALLOCATABLE :: B(:,:),B1(:,:),B2(:,:) - INTEGER,DIMENSION(2) :: LP,HP - INTEGER :: ERRT - CHARACTER*8:: TNAME='taskst12' -CDVM$ PROCESSORS P(NUMBER_OF_PROCESSORS( )) -CDVM$ TASK MB( 2 ) -CDVM$ DISTRIBUTE A(*,BLOCK) -CDVM$ ALIGN B( I, J ) WITH A( I, J ) -CDVM$ DISTRIBUTE :: A1, A2 -CDVM$ ALIGN :: B1,B2 - - PRINT *, '===START OF taskst12 =====================' - CALL DPT(LP,HP,2) -CDVM$ MAP MB( 1 ) ONTO P( LP(1) : HP(1) ) - ALLOCATE(A1(N1+1,K)) -CDVM$ REDISTRIBUTE A1( *, BLOCK ) ONTO MB( 1 ) - ALLOCATE(B1(N1+1,K)) -CDVM$ REALIGN B1( I, J ) WITH A1( I, J ) - -CDVM$ MAP MB( 2 ) ONTO P( LP(2) : HP(2) ) - ALLOCATE(A2(N2+1,K)) -CDVM$ REDISTRIBUTE A2( *, BLOCK ) ONTO MB( 2 ) - ALLOCATE(B2(N2+1,K)) -CDVM$ REALIGN B2( I, J ) WITH A2( I, J ) - - ALLOCATE(A(K,K),B(K,K)) - -! Initialization -!DVM$ TASK_REGION MB -!DVM$ ON MB(1) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON A1(I, J) - DO J = 1, K - DO I = 1, N1 - IF(I.EQ.1 .OR. J.EQ.1 .OR. J.EQ.K) THEN - A1(I, J) = 0. - B1(I, J) = 0. - ELSE - B1(I, J) = 1. + I + J - A1(I, J) = B1(I, J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ ON MB(2) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON A2(I, J) - DO J = 1, K - DO I = 2, N2+1 - IF(I.EQ.N2+1 .OR. J.EQ.1 .OR. J.EQ.K) THEN - A2(I, J) = 0. - B2(I, J) = 0. - ELSE - B2(I, J) = 1. + (I+N1-1) + J - A2(I, J) = B2(I, J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ END TASK_REGION - - DO 2 IT = 1, ITMAX - -! exchange bounds -!DVM$ GET_ACTUAL (B2(2,:),B1(N1, :)) - A1(N1+1,:) = B2(2, :) - A2(1, :) = B1(N1, :) -!DVM$ ACTUAL (A2(1, :),A1(N1+1,:)) -!DVM$ TASK_REGION MB -!DVM$ ON MB( 1 ) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON B1(I, J), -!DVM$* SHADOW_RENEW ( A1 ) - DO J = 2, K-1 - DO I = 2, N1 - B1(I, J)=(A1(I-1, J) + A1(I,J-1) + - * A1(I+1,J) + A1(I,J+1))/4 - ENDDO - ENDDO - -!DVM$ PARALLEL ( J, I ) ON A1(I, J) - DO J = 2, K-1 - DO I = 2, N1 - A1(I, J) = B1( I, J ) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ ON MB( 2 ) -!DVM$ REGION -!DVM$ PARALLEL ( J, I ) ON B2(I, J), -!DVM$* SHADOW_RENEW ( A2 ) - DO J = 2, K-1 - DO I = 2, N2 - B2(I,J) = (A2(I-1,J) + A2(I,J-1) + - * A2(I+1,J) + A2(I,J+1))/4 - ENDDO - ENDDO -!DVM$ PARALLEL ( J, I ) ON A2(I, J) - DO J = 2, K-1 - DO I = 2, N2 - A2(I, J) = B2( I, J ) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ END ON -!DVM$ END TASK_REGION -2 CONTINUE -!1-task JACOBI - -!DVM$ REGION -!DVM$ PARALLEL (J,I) ON A(I, J) -! nest of two parallel loops, iteration (i,j) will be executed on -! processor, which is owner of element A(i,j) - DO J = 1, K - DO I = 1, K - A(I, J) = 0. - IF(I.EQ.1.OR.J.EQ.1.OR.I.EQ.K.OR.J.EQ.K) THEN - B(I, J) = 0. - ELSE - B(I, J) = ( 1. + I + J ) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION - DO IT = 1, ITMAX -!DVM$ REGION -!DVM$ PARALLEL (J, I) ON A(I, J) -! variable EPS is used for calculation of maximum value - DO J = 2, K-1 - DO I = 2, K-1 - A(I, J) = B(I, J) - ENDDO - ENDDO -!DVM$ PARALLEL (J, I) ON B(I, J), SHADOW_RENEW (A) -! Copying shadow elements of array A from -! neighbouring processors before loop execution - DO J = 2, K-1 - DO I = 2, K-1 - B(I, J) = (A( I-1, J ) + A( I, J-1 ) + A( I+1, J)+ - * A( I, J+1 )) / 4 - ENDDO - ENDDO -!DVM$ END REGION - ENDDO -!DVM$ GET_ACTUAL (B,B1,B2) -! compare 2-task JACOBI with 1-task JACOBI - A(2:N1,:) = B1(2:N1,:) - A(N1+1:N1+N2-1,:) = B2(2:N2,:) - ERRT = ER -!DVM$ PARALLEL (I,J) ON B(I,J), REDUCTION(MIN(ERRT)) - DO I = 2, K-1 - DO J = 2, K-1 - IF(A(I,J) .NE. B(I,J)) THEN - ERRT = MIN(ERRT,I) - ENDIF - ENDDO - ENDDO - IF (ERRT .EQ. ER) THEN - CALL ANSYES(TNAME) - ELSE - CALL ANSNO(TNAME) - ENDIF - - DEALLOCATE (B,B1,B2,A,A1,A2) - PRINT *, '=== END OF taskst12 =====================' - - END - - SUBROUTINE DPT(LP,HP,NT) -! distributing processors for NT tasks (NT = 2) - INTEGER LP(2), HP(2) - NUMBER_OF_PROCESSORS() = 1 -!DVM$ DEBUG 1 (D = 0) - NP = NUMBER_OF_PROCESSORS() - NTP = NP/NT - IF(NP.EQ.1) THEN - LP(1) = 1 - HP(1) = 1 - LP(2) = 1 - HP(2) = 1 - ELSE - LP(1) = 1 - HP(1) = NTP - LP(2) = NTP+1 - HP(2) = NP - END IF -!DVM$ ENDDEBUG 1 - END -C ------------------------------------------------- - - SUBROUTINE ANSYES(NAME) - CHARACTER*8 NAME - PRINT *, NAME, ' - complete' - END - SUBROUTINE ANSNO (NAME) - CHARACTER*8 NAME - PRINT *, NAME, ' - ***error' - END \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst21.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst21.f90 deleted file mode 100644 index 5e1dc26..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst21.f90 +++ /dev/null @@ -1,229 +0,0 @@ -program taskst21 - integer, parameter :: k = 8, n1 = 4, itmax = 20, n2 = k - n1, er = 10000 - real, allocatable :: a( :, :, : ), a1( :, :, : ), a2( :, :, : ) - real, allocatable :: b( :, :, : ), b1( :, :, : ), b2( :, :, : ) - integer lp( 2 ), hp( 2 ), errt - character*8 :: tname = 'taskst21' - !dvm$ processors p( processors_size( 1 ), processors_size( 2 ) ) - !dvm$ task mb( 2 ) - - !dvm$ distribute a( *, block, block ) onto p - !dvm$ align b( i, j, ii ) with a( i, j, ii ) - - !dvm$ distribute :: a1, a2 - !dvm$ align b1( i, j, ii ) with a1( i, j, ii ) - !dvm$ align b2( i, j, ii ) with a2( i, j, ii ) - print *, '===START OF taskst21 =====================' - call dpt( lp, hp, 2 ) - !dvm$ map mb( 1 ) onto p( lp( 1 ) : hp( 1 ), : ) - allocate( a1( n1 + 1, k, k ) ) - !dvm$ redistribute a1( *, block, block ) onto mb( 1 ) - allocate( b1( n1 + 1, k, k ) ) - - !dvm$ map mb( 2 ) onto p( lp( 2 ) : hp( 2 ), : ) - allocate( a2( n2 + 1, k, k ) ) - !dvm$ redistribute a2( *, block, block ) onto mb( 2 ) - allocate( b2( n2 + 1, k, k ) ) - - allocate( a( k, k, k ), b( k, k, k ) ) - - !initialization - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a1( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 1, n1 - if( i .eq. 1 .or. j .eq. 1 .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - a1( i, j, ii ) = 0. - b1( i, j, ii ) = 0. - else - b1( i, j, ii ) = 1. + i + j + ii - a1( i, j, ii ) = b1( i, j, ii ) - endif - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a2( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 2, n2 + 1 - if( i .eq. n2 + 1 .or. j .eq. 1 .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - a2( i, j, ii ) = 0. - b2( i, j, ii ) = 0. - else - b2( i, j, ii ) = 1. + ( i + n1 - 1 ) + j + ii - a2( i, j, ii ) = b2( i, j, ii ) - endif - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - - do it = 1, itmax - !exchange bounds - !dvm$ get_actual(b2( 2, :, : ),b1( n1, :, : )) - !dvm$ parallel ( ii, j ) on a1( n1 + 1, j, ii ), remote_access ( b2( 2, j, ii ) ) - do ii = 1, k - do j = 1, k - a1( n1 + 1, j, ii ) = b2( 2, j, ii ) - enddo - enddo - - !dvm$ parallel ( ii, j ) on a2( 1, j, ii ), remote_access ( b1( n1, j, ii ) ) - do ii = 1, k - do j = 1, k - a2( 1, j, ii ) = b1( n1, j, ii ) - enddo - enddo - !dvm$ actual(a1( n1 + 1, :, : ),a2( 1, :, : )) - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on b1( i, j, ii ), shadow_renew ( a1 ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - b1( i, j, ii ) = ( a1( i - 1, j, ii ) + a1( i + 1, j, ii ) + & - a1( i, j - 1, ii ) + a1( i, j + 1, ii ) + & - a1( i, j, ii - 1 ) + a1( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - - !dvm$ parallel ( ii, j, i ) on a1( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - a1( i, j, ii ) = b1( i, j, ii ) - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on b2( i, j, ii ), shadow_renew ( a2 ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - b2( i, j, ii ) = ( a2( i - 1, j, ii ) + a2( i + 1, j, ii ) + & - a2( i, j - 1, ii ) + a2( i, j + 1, ii ) + & - a2( i, j, ii - 1 ) + a2( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - !dvm$ parallel ( ii, j, i ) on a2( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - a2( i, j, ii ) = b2( i, j, ii ) - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - enddo - - !1 - task jacobi - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 1, k - a( i, j, ii ) = 0. - if( i .eq. 1 .or. j .eq. 1 .or. i .eq. k .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - b( i, j, ii ) = 0. - else - b( i, j, ii ) = ( 1. + i + j + ii ) - endif - enddo - enddo - enddo - !dvm$ end region - - do it = 1, itmax - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - a( i, j, ii ) = b( i, j, ii ) - enddo - enddo - enddo - !dvm$ parallel ( ii, j, i ) on b( i, j, ii ), shadow_renew( a ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - b( i, j, ii ) = ( a( i - 1, j, ii ) + a( i + 1, j, ii ) + & - a( i, j - 1, ii ) + a( i, j + 1, ii ) + & - a( i, j, ii - 1 ) + a( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - !dvm$ end region - enddo - - ! compare 2 - task jacobi with 1 - task jacobi - !dvm$ get_actual(b,b1,b2) - a(2:n1,:,:) = b1(2:n1,:,:) - a(n1+1:n1+n2-1,:,:) = b2(2:n2,:,:) - errt = er - !dvm$ parallel ( ii, j, i ) on b( i, j, ii ), reduction(min(errt)) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - if(a( i, j, ii ) .ne. b( i, j, ii )) errt = min(errt, i) - enddo - enddo - enddo - if (errt .eq. er) then - call ansyes(tname) - else - call ansno (tname) - endif - deallocate(b,b1,b2,a,a1,a2) - print *, '=== END OF taskst21 =====================' - -end - -subroutine dpt( lp, hp, nt ) - !distributing processors for nt tasks ( nt = 2 ) - integer lp( 2 ), hp( 2 ) - processors_size( i ) = 1 - !dvm$ debug 1 ( d = 0 ) - np = processors_size( 1 ) - ntp = np/nt - if( np .eq. 1 ) then - lp( 1 ) = 1 - hp( 1 ) = 1 - lp( 2 ) = 1 - hp( 2 ) = 1 - else - lp( 1 ) = 1 - hp( 1 ) = ntp - lp( 2 ) = ntp + 1 - hp( 2 ) = np - end if - !dvm$ enddebug 1 -end - -subroutine ansyes(name) - character*8 name - print *, name, ' - complete' -end - -subroutine ansno(name) - character*8 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst22.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst22.f90 deleted file mode 100644 index 168b788..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst22.f90 +++ /dev/null @@ -1,221 +0,0 @@ -program taskst22 - integer, parameter :: k = 8, n1 = 4, itmax = 20, n2 = k - n1, er = 10000 - real, allocatable :: a( :, :, : ), a1( :, :, : ), a2( :, :, : ) - real, allocatable :: b( :, :, : ), b1( :, :, : ), b2( :, :, : ) - integer, dimension( 2 ) :: lp, hp - integer :: errt - character*8 :: tname = 'taskst22' - !dvm$ processors p( processors_size( 1 ), processors_size( 2 ) ) - !dvm$ task mb( 2 ) - - !dvm$ distribute a( *, block, block ) onto p - !dvm$ align b( i, j, ii ) with a( i, j, ii ) - - !dvm$ distribute :: a1, a2 - !dvm$ align :: b1, b2 - print *, '===START OF taskst22 =====================' - call dpt( lp, hp, 2 ) - !dvm$ map mb( 1 ) onto p( lp( 1 ) : hp( 1 ), : ) - allocate( a1( n1 + 1, k, k ) ) - !dvm$ redistribute a1( *, block, block ) onto mb( 1 ) - allocate( b1( n1 + 1, k, k ) ) - !dvm$ realign b1( i, j, ii ) with a1( i, j, ii ) - - !dvm$ map mb( 2 ) onto p( lp( 2 ) : hp( 2 ), : ) - allocate( a2( n2 + 1, k, k ) ) - !dvm$ redistribute a2( *, block, block ) onto mb( 2 ) - allocate( b2( n2 + 1, k, k ) ) - !dvm$ realign b2( i, j, ii ) with a2( i, j, ii ) - - allocate( a( k, k, k ), b( k, k, k ) ) - - !initialization - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a1( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 1, n1 - if( i .eq. 1 .or. j .eq. 1 .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - a1( i, j, ii ) = 0. - b1( i, j, ii ) = 0. - else - b1( i, j, ii ) = 1. + i + j + ii - a1( i, j, ii ) = b1( i, j, ii ) - endif - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a2( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 2, n2 + 1 - if( i .eq. n2 + 1 .or. j .eq. 1 .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - a2( i, j, ii ) = 0. - b2( i, j, ii ) = 0. - else - b2( i, j, ii ) = 1. + ( i + n1 - 1 ) + j + ii - a2( i, j, ii ) = b2( i, j, ii ) - endif - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - - do it = 1, itmax - !exchange bounds - !dvm$ get_actual(b2( 2, :, : ),b1( n1, :, : )) - a1( n1 + 1, :, : ) = b2( 2, :, : ) - a2( 1, :, : ) = b1( n1, :, : ) - !dvm$ actual(a1( n1 + 1, :, : ),a2( 1, :, : )) - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on b1( i, j, ii ), shadow_renew ( a1 ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - b1( i, j, ii ) = ( a1( i - 1, j, ii ) + a1( i + 1, j, ii ) + & - a1( i, j - 1, ii ) + a1( i, j + 1, ii ) + & - a1( i, j, ii - 1 ) + a1( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - - !dvm$ parallel ( ii, j, i ) on a1( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - a1( i, j, ii ) = b1( i, j, ii ) - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( ii, j, i ) on b2( i, j, ii ), shadow_renew ( a2 ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - b2( i, j, ii ) = ( a2( i - 1, j, ii ) + a2( i + 1, j, ii ) + & - a2( i, j - 1, ii ) + a2( i, j + 1, ii ) + & - a2( i, j, ii - 1 ) + a2( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - !dvm$ parallel ( ii, j, i ) on a2( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - a2( i, j, ii ) = b2( i, j, ii ) - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - enddo - - !1 - task jacobi - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a( i, j, ii ) - do ii = 1, k - do j = 1, k - do i = 1, k - a( i, j, ii ) = 0. - if( i .eq. 1 .or. j .eq. 1 .or. i .eq. k .or. j .eq. k .or. ii .eq. 1 .or. ii .eq. k ) then - b( i, j, ii ) = 0. - else - b( i, j, ii ) = ( 1. + i + j + ii ) - endif - enddo - enddo - enddo - !dvm$ end region - - do it = 1, itmax - !dvm$ region - !dvm$ parallel ( ii, j, i ) on a( i, j, ii ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - a( i, j, ii ) = b( i, j, ii ) - enddo - enddo - enddo - !dvm$ parallel ( ii, j, i ) on b( i, j, ii ), shadow_renew( a ) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - b( i, j, ii ) = ( a( i - 1, j, ii ) + a( i + 1, j, ii ) + & - a( i, j - 1, ii ) + a( i, j + 1, ii ) + & - a( i, j, ii - 1 ) + a( i, j, ii + 1 ) ) / 6 - enddo - enddo - enddo - !dvm$ end region - enddo - - ! compare 2 - task jacobi with 1 - task jacobi - !dvm$ get_actual(b,b1,b2) - a(2:n1,:,:) = b1(2:n1,:,:) - a(n1+1:n1+n2-1,:,:) = b2(2:n2,:,:) - errt = er - !dvm$ parallel ( ii, j, i ) on b( i, j, ii ), reduction(min(errt)) - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - if(a( i, j, ii ) .ne. b( i, j, ii )) errt = min(errt, i) - enddo - enddo - enddo - if (errt .eq. er) then - call ansyes(tname) - else - call ansno (tname) - endif - deallocate(b,b1,b2,a,a1,a2) - print *, '=== END OF taskst22 =====================' -end - - - -subroutine dpt( lp, hp, nt ) - !distributing processors for nt tasks ( nt = 2 ) - integer lp( 2 ), hp( 2 ) - processors_size( i ) = 1 - !dvm$ debug 1 ( d = 0 ) - np = processors_size( 1 ) - ntp = np/nt - if( np .eq. 1 ) then - lp( 1 ) = 1 - hp( 1 ) = 1 - lp( 2 ) = 1 - hp( 2 ) = 1 - else - lp( 1 ) = 1 - hp( 1 ) = ntp - lp( 2 ) = ntp + 1 - hp( 2 ) = np - end if - !dvm$ enddebug 1 -end - -subroutine ansyes(name) - character*8 name - print *, name, ' - complete' -end - -subroutine ansno(name) - character*8 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst31.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst31.f90 deleted file mode 100644 index d9169ed..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst31.f90 +++ /dev/null @@ -1,271 +0,0 @@ -program taskst31 - integer, parameter :: k = 8, n1 = 4, itmax = 20, n2 = k - n1, er = 10000 - real, allocatable :: a( :, :, :, : ), a1( :, :, :, : ), a2( :, :, :, : ) - real, allocatable :: b( :, :, :, : ), b1( :, :, :, : ), b2( :, :, :, : ) - integer lp( 2 ), hp( 2 ), errt - character*8 :: tname = 'taskst31' - !dvm$ processors p( processors_size( 1 ), processors_size( 2 ), processors_size( 3 ) ) - !dvm$ task mb( 2 ) - - !dvm$ distribute a( *, block, block, block ) onto p - !dvm$ align b( i, j, ii, jj ) with a( i, j, ii, jj ) - - !dvm$ distribute :: a1, a2 - !dvm$ align b1( i, j, ii, jj ) with a1( i, j, ii, jj ) - !dvm$ align b2( i, j, ii, jj ) with a2( i, j, ii, jj ) - - print *, '===START OF taskst31 =====================' - - call dpt( lp, hp, 2 ) - !dvm$ map mb( 1 ) onto p( lp( 1 ) : hp( 1 ), :, : ) - allocate( a1( n1 + 1, k, k, k ) ) - !dvm$ redistribute a1( *, block, block, block ) onto mb( 1 ) - allocate( b1( n1 + 1, k, k, k ) ) - - !dvm$ map mb( 2 ) onto p( lp( 2 ) : hp( 2 ), :, : ) - allocate( a2( n2 + 1, k, k, k ) ) - !dvm$ redistribute a2( *, block, block, block ) onto mb( 2 ) - allocate( b2( n2 + 1, k, k, k ) ) - - allocate( a( k, k, k, k ), b( k, k, k, k ) ) - - !initialization - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a1( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 1, n1 - if( i .eq. 1 .or. & - j .eq. 1 .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - a1( i, j, ii, jj ) = 0. - b1( i, j, ii, jj ) = 0. - else - b1( i, j, ii, jj ) = 1. + i + j + ii + jj - a1( i, j, ii, jj ) = b1( i, j, ii, jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a2( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 2, n2 + 1 - if( i .eq. n2 + 1 .or. & - j .eq. 1 .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - a2( i, j, ii, jj ) = 0. - b2( i, j, ii, jj ) = 0. - else - b2( i, j, ii, jj ) = 1. + ( i + n1 - 1 ) + j + ii + jj - a2( i, j, ii, jj ) = b2( i, j, ii, jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - - do it = 1, itmax - - !exchange bounds - !dvm$ get_actual(b2(2,:,:,:)) - !dvm$ parallel ( jj, ii, j ) on a1( n1 + 1, j, ii, jj ), remote_access ( b2( 2, j, ii, jj ) ) - do jj = 1, k - do ii = 1, k - do j = 1, k - a1( n1 + 1, j, ii, jj ) = b2( 2, j, ii, jj ) - enddo - enddo - enddo - !dvm$ actual(a1(n1+1,:,:,:)) - !dvm$ get_actual (b1(n1,:,:,:)) - !dvm$ parallel ( jj, ii, j ) on a2( 1, j, ii, jj ), remote_access ( b1( n1, j, ii, jj ) ) - do jj = 1, k - do ii = 1, k - do j = 1, k - a2( 1, j, ii, jj ) = b1( n1, j, ii, jj ) - enddo - enddo - enddo - !dvm$ actual(a2(1,:,:,:)) - - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on b1( i, j, ii, jj ), shadow_renew ( a1 ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - b1( i, j, ii, jj ) = ( a1( i - 1, j, ii, jj ) + a1( i + 1, j, ii, jj ) + & - a1( i, j - 1, ii, jj ) + a1( i, j + 1, ii, jj ) + & - a1( i, j, ii - 1, jj ) + a1( i, j, ii + 1, jj ) + & - a1( i, j, ii, jj - 1 ) + a1( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - - !dvm$ parallel ( jj, ii, j, i ) on a1( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - a1( i, j, ii, jj ) = b1( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on b2( i, j, ii, jj ), shadow_renew ( a2 ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - b2( i, j, ii, jj ) = ( a2( i - 1, j, ii, jj ) + a2( i + 1, j, ii, jj ) + & - a2( i, j - 1, ii, jj ) + a2( i, j + 1, ii, jj ) + & - a2( i, j, ii - 1, jj ) + a2( i, j, ii + 1, jj ) + & - a2( i, j, ii, jj - 1 ) + a2( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - !dvm$ parallel ( jj, ii, j, i ) on a2( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - a2( i, j, ii, jj ) = b2( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - enddo - - !1 - task jacobi - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 1, k - a( i, j, ii, jj ) = 0. - if( i .eq. 1 .or. j .eq. 1 .or. & - i .eq. k .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - b( i, j, ii, jj ) = 0. - else - b( i, j, ii, jj ) = ( 1. + i + j + ii + jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - - do it = 1, itmax - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - a( i, j, ii, jj ) = b( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( jj, ii, j, i ) on b( i, j, ii, jj ), shadow_renew( a ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - b( i, j, ii, jj ) = ( a( i - 1, j, ii, jj ) + a( i + 1, j, ii, jj ) + & - a( i, j - 1, ii, jj ) + a( i, j + 1, ii, jj ) + & - a( i, j, ii - 1, jj ) + a( i, j, ii + 1, jj ) + & - a( i, j, ii, jj - 1 ) + a( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - !dvm$ end region - enddo - - ! compare 2 - task jacobi with 1 - task jacobi - !dvm$ get_actual(b,b1,b2) - a(2:n1,:,:,:) = b1(2:n1,:,:,:) - a(n1+1:n1+n2-1,:,:,:) = b2(2:n2,:,:,:) - errt = er - !dvm$ parallel ( jj, ii, j, i ) on b( i, j, ii, jj ), reduction(min(errt)) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - if(a( i, j, ii, jj) .ne. b( i, j, ii, jj)) errt = min(errt, i) - enddo - enddo - enddo - enddo - if (errt .eq. er) then - call ansyes(tname) - else - call ansno (tname) - endif - deallocate(b,b1,b2,a,a1,a2) - print *, '=== END OF taskst31 =====================' -end - -subroutine dpt( lp, hp, nt ) - !distributing processors for nt tasks ( nt = 2 ) - integer lp( 2 ), hp( 2 ) - processors_size( i ) = 1 - !dvm$ debug 1 ( d = 0 ) - np = processors_size( 1 ) - ntp = np/nt - if( np .eq. 1 ) then - lp( 1 ) = 1 - hp( 1 ) = 1 - lp( 2 ) = 1 - hp( 2 ) = 1 - else - lp( 1 ) = 1 - hp( 1 ) = ntp - lp( 2 ) = ntp + 1 - hp( 2 ) = np - end if - !dvm$ enddebug 1 -end - -subroutine ansyes(name) - character*8 name - print *, name, ' - complete' -end - -subroutine ansno(name) - character*8 name - print *, name, ' - ***error' -end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst32.f90 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst32.f90 deleted file mode 100644 index dcd3ded..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TASK/taskst32.f90 +++ /dev/null @@ -1,254 +0,0 @@ -program taskst32 - integer, parameter :: k = 8, n1 = 4, itmax = 20, n2 = k - n1, er = 10000 - real, allocatable :: a( :, :, :, : ), a1( :, :, :, : ), a2( :, :, :, : ) - real, allocatable :: b( :, :, :, : ), b1( :, :, :, : ), b2( :, :, :, : ) - integer lp( 2 ), hp( 2 ) - integer errt - character*8 :: tname = 'taskst32' - !dvm$ processors p( processors_size( 1 ), processors_size( 2 ), processors_size( 3 ) ) - !dvm$ task mb( 2 ) - - !dvm$ distribute a( *, block, block, block ) onto p - !dvm$ align b( i, j, ii, jj ) with a( i, j, ii, jj ) - - !dvm$ distribute :: a1, a2 - !dvm$ align :: b1, b2 - print *, '===START OF taskst32 =====================' - call dpt( lp, hp, 2 ) - !dvm$ map mb( 1 ) onto p( lp( 1 ) : hp( 1 ), :, : ) - allocate( a1( n1 + 1, k, k, k ) ) - !dvm$ redistribute a1( *, block, block, block ) onto mb( 1 ) - allocate( b1( n1 + 1, k, k, k ) ) - !dvm$ realign b1( i, j, ii, jj ) with a1( i, j, ii, jj ) - - !dvm$ map mb( 2 ) onto p( lp( 2 ) : hp( 2 ), :, : ) - allocate( a2( n2 + 1, k, k, k ) ) - !dvm$ redistribute a2( *, block, block, block ) onto mb( 2 ) - allocate( b2( n2 + 1, k, k, k ) ) - !dvm$ realign b2( i, j, ii, jj ) with a2( i, j, ii, jj ) - - allocate( a( k, k, k, k ), b( k, k, k, k ) ) - - !initialization - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a1( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 1, n1 - if( i .eq. 1 .or. & - j .eq. 1 .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - a1( i, j, ii, jj ) = 0. - b1( i, j, ii, jj ) = 0. - else - b1( i, j, ii, jj ) = 1. + i + j + ii + jj - a1( i, j, ii, jj ) = b1( i, j, ii, jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a2( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 2, n2 + 1 - if( i .eq. n2 + 1 .or. & - j .eq. 1 .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - a2( i, j, ii, jj ) = 0. - b2( i, j, ii, jj ) = 0. - else - b2( i, j, ii, jj ) = 1. + ( i + n1 - 1 ) + j + ii + jj - a2( i, j, ii, jj ) = b2( i, j, ii, jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - - do it = 1, itmax - !exchange bounds - !dvm$ get_actual(b2(2,:,:,:)) - a1( n1 + 1, :, :, : ) = b2( 2, :, :, : ) - !dvm$ actual(a1(n1+1,:,:,:)) - !dvm$ get_actual (b1(n1,:,:,:)) - a2( 1, :, :, : ) = b1( n1, :, :, : ) - !dvm$ actual(a2(1,:,:,:)) - - !dvm$ task_region mb - !dvm$ on mb( 1 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on b1( i, j, ii, jj ), shadow_renew ( a1 ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - b1( i, j, ii, jj ) = ( a1( i - 1, j, ii, jj ) + a1( i + 1, j, ii, jj ) + & - a1( i, j - 1, ii, jj ) + a1( i, j + 1, ii, jj ) + & - a1( i, j, ii - 1, jj ) + a1( i, j, ii + 1, jj ) + & - a1( i, j, ii, jj - 1 ) + a1( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - - !dvm$ parallel ( jj, ii, j, i ) on a1( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n1 - a1( i, j, ii, jj ) = b1( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - - !dvm$ on mb( 2 ) - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on b2( i, j, ii, jj ), shadow_renew ( a2 ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - b2( i, j, ii, jj ) = ( a2( i - 1, j, ii, jj ) + a2( i + 1, j, ii, jj ) + & - a2( i, j - 1, ii, jj ) + a2( i, j + 1, ii, jj ) + & - a2( i, j, ii - 1, jj ) + a2( i, j, ii + 1, jj ) + & - a2( i, j, ii, jj - 1 ) + a2( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - !dvm$ parallel ( jj, ii, j, i ) on a2( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, n2 - a2( i, j, ii, jj ) = b2( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ end region - !dvm$ end on - !dvm$ end task_region - enddo - - !1 - task jacobi - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a( i, j, ii, jj ) - do jj = 1, k - do ii = 1, k - do j = 1, k - do i = 1, k - a( i, j, ii, jj ) = 0. - if( i .eq. 1 .or. j .eq. 1 .or. & - i .eq. k .or. j .eq. k .or. & - ii .eq. 1 .or. ii .eq. k .or. & - jj .eq. 1 .or. jj .eq. k ) then - b( i, j, ii, jj ) = 0. - else - b( i, j, ii, jj ) = ( 1. + i + j + ii + jj ) - endif - enddo - enddo - enddo - enddo - !dvm$ end region - - do it = 1, itmax - !dvm$ region - !dvm$ parallel ( jj, ii, j, i ) on a( i, j, ii, jj ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - a( i, j, ii, jj ) = b( i, j, ii, jj ) - enddo - enddo - enddo - enddo - !dvm$ parallel ( jj, ii, j, i ) on b( i, j, ii, jj ), shadow_renew( a ) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - b( i, j, ii, jj ) = ( a( i - 1, j, ii, jj ) + a( i + 1, j, ii, jj ) + & - a( i, j - 1, ii, jj ) + a( i, j + 1, ii, jj ) + & - a( i, j, ii - 1, jj ) + a( i, j, ii + 1, jj ) + & - a( i, j, ii, jj - 1 ) + a( i, j, ii, jj + 1 ) ) / 8 - enddo - enddo - enddo - enddo - !dvm$ end region - enddo - ! compare 2-task jacobi with 1-task jacobi - !dvm$ get_actual(b,b1,b2) - a(2:n1,:,:,:) = b1(2:n1,:,:,:) - a(n1+1:n1+n2-1,:,:,:) = b2(2:n2,:,:,:) - errt = er - !dvm$ parallel ( jj, ii, j, i ) on b( i, j, ii, jj ), reduction(min(errt)) - do jj = 2, k - 1 - do ii = 2, k - 1 - do j = 2, k - 1 - do i = 2, k - 1 - if(a( i, j, ii, jj) .ne. b( i, j, ii, jj)) errt = min(errt, i) - enddo - enddo - enddo - enddo - if (errt .eq. er) then - call ansyes(tname) - else - call ansno (tname) - endif - deallocate(b,b1,b2,a,a1,a2) - print *, '=== END OF taskst32 =====================' -end - -subroutine dpt( lp, hp, nt ) - !distributing processors for nt tasks ( nt = 2 ) - integer lp( 2 ), hp( 2 ) - processors_size( i ) = 1 - !dvm$ debug 1 ( d = 0 ) - np = processors_size( 1 ) - ntp = np/nt - if( np .eq. 1 ) then - lp( 1 ) = 1 - hp( 1 ) = 1 - lp( 2 ) = 1 - hp( 2 ) = 1 - else - lp( 1 ) = 1 - hp( 1 ) = ntp - lp( 2 ) = ntp + 1 - hp( 2 ) = np - end if - !dvm$ enddebug 1 -end - -subroutine ansyes(name) - character*8 name - print *, name, ' - complete' -end - -subroutine ansno(name) - character*8 name - print *, name, ' - ***error' -end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ1.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ1.fdv deleted file mode 100644 index bfcf11b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ1.fdv +++ /dev/null @@ -1,180 +0,0 @@ - program TEMPL11 - -c TESTING template CLAUSE . - - print *,'===START OF templ11======================' -C -------------------------------------------------- -c 111 TEMPLATE arrA1[BLOCK] ALIGN arrB[i] WITH arrA[i+4] -c ALIGN arrC[i] WITH arrA[2*i+4] - call templ111 -C -------------------------------------------------- -c 121 TEMPLATE arrA1[BLOCK] ALIGN arrB[][i] WITH arrA[i] -c ALIGN arrC[i][ ] WITH arrA[2*i+1] - call templ121 -C -------------------------------------------------- - print *,'=== END OF templ11 ======================' - end - -C ----------------------------------------------------templ111 -c 111 TEMPLATE arrA[BLOCK] ALIGN arrB[i] WITH arrA[i+4] -c ALIGN arrC[i] WITH arrA[2*i+4] - subroutine templ111 - integer, parameter :: AN1=14,CN1=4,BN1=8,PN = 4,NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA[k1i * i + li] - integer, parameter :: k1i=1,k2i=0,li=4 -c parameters for ALIGN arrC[i] WITH arrA[kc1i * i + lci] - integer, parameter :: kc1i=2,kc2i=0,lci=4 - character*9 tname - integer, allocatable :: C1(:),B1(:) - integer erri,i,ib,ic - -cdvm$ template A1(AN1) -cdvm$ ALIGN B1(i) WITH A1(k1i * i + li) -cdvm$ ALIGN C1(i) WITH A1(kc1i * i + lci) -cdvm$ distribute A1(BLOCK) - - tname='templ111' - allocate (C1(CN1),B1(BN1)) - erri= ER - NNL=NL -!dvm$ actual (erri) -!dvm$ region -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -*dvm$ parallel (i) on C1(i) - do i=1,CN1 - C1(i) =i - enddo - -*dvm$ parallel (i) on A1(i), private (ib,erri,ic) - do i=1,AN1 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1)) then - ib = (i-li)/k1i - if (B1(ib) .eq.(ib)) then - else - erri = i - endif - endif - if (((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((i-lci)/kc1i) .le. CN1)) then - ic = (i-lci)/kc1i - if (C1(ic) .eq.(ic)) then - else - erri = i - endif - endif - enddo - -!dvm$ end region -!dvm$ get_actual (erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (C1,B1) - - end -C ----------------------------------------------------templ121 -c 121 TEMPLATE arrA1[BLOCK] -c ALIGN arrB[][i] WITH arrA[i] -c ALIGN arrC[i][ ] WITH arrA[2*i+1] - subroutine templ121 - integer, parameter :: AN1=9,CN1=4,CN2=4,BN1=8,BN2=8 - integer, parameter :: NL=1000,ER=10000 -c parameters for ALIGN arrB(*,i) WITH arrA[k1i*i+li] - integer, parameter :: k1i=1,k2i=0,li=0 -c parameters for ALIGN arrC(i,*) WITH arrA[kc1i*i+lci] - integer, parameter :: kc1i=2,kc2i=0,lci=1 - character*9 tname - integer, allocatable :: C2(:,:),B2(:,:) - integer erri,i,ib,jb,ic,jc - -cdvm$ template A1(AN1) -cdvm$ ALIGN B2(*,i) WITH A1(k1i*i+li) -cdvm$ ALIGN C2(i,*) WITH A1(kc1i*i+lci) -cdvm$ distribute A1(BLOCK) - - tname='templ121' - allocate (C2(CN1,CN2),B2(BN1,BN2)) - erri= ER - NNL=NL - -!dvm$ actual (erri) -!dvm$ region - -*dvm$ parallel (i,j) on B2(i,j) - do i=1,BN1 - do j=1,BN2 - B2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (i,j) on C2(i,j) - do i=1,CN1 - do j=1,CN2 - C2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (i) on A1(i), private (j,ib,jb,erri,jc,ic,k) - do i=1,AN1 - do j=1,BN1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((i-li)/k1i) .le. BN2) )then - ib = j - jb = (i-li)/k1i - if (B2(ib,jb) .eq.(ib*NL+jb)) then - else - erri = i*NL/10+j - endif - endif - enddo - do k=1,CN2 - if ( - * ((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((i-lci)/kc1i) .le. CN1) )then - jc = k - ic = (i-lci)/kc1i - if (C2(ic,jc) .eq.(ic*NL+jc)) then - else - erri = i*NL/10+j - endif - endif - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (erri) - - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (C2,B2) - - end -C ------------------------------------------------- - - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ2.fdv deleted file mode 100644 index 619c78c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ2.fdv +++ /dev/null @@ -1,194 +0,0 @@ - program TEMPL2 - -c TESTING template CLAUSE . - - print *,'===START OF templ2=======================' -C -------------------------------------------------- -c 211 TEMPLATE arrA2[BLOCK][BLOCK] -c ALIGN arrB[i] WITH arrA[1][i] -c ALIGN arrC[i][j] WITH arrA[2*i+2][j] - call templ211 -C -------------------------------------------------- -c 221 TEMPLATE arrA1[BLOCK][BLOCK] -c ALIGN arrB[i][j] WITH arrA[i+4][j+4] -c ALIGN arrC[i][j] WITH arrA[i+1][j+1] - call templ221 -C -------------------------------------------------- - print *,'=== END OF templ2 =======================' - end - -C ----------------------------------------------------templ211 -c 211 TEMPLATE arrA2[BLOCK][BLOCK] -c ALIGN arrB[i] WITH arrA[1][i] -c ALIGN arrC[i][j] WITH arrA[2*i+2][j] - subroutine templ211 - integer, parameter :: AN1=14,AN2=14,CN1=4,CN2=4,BN1=8 - integer, parameter :: NL=1000,ER=10000 -c parameters for ALIGN arrB[i] WITH arrA(1,i) - integer, parameter :: k1i=0,k2i=0,li=1,k1j=1,k2j=0,lj=0 -c parameters for ALIGN arrC[i][j] WITH arrA[kc1i * i + lci][kc2j * j + lcj] - integer, parameter :: kc1i=2,kc2i=0,lci=2,kc1j=0,kc2j=1,lcj=0 - character*9 tname - integer, allocatable :: C2(:,:),B1(:) - integer erri,i,ib,ic,jc - -cdvm$ template A2(AN1,AN2) -cdvm$ ALIGN B1(i) WITH A2(1,i) -cdvm$ ALIGN C2(i,j) WITH A2(kc1i * i + lci,kc2j * j + lcj) -cdvm$ distribute A2(BLOCK,BLOCK) - - tname='templ211' - allocate (C2(CN1,CN2),B1(BN1)) - erri= ER - NNL=NL - -!dvm$ actual(erri) -!dvm$ region - -*dvm$ parallel (i) on B1(i) - do i=1,BN1 - B1(i) =i - enddo - -*dvm$ parallel (j,i) on C2(i,j) - do j=1,CN2 - do i=1,CN1 - C2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (j,i) on A2(i,j), private (ib,erri,ic,jc) - do j=1,AN2 - do i=1,AN1 - if ((i .eq. 1) ) then - if( - * (j .le. BN1) - * ) then - ib = j - if (B1(ib) .eq.(ib)) then - else - erri = i - endif - endif - endif - if (((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * ((j-lcj) .eq.(((j-lcj)/kc2j) *kc2j)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((j-lcj)/kc2j) .gt. 0) .and. - * (((i-lci)/kc1i) .le. CN1) .and. - * (((j-lcj)/kc2j) .le. CN2)) then - ic = (i-lci)/kc1i - jc = (j-lcj)/kc2j - if (C2(ic,jc) .eq.(ic*NL+jc)) then - else - erri = i - endif - endif - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (C2,B1) - - end -C ----------------------------------------------------templ221 -c 221 TEMPLATE arrA1[BLOCK][BLOCK] -c ALIGN arrB[i][j] WITH arrA[i+4][j+4] -c ALIGN arrC[i][j] WITH arrA[i+1][j+1] - subroutine templ221 - integer, parameter :: AN1=14,AN2=14,CN1=4,CN2=4,BN1=8,BN2=8 - integer, parameter :: NL=1000,ER=10000 -c parameters for ALIGN arrB[i][j] WITH arrA[k1i * i + li][k2j * j + lj] - integer, parameter :: k1i=1,k2i=0,li=4,k1j=0,k2j=1,lj=4 -c parameters for ALIGN arrC[i][j] WITH arrA[kc1i * i + lci][kc2j * j + lcj] - integer, parameter :: kc1i=1,kc2i=0,lci=1,kc1j=0,kc2j=1,lcj=1 - character*9 tname - integer, allocatable :: C2(:,:),B2(:,:) - integer erri,i,ib,jb,ic,jc - -cdvm$ template A2(AN1,AN2) -cdvm$ ALIGN B2(i,j) WITH A2(k1i * i + li,k2j * j + lj) -cdvm$ ALIGN C2(i,j) WITH A2(kc1i * i + lci,kc2j * j + lcj) -cdvm$ distribute A2(BLOCK,BLOCK) - - tname='templ221' - allocate (C2(CN1,CN2),B2(BN1,BN2)) - erri= ER - NNL=NL -!dvm$ actual (erri) -!dvm$ region - - -*dvm$ parallel (j,i) on B2(i,j) - do j=1,BN2 - do i=1,BN1 - B2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (j,i) on C2(i,j) - do j=1,CN2 - do i=1,CN1 - C2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (j,i) on A2(i,j),private (ib,ic,erri,jb,jc) - do j=1,AN2 - do i=1,AN1 - if (((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2)) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - if (B2(ib,jb) .eq.(ib*NL+jb)) then - else - erri = i - endif - endif - if (((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * ((j-lcj) .eq.(((j-lcj)/kc2j) *kc2j)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((j-lcj)/kc2j) .gt. 0) .and. - * (((i-lci)/kc1i) .le. CN1) .and. - * (((j-lcj)/kc2j) .le. CN2)) then - ic = (i-lci)/kc1i - jc = (j-lcj)/kc2j - if (C2(ic,jc) .eq.(ic*NL+jc)) then - else - erri = i - endif - endif - enddo - enddo -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ4.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ4.fdv deleted file mode 100644 index ca1765b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/Fortran/TEMPLATE/templ4.fdv +++ /dev/null @@ -1,276 +0,0 @@ - program TEMPL4 - -c TESTING template CLAUSE . - - print *,'===START OF templ4=======================' -C -------------------------------------------------- -c 441 TEMPLATE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] -c arrB[i][j][k][l] WITH arrA[i+2][ j][k][ l+3] -c ALIGN arrC[i][j] WITH arrA[i+2][2][3][ l+3] - call templ441 -C -------------------------------------------------- -c 442 TEMPLATE arrA1[BLOCK][BLOCK][BLOCK][BLOCK] -c ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] -c ALIGN arrC[i][j][k][l] WITH [i+2][ j][k][ l+3] - call templ442 -C -------------------------------------------------- - print *,'=== END OF templ4 =======================' - end - -C ----------------------------------------------------templ441 -c 441 TEMPLATE arrA4[BLOCK][BLOCK][BLOCK][BLOCK] -c arrB[i][j][k][l] WITH arrA[i+2][ j][k][ l+3] -c ALIGN arrC[i][j] WITH arrA[i+2][2][3][ l+3] - subroutine templ441 - integer, parameter :: AN1=7,AN2=7,AN3=7,AN4=7 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: CN1=4,CN2=4 - integer, parameter :: NL=10000,ER=100000 - -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) - integer, parameter :: k1i=1,k2i=0,k3i=0,k4i=0,li=2 - integer, parameter :: k1j=0,k2j=1,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=0,k3n=1,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=0,k4m=1,lm=3 -c parameters for ALIGN arrC[i][j] WITH arrA4(kc1i*i+lci,lcj,lcn,kc2m*j+lcm) - integer, parameter :: kc1i=1,kc2i=0,kc3i=0,kc4i=0,lci=2 - integer, parameter :: kc1j=0,kc2j=0,kc3j=0,kc4j=0,lcj=2 - integer, parameter :: kc1n=0,kc2n=0,kc3n=0,kc4n=0,lcn=3 - integer, parameter :: kc1m=0,kc2m=1,kc3m=0,kc4m=0,lcm=3 - - character*9 tname - integer, allocatable :: C2(:,:), B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,ic,jc,nc,mc - -cdvm$ template A4(AN1,AN2,AN3,AN4) -cdvm$ ALIGN B4(i,j,n,m) WITH A4(k1i*i+li,k2j*j+lj,k3n*n+ln,k4m*m+lm) -cdvm$ ALIGN C2(i,j) WITH A4(kc1i*i+lci,lcj,lcn,kc2m*j+lcm) -cdvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='templ441' - allocate (C2(CN1,CN2),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL -!dvm$ actual (erri) -!dvm$ region - - -*dvm$ parallel (m,n,j,i) on B4(i,j,n,m) - do m=1,BN4 - do n=1,BN3 - do j=1,BN2 - do i=1,BN1 - B4(i,j,n,m) =(i*NL/10+j*NL/100+n*NL/1000+m) - enddo - enddo - enddo - enddo - -*dvm$ parallel (j,i) on C2(i,j) - do j=1,CN2 - do i=1,CN1 - C2(i,j) =(i*NL+j) - enddo - enddo - -*dvm$ parallel (m,n,j,i) on A4(i,j,n,m),private(ib,jb,nb,mb,ic,jc,erri) - do m=1,AN4 - do n=1,AN3 - do j=1,AN2 - do i=1,AN1 - if ( - * ((i-li) .eq.(((i-li)/k1i) * k1i)) .and. - * ((j-lj) .eq.(((j-lj)/k2j) *k2j)) .and. - * ((n-ln) .eq.(((n-ln)/k3n) * k3n)) .and. - * ((m-lm) .eq.(((m-lm)/k4m) *k4m)) .and. - * (((i-li)/k1i) .gt. 0) .and. - * (((j-lj)/k2j) .gt. 0) .and. - * (((n-ln)/k3n) .gt. 0) .and. - * (((m-lm)/k4m) .gt. 0) .and. - * (((i-li)/k1i) .le. BN1) .and. - * (((j-lj)/k2j) .le. BN2) .and. - * (((n-ln)/k3n) .le. BN3) .and. - * (((m-lm)/k4m) .le. BN4) - * ) then - ib = (i-li)/k1i - jb = (j-lj)/k2j - nb = (n-ln)/k3n - mb = (m-lm)/k4m - if (B4(ib,jb,nb,mb).eq. - * (ib*NL/10+jb*NL/100+nb*NL/1000+mb))then - else - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m - endif - endif - if ( - * (j .eq. lcj) .and. (n .eq. lcn) .and. - * ((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * ((m-lcm) .eq.(((m-lcm)/kc2m) *kc2m)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((m-lcm)/kc2m) .gt. 0) .and. - * (((i-lci)/kc1i) .le. CN1) .and. - * (((m-lcm)/kc2m) .le. CN2)) then - ic = (i-lci)/kc1i - jc = (m-lcm)/kc2m - if (C2(ic,jc) .eq.(ic*NL+jc)) then - else - erri = i - endif - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual (erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (C2,B4) - - end -C ----------------------------------------------------templ442 -c 442 TEMPLATE arrA1[BLOCK][BLOCK][BLOCK][BLOCK] -c ALIGN arrB[i][j][k][l] WITH arrA[l][i][j][k] -c ALIGN arrC[i][j][k][l] WITH [i+2][ j][k][ l+3] - - subroutine templ442 - integer, parameter :: AN1=7,AN2=7,AN3=7,AN4=7 - integer, parameter :: BN1=2,BN2=2,BN3=2,BN4=2 - integer, parameter :: CN1=4,CN2=4,CN3=4,CN4=4 - integer, parameter :: NL=10000,ER=100000 -c parameters for ALIGN arrB[i][j][n][m] WITH arrA4(k4i*m+li,k1j*i+lj,k2n*j+ln,k3m*n+lm) - integer, parameter :: k1i=0,k2i=0,k3i=0,k4i=1,li=0 - integer, parameter :: k1j=1,k2j=0,k3j=0,k4j=0,lj=0 - integer, parameter :: k1n=0,k2n=1,k3n=0,k4n=0,ln=0 - integer, parameter :: k1m=0,k2m=0,k3m=1,k4m=0,lm=0 -c parameters for ALIGN arrC[i][j][n][m] WITH arrA4(kc1i*i+lci,kc2j*j+lcj,kc3n*n+lcn,kc4m*m+lcm) - integer, parameter :: kc1i=1,kc2i=0,kc3i=0,kc4i=0,lci=2 - integer, parameter :: kc1j=0,kc2j=1,kc3j=0,kc4j=0,lcj=0 - integer, parameter :: kc1n=0,kc2n=0,kc3n=1,kc4n=0,lcn=0 - integer, parameter :: kc1m=0,kc2m=0,kc3m=0,kc4m=1,lcm=3 - - character*9 tname - integer, allocatable :: C4(:,:,:,:),B4(:,:,:,:) - integer s,cs,erri,i,j,n,m,ia,ja,na,ma,ib,jb,nb,mb,ic,jc,nc,mc -cdvm$ template A4(AN1,AN2,AN3,AN4) -cdvm$ ALIGN B4(i,j,n,m) WITH A4(k4i*m+li,k1j*i+lj,k2n*j+ln,k3m*n+lm) -cdvm$ ALIGN C4(i,j,n,m) WITH A4(kc1i*i+lci,kc2j*j+lcj, -cdvm$*kc3n*n+lcn,kc4m*m+lcm) -cdvm$ distribute A4(BLOCK,BLOCK,BLOCK,BLOCK) - - tname='templ442' - allocate (C4(CN1,CN2,CN3,CN4),B4(BN1,BN2,BN3,BN4)) - erri= ER - NNL=NL - -!dvm$ actual (erri) -!dvm$ region - -*dvm$ parallel (m,n,j,i) on B4(i,j,n,m) - do m=1,BN4 - do n=1,BN3 - do j=1,BN2 - do i=1,BN1 - B4(i,j,n,m) =(i*NL/10+j*NL/100+n*NL/1000+m) - enddo - enddo - enddo - enddo - -*dvm$ parallel (m,n,j,i) on C4(i,j,n,m) - do m=1,CN4 - do n=1,CN3 - do j=1,CN2 - do i=1,CN1 - C4(i,j,n,m) =(i*NL/10+j*NL/100+n*NL/1000+m) - enddo - enddo - enddo - enddo - -*dvm$ parallel (m,n,j,i) on A4(i,j,n,m), -*dvm$*private(ib,jb,nb,mb,ic,jc,nc,mc,erri) - do m=1,AN4 - do n=1,AN3 - do j=1,AN2 - do i=1,AN1 - if ( - * ((i-li) .eq.(((i-li)/k4i) * k4i)) .and. - * ((j-lj) .eq.(((j-lj)/k1j) *k1j)) .and. - * ((n-ln) .eq.(((n-ln)/k2n) * k2n)) .and. - * ((m-lm) .eq.(((m-lm)/k3m) *k3m)) .and. - * (((i-li)/k4i) .gt. 0) .and. - * (((j-lj)/k1j) .gt. 0) .and. - * (((n-ln)/k2n) .gt. 0) .and. - * (((m-lm)/k3m) .gt. 0) .and. - * (((i-li)/k4i) .le. BN4) .and. - * (((j-lj)/k1j) .le. BN1) .and. - * (((n-ln)/k2n) .le. BN2) .and. - * (((m-lm)/k3m) .le. BN3) - * ) then - mb = (i-li)/k4i - ib = (j-lj)/k1j - jb = (n-ln)/k2n - nb = (m-lm)/k3m - if (B4(ib,jb,nb,mb).eq. - * (ib*NL/10+jb*NL/100+nb*NL/1000+mb))then - else - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m - endif - endif - if ( - * ((i-lci) .eq.(((i-lci)/kc1i) * kc1i)) .and. - * ((j-lcj) .eq.(((j-lcj)/kc2j) *kc2j)) .and. - * ((n-lcn) .eq.(((n-lcn)/kc3n) * kc3n)) .and. - * ((m-lcm) .eq.(((m-lcm)/kc4m) *kc4m)) .and. - * (((i-lci)/kc1i) .gt. 0) .and. - * (((j-lcj)/kc2j) .gt. 0) .and. - * (((n-lcn)/kc3n) .gt. 0) .and. - * (((m-lcm)/kc4m) .gt. 0) .and. - * (((i-lci)/kc1i) .le. BN1) .and. - * (((j-lcj)/kc2j) .le. BN2) .and. - * (((n-lcn)/kc3n) .le. BN3) .and. - * (((m-lcm)/kc4m) .le. BN4) - * ) then - ic = (i-lci)/kc1i - jc = (j-lcj)/kc2j - nc = (n-lcn)/kc3n - mc = (m-lcm)/kc4m - if (C4(ic,jc,nc,mc) .eq. - * (ic*NL/10+jc*NL/100+nc*NL/1000+mc))then - else - erri = i*NL/10 + j*NL/100+ n*NL/1000+ m - endif - endif - enddo - enddo - enddo - enddo - -!dvm$ end region -!dvm$ get_actual(erri) - - if (erri .eq.ER) then - call ansyes(tname) - else - call ansno(tname) - endif - deallocate (C4,B4) - - end -C ------------------------------------------------- - - subroutine ansyes(name) - character*9 name - print *,name,' - complete' - end - subroutine ansno(name) - character*9 name - print *,name,' - ***error' - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/settings deleted file mode 100644 index 9a42eb0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/settings +++ /dev/null @@ -1,4 +0,0 @@ -MAX_PROC_COUNT=16 -MAX_DIM_PROC_COUNT=5 -SHARE_RESOURCES=1 -MAX_TIME=120 # In seconds diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/test-analyzer.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/test-analyzer.sh deleted file mode 100644 index 640168b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Correctness/test-analyzer.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -# This is analyzer of output of standard-formed tests -# Requires variables: LAUNCH_EXIT_CODE, STDOUT_FN, STDERR_FN -# Produces variables: SUBTEST_COUNT, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL -# Produces functions: analyze_subtest - -SUBTEST_COUNT=`grep -E 'complete|\*\*\*error' <"$STDOUT_FN" | wc -l` - -if [ `grep -E 'Assertion' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Assertion failed" - ERROR_LEVEL=5 -elif [ `grep -E 'RTS fatal' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS fatal" - ERROR_LEVEL=4 -elif [ `grep -E 'RTS err' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS err" - ERROR_LEVEL=3 -elif [ `grep "END OF" <"$STDOUT_FN" | wc -l` -eq 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Crash" - ERROR_LEVEL=2 -elif [ $LAUNCH_EXIT_CODE -ne 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Launch failure" - ERROR_LEVEL=6 -elif [ `grep '\*\*\*error' <"$STDOUT_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Has failed subtests" - ERROR_LEVEL=1 -else - TEST_PASSED=1 - RESULT_COMMENT="OK" - ERROR_LEVEL=0 -fi - -analyze_subtest() { - # Produces variables: SUBTEST_NAME, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL - local SUBTEST_LINE=`grep -E 'complete|\*\*\*error' <"$STDOUT_FN" | head -n $1 | tail -n 1` - SUBTEST_NAME=`echo "$SUBTEST_LINE" | awk '{print $1}'` - if [ `echo $SUBTEST_LINE | grep "complete" | wc -l` -eq 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Subtest failed" - ERROR_LEVEL=1 - else - TEST_PASSED=1 - RESULT_COMMENT="OK" - ERROR_LEVEL=0 - fi -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/Makefile deleted file mode 100644 index 856ab65..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/Makefile +++ /dev/null @@ -1,66 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=bt -BENCHMARKU=BT - -include ../config/make.def -include ../sys/make.common - -SOURCES = bt.fdv \ - set_constants.fdv \ - initialize.fdv \ - exact_solution.fdv \ - verify.fdv \ - compute_errors.fdv \ - timers.fdv \ - print_result.fdv - -SOURCES_MPI = z_solve_mpi.fdv y_solve_mpi.fdv x_solve_mpi.fdv compute_rhs_mpi.fdv exact_rhs.fdv -SOURCES_SINGLE = z_solve.fdv y_solve.fdv x_solve.fdv compute_rhs.fdv exact_rhs.fdv -SOURCES_BLOCK = z_solve_block.fdv y_solve_block.fdv x_solve_block.fdv compute_rhs_block.fdv exact_rhs_block.fdv -SOURCES_BLOCK1 = z_solve_block.fdv y_solve_block.fdv x_solve_block.fdv compute_rhs.fdv exact_rhs.fdv -SOURCES_BLOCK2 = z_solve_block.fdv y_solve_block.fdv x_solve_block.fdv compute_rhs_block2.fdv exact_rhs.fdv - -OBJS = ${SOURCES:.fdv=.o} -OBJS_SINGLE = ${SOURCES_SINGLE:.fdv=.o} -OBJS_MPI = ${SOURCES_MPI:.fdv=.o} -OBJS_BLOCK = ${SOURCES_BLOCK:.fdv=.o} -OBJS_BLOCK1 = ${SOURCES_BLOCK1:.fdv=.o} -OBJS_BLOCK2 = ${SOURCES_BLOCK2:.fdv=.o} - -${PROGRAM}: config - @if [ "$(VERSION)" = "MPI" ] ; then \ - ${MAKE} MPI_VER; \ - else \ - if [ "$(VERSION)" = "BLOCK" ] ; then \ - ${MAKE} BLOCK_VER; \ - else \ - if [ "$(VERSION)" = "BLOCK1" ] ; then \ - ${MAKE} BLOCK_VER1; \ - else \ - ${MAKE} SINGLE_VER;\ - fi \ - fi \ - fi - -MPI_VER: $(OBJS) $(OBJS_MPI) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_MPI) - -SINGLE_VER: $(OBJS) $(OBJS_SINGLE) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_SINGLE) - -BLOCK_VER: $(OBJS) $(OBJS_BLOCK) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_BLOCK) - -BLOCK_VER1: $(OBJS) $(OBJS_BLOCK1) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_BLOCK1) - -BLOCK_VER2: $(OBJS) $(OBJS_BLOCK2) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_BLOCK2) - -%.o: %.fdv npbparams.h header3d.h - ${F77} f ${FFLAGS} -c -o $@ $< - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c *.f diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/TODO_make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/TODO_make.bat deleted file mode 100644 index 31052e1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/TODO_make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams BT %CLASS% -CALL %F77% %OPT% bt 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist bt.exe ( - copy bt.exe %BIN%\bt.%CLASS%.x.exe - del bt.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/bt.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/bt.fdv deleted file mode 100644 index 4e6bab8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/bt.fdv +++ /dev/null @@ -1,120 +0,0 @@ - -!--------------------------------------------------------------------- - program btdv3 - - include 'header3d.h' - integer i,niter,step,fstatus,n3 - double precision navg,mflops - external timer_read,verify - double precision tmax,timer_read - logical verified - character class - -!--------------------------------------------------------------------- -! Root node reads input file (if it exists) else takes -! defaults from parameters -!--------------------------------------------------------------------- - write (unit = *,fmt = 1000) - open (unit = 2,file = 'inputbt.data',status = 'old',iostat = fstat - &us) - if (fstatus .eq. 0) then - write (unit = *,fmt = 233) -233 format(' Reading from input file inputbt.data') - read (unit = 2,fmt = *) niter - read (unit = 2,fmt = *) dt - read (unit = 2,fmt = *) grid_points(1),grid_points(2),grid_poin - &ts(3) - close (unit = 2) - else - write (unit = *,fmt = 234) - niter = niter_default - dt = dt_default - grid_points(1) = problem_size - grid_points(2) = problem_size - grid_points(3) = problem_size - endif -234 format(' No input file inputbt.data. Using compiled defaults') - write (unit = *,fmt = 1001) grid_points(1),grid_points(2),grid_poi - &nts(3) - write (unit = *,fmt = 1002) niter,dt -1000 format(//, ' NAS Parallel Benchmarks 3.3.1 - DVMH version',' - BT - &Benchmark ',/) -1001 format(' Size: ', i3, 'x', i3, 'x', i3) -1002 format(' Iterations: ', i3, ' dt: ', F10.6) - if (grid_points(1) .gt. imax .or. grid_points(2) .gt. jmax .or. gr - &id_points(3) .gt. kmax) then - print *, (grid_points(i), i = 1,3) - print *, ' Problem size too big for compiled array sizes' - goto 999 - endif - open (unit = 2,file = 'inputStage',status = 'old',iostat = fstat - &us) - if (fstatus .eq. 0) then - read (unit = 2,fmt = *) stage_n - close (unit = 2) - else - stage_n = 0 - endif - write(*,*) 'stage = ', stage_n - - call set_constants() - call initialize() - call exact_rhs() - -! ************* DO 2 iterations for touch all code - call adi_first - call adi_first - call initialize - - call timer_clear(1) - call timer_start(1) - do step = 1,niter - if (mod (step,20) .eq. 0 .or. step .eq. 1) then - write (unit = *,fmt = 200) step -200 format(' Time step ', i8) - endif - call adi() - enddo - call timer_stop(1) - tmax = timer_read (1) - call verify(niter,class,verified) - n3 = grid_points(1) * grid_points(2) * grid_points(3) - navg = (grid_points(1) + grid_points(2) + grid_points(3)) / 3.0 - if (tmax .ne. 0.) then - mflops = 1.0e-6 * float (niter) * (3478.8 * float (n3) - 17655. - &7 * navg** 2 + 28023.7 * navg) / tmax - else - mflops = 0.0 - endif - call print_results('BT',class,grid_points(1),grid_points(2),grid_p - &oints(3),niter,tmax,mflops,' floating point',verified,npb - &version) - -! ,compiletime, cs1, cs2, cs3, cs4, cs5,cs6, '(none)') -999 continue - end - - subroutine adi_first() - call compute_rhs() - call x_solve() - call y_solve() - call z_solve() - return - end - - subroutine adi () - -!DVM$ interval 1 - call compute_rhs() -!DVM$ end interval -!DVM$ interval 11 - call x_solve() -!DVM$ end interval -!DVM$ interval 12 - call y_solve() -!DVM$ end interval -!DVM$ interval 13 - call z_solve() -!DVM$ end interval - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_errors.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_errors.fdv deleted file mode 100644 index 15e0d30..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_errors.fdv +++ /dev/null @@ -1,117 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! this function computes the norm of the difference between the -! computed solution and the exact solution -!--------------------------------------------------------------------- - subroutine error_norm (rms) - - include 'header3d.h' - integer i,j,k,m,d - double precision xi,eta,zeta,u_exact(5),rms(5),add - double precision r1,r2,r3,r4,r5 - do m = 1,5 - rms(m) = 0.0d0 - enddo - r1 = 0.0d0 - r2 = 0.0d0 - r3 = 0.0d0 - r4 = 0.0d0 - r5 = 0.0d0 - -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON u(*,i,j,k), -!DVM$& REDUCTION(SUM(r1),SUM(r2),SUM(r3),SUM(r4),SUM(r5)), -!DVM$&private(u_exact,xi,eta,zeta,m,add) - do k = 0,problem_size - 1 - do j = 0,problem_size - 1 - do i = 0,problem_size - 1 - zeta = dble (k) * dnzm1 - eta = dble (j) * dnym1 - xi = dble (i) * dnxm1 - -! call exact_solution(xi, eta, zeta, u_exact) - do m = 1,5 - u_exact(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + - & xi * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6 - &) + eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * - &(ce(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - add = u(1,i,j,k) - u_exact(1) - r1 = r1 + add * add - add = u(2,i,j,k) - u_exact(2) - r2 = r2 + add * add - add = u(3,i,j,k) - u_exact(3) - r3 = r3 + add * add - add = u(4,i,j,k) - u_exact(4) - r4 = r4 + add * add - add = u(5,i,j,k) - u_exact(5) - r5 = r5 + add * add - enddo - enddo - enddo - -!DVM$ end region - rms(1) = r1 - rms(2) = r2 - rms(3) = r3 - rms(4) = r4 - rms(5) = r5 - do m = 1,5 - do d = 1,3 - rms(m) = rms(m) / dble (grid_points(d) - 2) - enddo - rms(m) = dsqrt (rms(m)) - enddo - return - end - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine rhs_norm (rms) - - include 'header3d.h' - integer i,j,k,d,m - double precision rms(5),add,r1,r2,r3,r4,r5 - r1 = 0.0d0 - r2 = 0.0d0 - r3 = 0.0d0 - r4 = 0.0d0 - r5 = 0.0d0 - -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), -!DVM$&REDUCTION(SUM(r1),SUM(r2),SUM(r3),SUM(r4),SUM(r5)), -!DVM$&private(add) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - add = rhs(1,i,j,k) - r1 = r1 + add * add - add = rhs(2,i,j,k) - r2 = r2 + add * add - add = rhs(3,i,j,k) - r3 = r3 + add * add - add = rhs(4,i,j,k) - r4 = r4 + add * add - add = rhs(5,i,j,k) - r5 = r5 + add * add - enddo - enddo - enddo - -!DVM$ end region - rms(1) = r1 - rms(2) = r2 - rms(3) = r3 - rms(4) = r4 - rms(5) = r5 - do m = 1,5 - do d = 1,3 - rms(m) = rms(m) / dble (grid_points(d) - 2) - enddo - rms(m) = dsqrt (rms(m)) - enddo - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs.fdv deleted file mode 100644 index 6f3b785..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs.fdv +++ /dev/null @@ -1,218 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine compute_rhs () - - include 'header3d.h' - integer i,j,k,m - double precision rho_inv,uijk,up1,um1,vijk,vp1,vm1,wijk,wp1,wm1,r - &hs_(5) - -!DVM$ region out(rho_i, us, vs, ws, qs, square) -!DVM$ PARALLEL (k,j,i) ON us(i,j,k), SHADOW_COMPUTE, -!DVM$& PRIVATE(rho_inv,m),cuda_block(128) - do k = 0,problem_size - 1 - do j = 0,problem_size - 1 - do i = 0,problem_size - 1 - rho_inv = 1.0d0 / u(1,i,j,k) - rho_i(i,j,k) = rho_inv - us(i,j,k) = u(2,i,j,k) * rho_inv - vs(i,j,k) = u(3,i,j,k) * rho_inv - ws(i,j,k) = u(4,i,j,k) * rho_inv - square(i,j,k) = 0.5d0 * (u(2,i,j,k) * u(2,i,j,k) + u(3,i, - &j,k) * u(3,i,j,k) + u(4,i,j,k) * u(4,i,j,k)) * rho_inv - qs(i,j,k) = square(i,j,k) * rho_inv - do m = 1,5 - rhs(m,i,j,k) = forcing(m,i,j,k) - enddo - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! compute xi-direction fluxes -!--------------------------------------------------------------------- -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), PRIVATE(uijk,up1,um1,m, -!DVM$&vijk,vp1,vm1,wijk,wp1,wm1,rhs_),cuda_block(32) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - uijk = us(i,j,k) - up1 = us(i + 1,j,k) - um1 = us(i - 1,j,k) - rhs_(1) = forcing(1,i,j,k) - rhs_(2) = forcing(2,i,j,k) - rhs_(3) = forcing(3,i,j,k) - rhs_(4) = forcing(4,i,j,k) - rhs_(5) = forcing(5,i,j,k) - - rhs_(1) = rhs_(1) + dx1tx1 * (u(1,i + 1,j,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i - 1,j,k)) - tx2 * (u(2,i + 1,j,k) - u(2,i - 1,j,k - &)) - rhs_(2) = rhs_(2) + dx2tx1 * (u(2,i + 1,j,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i - 1,j,k)) + xxcon2 * con43 * (up1 - 2.0d0 * uijk - &+ um1) - tx2 * (u(2,i + 1,j,k) * up1 - u(2,i - 1,j,k) * um1 + (u(5 - &,i + 1,j,k) - square(i + 1,j,k) - u(5,i - 1,j,k) + square(i - 1,j, - &k)) * c2) - rhs_(3) = rhs_(3) + dx3tx1 * (u(3,i + 1,j,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i - 1,j,k)) + xxcon2 * (vs(i + 1,j,k) - 2.0d0 * vs( - &i,j,k) + vs(i - 1,j,k)) - tx2 * (u(3,i + 1,j,k) * up1 - u(3,i - 1, - &j,k) * um1) - rhs_(4) = rhs_(4) + dx4tx1 * (u(4,i + 1,j,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i - 1,j,k)) + xxcon2 * (ws(i + 1,j,k) - 2.0d0 * ws( - &i,j,k) + ws(i - 1,j,k)) - tx2 * (u(4,i + 1,j,k) * up1 - u(4,i - 1, - &j,k) * um1) - rhs_(5) = rhs_(5) + dx5tx1 * (u(5,i + 1,j,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i - 1,j,k)) + xxcon3 * (qs(i + 1,j,k) - 2.0d0 * qs( - &i,j,k) + qs(i - 1,j,k)) + xxcon4 * (up1 * up1 - 2.0d0 * uijk * uij - &k + um1 * um1) + xxcon5 * (u(5,i + 1,j,k) * rho_i(i + 1,j,k) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i - 1,j,k) * rho_i(i - 1,j,k) - &) - tx2 * ((c1 * u(5,i + 1,j,k) - c2 * square(i + 1,j,k)) * up1 - - &(c1 * u(5,i - 1,j,k) - c2 * square(i - 1,j,k)) * um1) - if (i .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k)) - enddo - else if (i .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i - 1, - &j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k - &)) - enddo - else if (i .ge. 3 .and. i .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m - &,i + 2,j,k)) - enddo - else if (i .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k)) - enddo - else if (i .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.d0 * - & u(m,i - 1,j,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - vijk = vs(i,j,k) - vp1 = vs(i,j + 1,k) - vm1 = vs(i,j - 1,k) - rhs_(1) = rhs_(1) + dy1ty1 * (u(1,i,j + 1,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j - 1,k)) - ty2 * (u(3,i,j + 1,k) - u(3,i,j - 1,k - &)) - rhs_(2) = rhs_(2) + dy2ty1 * (u(2,i,j + 1,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j - 1,k)) + yycon2 * (us(i,j + 1,k) - 2.0d0 * us( - &i,j,k) + us(i,j - 1,k)) - ty2 * (u(2,i,j + 1,k) * vp1 - u(2,i,j - - &1,k) * vm1) - rhs_(3) = rhs_(3) + dy3ty1 * (u(3,i,j + 1,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j - 1,k)) + yycon2 * con43 * (vp1 - 2.0d0 * vijk - &+ vm1) - ty2 * (u(3,i,j + 1,k) * vp1 - u(3,i,j - 1,k) * vm1 + (u(5 - &,i,j + 1,k) - square(i,j + 1,k) - u(5,i,j - 1,k) + square(i,j - 1, - &k)) * c2) - rhs_(4) = rhs_(4) + dy4ty1 * (u(4,i,j + 1,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j - 1,k)) + yycon2 * (ws(i,j + 1,k) - 2.0d0 * ws( - &i,j,k) + ws(i,j - 1,k)) - ty2 * (u(4,i,j + 1,k) * vp1 - u(4,i,j - - &1,k) * vm1) - rhs_(5) = rhs_(5) + dy5ty1 * (u(5,i,j + 1,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j - 1,k)) + yycon3 * (qs(i,j + 1,k) - 2.0d0 * qs( - &i,j,k) + qs(i,j - 1,k)) + yycon4 * (vp1 * vp1 - 2.0d0 * vijk * vij - &k + vm1 * vm1) + yycon5 * (u(5,i,j + 1,k) * rho_i(i,j + 1,k) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i,j - 1,k) * rho_i(i,j - 1,k) - &) - ty2 * ((c1 * u(5,i,j + 1,k) - c2 * square(i,j + 1,k)) * vp1 - - &(c1 * u(5,i,j - 1,k) - c2 * square(i,j - 1,k)) * vm1) - if (j .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k)) - enddo - else if (j .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j - - &1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k - &)) - enddo - else if (j .ge. 3 .and. j .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m - &,i,j + 2,k)) - enddo - else if (j .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k)) - enddo - else if (j .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.d0 * - & u(m,i,j - 1,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - wijk = ws(i,j,k) - wp1 = ws(i,j,k + 1) - wm1 = ws(i,j,k - 1) - rhs_(1) = rhs_(1) + dz1tz1 * (u(1,i,j,k + 1) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j,k - 1)) - tz2 * (u(4,i,j,k + 1) - u(4,i,j,k - 1 - &)) - rhs_(2) = rhs_(2) + dz2tz1 * (u(2,i,j,k + 1) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j,k - 1)) + zzcon2 * (us(i,j,k + 1) - 2.0d0 * us( - &i,j,k) + us(i,j,k - 1)) - tz2 * (u(2,i,j,k + 1) * wp1 - u(2,i,j,k - &- 1) * wm1) - rhs_(3) = rhs_(3) + dz3tz1 * (u(3,i,j,k + 1) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j,k - 1)) + zzcon2 * (vs(i,j,k + 1) - 2.0d0 * vs( - &i,j,k) + vs(i,j,k - 1)) - tz2 * (u(3,i,j,k + 1) * wp1 - u(3,i,j,k - &- 1) * wm1) - rhs_(4) = rhs_(4) + dz4tz1 * (u(4,i,j,k + 1) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j,k - 1)) + zzcon2 * con43 * (wp1 - 2.0d0 * wijk - &+ wm1) - tz2 * (u(4,i,j,k + 1) * wp1 - u(4,i,j,k - 1) * wm1 + (u(5 - &,i,j,k + 1) - square(i,j,k + 1) - u(5,i,j,k - 1) + square(i,j,k - - &1)) * c2) - rhs_(5) = rhs_(5) + dz5tz1 * (u(5,i,j,k + 1) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j,k - 1)) + zzcon3 * (qs(i,j,k + 1) - 2.0d0 * qs( - &i,j,k) + qs(i,j,k - 1)) + zzcon4 * (wp1 * wp1 - 2.0d0 * wijk * wij - &k + wm1 * wm1) + zzcon5 * (u(5,i,j,k + 1) * rho_i(i,j,k + 1) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i,j,k - 1) * rho_i(i,j,k - 1) - &) - tz2 * ((c1 * u(5,i,j,k + 1) - c2 * square(i,j,k + 1)) * wp1 - - &(c1 * u(5,i,j,k - 1) - c2 * square(i,j,k - 1)) * wm1) - if (k .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2)) - enddo - else if (k .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j,k - &- 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2 - &)) - enddo - else if (k .ge. 3 .and. k .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m - &,i,j,k + 2)) - enddo - else if (k .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1)) - enddo - else if (k .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.d0 * - & u(m,i,j,k - 1) + 5.d0 * u(m,i,j,k)) - enddo - endif - rhs(1,i,j,k) = rhs_(1) * dt - rhs(2,i,j,k) = rhs_(2) * dt - rhs(3,i,j,k) = rhs_(3) * dt - rhs(4,i,j,k) = rhs_(4) * dt - rhs(5,i,j,k) = rhs_(5) * dt - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block.fdv deleted file mode 100644 index 924af91..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block.fdv +++ /dev/null @@ -1,484 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine compute_rhs () - - include 'header3d.h' - integer i,j,k,m,z - double precision rho_inv,uijk,up1,um1,vijk,vp1,vm1,wijk,wp1,wm1,r - &hs_(5),s1,s2,s3,s4,s5,s6,s7,qs1,qs2,qs3,qs4,qs5,qs6,qs7 - double precision ue_(-2:2, 5), buf_(-2:2, 5),cuf_(-2:2),q_(-2:2) - double precision dtemp(5), xi, eta, zeta, dtpp -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON us(i,j,k),PRIVATE(m),cuda_block(128) - do k = 0,problem_size - 1 - do j = 0,problem_size - 1 - do i = 0,problem_size - 1 - do m = 1,5 - rhs(m,i,j,k) = 0 - enddo - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! compute xi-direction fluxes -!--------------------------------------------------------------------- -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), PRIVATE(uijk,up1,um1,m, -!DVM$&vijk,vp1,vm1,wijk,wp1,wm1,rhs_,s1,s2,s3,s4,s5,s6,s7, -!DVM$&qs1,qs2,qs3,qs4,qs5,qs6,qs7, -!DVM$&zeta,eta,xi,dtemp,buf_,cuf_,q_,dtpp,z,ue_),cuda_block(32) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - rhs_(1) = 0 - rhs_(2) = 0 - rhs_(3) = 0 - rhs_(4) = 0 - rhs_(5) = 0 - - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - do z = -2, 2 - xi = dble(i + z) * dnxm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,2) * buf_(z,2) - buf_(z,1) = cuf_(z) + buf_(z,3) * buf_(z,3) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - rhs_(1) = rhs_(1) - - > tx2*( ue_(1,2)-ue_(-1,2) )+ - > dx1tx1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - rhs_(2) = rhs_(2) - tx2 * ( - > (ue_(1,2)*buf_(1,2)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,2)*buf_(-1,2)+c2*(ue_(-1,5)-q_(-1))))+ - > xxcon1*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dx2tx1*( ue_(1,2)-2.0d0* ue_(0,2)+ue_(-1,2)) - - rhs_(3) = rhs_(3) - tx2 * ( - > ue_(1,3)*buf_(1,2)-ue_(-1,3)*buf_(-1,2))+ - > xxcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dx3tx1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - rhs_(4) = rhs_(4) - tx2*( - > ue_(1,4)*buf_(1,2)-ue_(-1,4)*buf_(-1,2))+ - > xxcon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dx4tx1*( ue_(1,4)-2.0d0* ue_(0,4)+ ue_(-1,4)) - - rhs_(5) = rhs_(5) - tx2*( - > buf_(1,2)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,2)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*xxcon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > xxcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > xxcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dx5tx1*( ue_(1,5)-2.0d0* ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(i .eq. 1) then - rhs_(m) = rhs_(m) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(i .eq. 2) then - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(i .eq. problem_size-3) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(i .eq. problem_size-2) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - rhs_(m) = rhs_(m) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - - zeta = dble(k) * dnzm1 - xi = dble(i) * dnxm1 - do z = -2, 2 - eta = dble(j + z) * dnym1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,3) * buf_(z,3) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3) - > *ue_(z,3) + buf_(z,4) * ue_(z,4)) - enddo - - rhs_(1) = rhs_(1) - - > ty2*( ue_(1,3)-ue_(-1,3) )+ - > dy1ty1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - rhs_(2) = rhs_(2) - ty2*( - > ue_(1,2)*buf_(1,3)-ue_(-1,2)*buf_(-1,3))+ - > yycon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dy2ty1*( ue_(1,2)-2.0* ue_(0,2)+ ue_(-1,2)) - - rhs_(3) = rhs_(3) - ty2*( - > (ue_(1,3)*buf_(1,3)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,3)*buf_(-1,3)+c2*(ue_(-1,5)-q_(-1))))+ - > yycon1*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dy3ty1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - rhs_(4) = rhs_(4) - ty2*( - > ue_(1,4)*buf_(1,3)-ue_(-1,4)*buf_(-1,3))+ - > yycon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dy4ty1*( ue_(1,4)-2.0d0*ue_(0,4)+ ue_(-1,4)) - - rhs_(5) = rhs_(5) - ty2*( - > buf_(1,3)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,3)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*yycon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > yycon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > yycon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dy5ty1*(ue_(1,5)-2.0d0*ue_(0,5)+ue_(-1,5)) - do m = 1, 5 - if(j .eq. 1) then - rhs_(m) = rhs_(m) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(j .eq. 2) then - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(j .eq. problem_size-3) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(j .eq. problem_size-2) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - rhs_(m) = rhs_(m) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - - xi = dble(i) * dnxm1 - eta = dble(j) * dnym1 - do z = -2, 2 - zeta = dble(k + z) * dnzm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,4) * buf_(z,4) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,3) * buf_(z,3) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - rhs_(1) = rhs_(1) - - > tz2*( ue_(1,4)-ue_(-1,4) )+ - > dz1tz1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - rhs_(2) = rhs_(2) - tz2 * ( - > ue_(1,2)*buf_(1,4)-ue_(-1,2)*buf_(-1,4))+ - > zzcon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dz2tz1*( ue_(1,2)-2.0d0* ue_(0,2)+ ue_(-1,2)) - - rhs_(3) = rhs_(3) - tz2 * ( - > ue_(1,3)*buf_(1,4)-ue_(-1,3)*buf_(-1,4))+ - > zzcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dz3tz1*(ue_(1,3)-2.0d0*ue_(0,3)+ue_(-1,3)) - - rhs_(4) = rhs_(4) - tz2 * ( - > (ue_(1,4)*buf_(1,4)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,4)*buf_(-1,4)+c2*(ue_(-1,5)-q_(-1))))+ - > zzcon1*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dz4tz1*( ue_(1,4)-2.0d0*ue_(0,4) +ue_(-1,4)) - - rhs_(5) = rhs_(5) - tz2 * ( - > buf_(1,4)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,4)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*zzcon3*(buf_(1,1)-2.0d0*buf_(0,1) - > +buf_(-1,1))+ - > zzcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > zzcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dz5tz1*( ue_(1,5)-2.0d0*ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(k .eq. 1) then - rhs_(m) = rhs_(m) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(k .eq. 2) then - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(k .eq. problem_size-3) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(k .eq. problem_size-2) then - rhs_(m) = rhs_(m) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - rhs_(m) = rhs_(m) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - - do m = 1, 5 - rhs_(m) = -1.d0 * rhs_(m) - end do - - uijk = u(2,i,j,k) / u(1,i,j,k) - up1 = u(2,i + 1,j,k) / u(1,i + 1,j,k) - um1 = u(2,i - 1,j,k) / u(1,i - 1,j,k) - - vijk = u(3,i,j,k) / u(1,i,j,k) - vp1 = u(3,i,j + 1,k) / u(1,i,j + 1,k) - vm1 = u(3,i,j - 1,k) / u(1,i,j - 1,k) - - wijk = u(4,i,j,k) / u(1,i,j,k) - wp1 = u(4,i,j,k + 1) / u(1,i,j,k + 1) - wm1 = u(4,i,j,k - 1) / u(1,i,j,k - 1) - - s1 = 0.5d0 * (u(2,i,j,k) * u(2,i,j,k) + u(3,i, - &j,k) * u(3,i,j,k) + u(4,i,j,k) * u(4,i,j,k)) / u(1,i,j,k) - s2 = 0.5d0 * (u(2,i+1,j,k) * u(2,i+1,j,k) + u(3,i - &+1,j,k) * u(3,i+1,j,k) + u(4,i+1,j,k) * u(4,i+1,j,k)) / - &u(1,i+1,j,k) - s3 = 0.5d0 * (u(2,i-1,j,k) * u(2,i-1,j,k) + u(3,i - &-1,j,k) * u(3,i-1,j,k) + u(4,i-1,j,k) * u(4,i-1,j,k)) / - &u(1,i-1,j,k) - s4 = 0.5d0 * (u(2,i,j+1,k) * u(2,i,j+1,k) + u(3,i, - &j+1,k) * u(3,i,j+1,k) + u(4,i,j+1,k) * u(4,i,j+1,k)) / - &u(1,i,j+1,k) - s5 = 0.5d0 * (u(2,i,j-1,k) * u(2,i,j-1,k) + u(3,i, - &j-1,k) * u(3,i,j-1,k) + u(4,i,j-1,k) * u(4,i,j-1,k)) / - &u(1,i,j-1,k) - s6 = 0.5d0 * (u(2,i,j,k+1) * u(2,i,j,k+1) + u(3,i, - &j,k+1) * u(3,i,j,k+1) + u(4,i,j,k+1) * u(4,i,j,k+1)) / - &u(1,i,j,k+1) - s7 = 0.5d0 * (u(2,i,j,k-1) * u(2,i,j,k-1) + u(3,i, - &j,k-1) * u(3,i,j,k-1) + u(4,i,j,k-1) * u(4,i,j,k-1)) / - &u(1,i,j,k-1) - - qs1 = s1 / u(1,i,j,k) - qs2 = s2 / u(1,i+1,j,k) - qs3 = s3 / u(1,i-1,j,k) - qs4 = s4 / u(1,i,j+1,k) - qs5 = s5 / u(1,i,j-1,k) - qs6 = s6 / u(1,i,j,k+1) - qs7 = s7 / u(1,i,j,k-1) - -! rhs_(1) = forcing(1,i,j,k) -! rhs_(2) = forcing(2,i,j,k) -! rhs_(3) = forcing(3,i,j,k) -! rhs_(4) = forcing(4,i,j,k) -! rhs_(5) = forcing(5,i,j,k) - - rhs_(1) = rhs_(1) + dx1tx1 * (u(1,i + 1,j,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i - 1,j,k)) - tx2 * (u(2,i + 1,j,k) - u(2,i - 1,j,k - &)) - rhs_(2) = rhs_(2) + dx2tx1 * (u(2,i + 1,j,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i - 1,j,k)) + xxcon2 * con43 * (up1 - 2.0d0 * uijk - &+ um1) - tx2 * (u(2,i + 1,j,k) * up1 - u(2,i - 1,j,k) * um1 + (u(5 - &,i + 1,j,k) - s2 - u(5,i - 1,j,k) + s3) * c2) - rhs_(3) = rhs_(3) + dx3tx1 * (u(3,i + 1,j,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i - 1,j,k)) + xxcon2 * (u(3,i + 1,j,k) / - &u(1,i + 1,j,k) - 2.0d0 * vijk + u(3,i - 1,j,k)/u(1,i - 1,j,k)) - &- tx2 * (u(3,i + 1,j,k) * up1 - u(3,i - 1,j,k) * um1) - rhs_(4) = rhs_(4) + dx4tx1 * (u(4,i + 1,j,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i - 1,j,k)) + xxcon2 * (u(4,i + 1,j,k) / - &u(1,i + 1,j,k) - 2.0d0 * wijk + u(4,i - 1,j,k) / u(1,i - 1,j,k)) - &- tx2 * (u(4,i + 1,j,k) * up1 - u(4,i - 1,j,k) * um1) - rhs_(5) = rhs_(5) + dx5tx1 * (u(5,i + 1,j,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i - 1,j,k)) + xxcon3 * (qs2 - 2.0d0 * qs1 + - &qs3) + xxcon4 * (up1 * up1 - 2.0d0 * uijk * uij - &k + um1 * um1) + xxcon5 * (u(5,i + 1,j,k) * 1.0d0 / u(1,i + 1,j,k) - & - 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i - 1,j,k) * - &1.0d0 / u(1,i - 1,j,k)) - tx2 * ((c1 * u(5,i + 1,j,k) - - &c2 * s2) * up1 - - &(c1 * u(5,i - 1,j,k) - c2 * s3) * um1) - if (i .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k)) - enddo - else if (i .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i - 1, - &j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k - &)) - enddo - else if (i .ge. 3 .and. i .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m - &,i + 2,j,k)) - enddo - else if (i .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k)) - enddo - else if (i .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.d0 * - & u(m,i - 1,j,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - - rhs_(1) = rhs_(1) + dy1ty1 * (u(1,i,j + 1,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j - 1,k)) - ty2 * (u(3,i,j + 1,k) - u(3,i,j - 1,k - &)) - rhs_(2) = rhs_(2) + dy2ty1 * (u(2,i,j + 1,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j - 1,k)) + yycon2 * (u(2,i,j + 1,k) / - &u(1,i,j + 1,k) - 2.0d0 * uijk + u(2,i,j - 1,k)/u(1,i,j - 1,k)) - &- ty2 * (u(2,i,j + 1,k) * vp1 - u(2,i,j -1,k) * vm1) - rhs_(3) = rhs_(3) + dy3ty1 * (u(3,i,j + 1,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j - 1,k)) + yycon2 * con43 * (vp1 - 2.0d0 * vijk - &+ vm1) - ty2 * (u(3,i,j + 1,k) * vp1 - u(3,i,j - 1,k) * vm1 + (u(5 - &,i,j + 1,k) - s4 - u(5,i,j - 1,k) + s5) * c2) - rhs_(4) = rhs_(4) + dy4ty1 * (u(4,i,j + 1,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j - 1,k)) + yycon2 * (u(4,i,j + 1,k) / - &u(1,i,j + 1,k) - 2.0d0 * wijk + u(4,i,j - 1,k) / u(1,i,j - 1,k)) - &- ty2 * (u(4,i,j + 1,k) * vp1 - u(4,i,j - 1,k) * vm1) - rhs_(5) = rhs_(5) + dy5ty1 * (u(5,i,j + 1,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j - 1,k)) + yycon3 * (qs4 - 2.0d0 * qs1 - & + qs5) + yycon4 * (vp1 * vp1 - 2.0d0 * vijk * vij - &k + vm1 * vm1) + yycon5 * (u(5,i,j + 1,k) * 1.0d0 / u(1,i,j + 1,k) - &- 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i,j - 1,k) * - &1.0d0 / u(1,i,j - 1,k) - &) - ty2 * ((c1 * u(5,i,j + 1,k) - c2 * s4) * vp1 - - &(c1 * u(5,i,j - 1,k) - c2 * s5) * vm1) - if (j .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k)) - enddo - else if (j .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j - - &1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k - &)) - enddo - else if (j .ge. 3 .and. j .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m - &,i,j + 2,k)) - enddo - else if (j .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k)) - enddo - else if (j .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.d0 * - & u(m,i,j - 1,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - - rhs_(1) = rhs_(1) + dz1tz1 * (u(1,i,j,k + 1) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j,k - 1)) - tz2 * (u(4,i,j,k + 1) - u(4,i,j,k - 1 - &)) - rhs_(2) = rhs_(2) + dz2tz1 * (u(2,i,j,k + 1) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j,k - 1)) + zzcon2 * (u(2,i,j,k + 1) / - &u(1,i,j,k + 1) - 2.0d0 * uijk + u(2,i,j,k - 1) / u(1,i,j,k - 1)) - &- tz2 * (u(2,i,j,k + 1) * wp1 - u(2,i,j,k - 1) * wm1) - rhs_(3) = rhs_(3) + dz3tz1 * (u(3,i,j,k + 1) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j,k - 1)) + zzcon2 * (u(3,i,j,k + 1) / - &u(1,i,j,k + 1) - 2.0d0 * vijk + u(3,i,j,k - 1) / u(1,i,j,k - 1)) - &- tz2 * (u(3,i,j,k + 1) * wp1 - u(3,i,j,k - 1) * wm1) - rhs_(4) = rhs_(4) + dz4tz1 * (u(4,i,j,k + 1) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j,k - 1)) + zzcon2 * con43 * (wp1 - 2.0d0 * wijk - &+ wm1) - tz2 * (u(4,i,j,k + 1) * wp1 - u(4,i,j,k - 1) * wm1 + (u(5 - &,i,j,k + 1) - s6 - u(5,i,j,k - 1) + s7) * c2) - rhs_(5) = rhs_(5) + dz5tz1 * (u(5,i,j,k + 1) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j,k - 1)) + zzcon3 * (qs6 - 2.0d0 * qs1 + - &qs7) + zzcon4 * (wp1 * wp1 - 2.0d0 * wijk * wij - &k + wm1 * wm1) + zzcon5 * (u(5,i,j,k + 1) * 1.0d0 / u(1,i,j,k+1) - &- 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i,j,k - 1) * - &1.0d0 / u(1,i,j,k-1) - &) - tz2 * ((c1 * u(5,i,j,k + 1) - c2 * s6) * wp1 - - &(c1 * u(5,i,j,k - 1) - c2 * s7) * wm1) - if (k .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2)) - enddo - else if (k .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j,k - &- 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2 - &)) - enddo - else if (k .ge. 3 .and. k .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m - &,i,j,k + 2)) - enddo - else if (k .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1)) - enddo - else if (k .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.d0 * - & u(m,i,j,k - 1) + 5.d0 * u(m,i,j,k)) - enddo - endif - rhs(1,i,j,k) = rhs_(1) * dt - rhs(2,i,j,k) = rhs_(2) * dt - rhs(3,i,j,k) = rhs_(3) * dt - rhs(4,i,j,k) = rhs_(4) * dt - rhs(5,i,j,k) = rhs_(5) * dt - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block2.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block2.fdv deleted file mode 100644 index 4a8a164..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_block2.fdv +++ /dev/null @@ -1,247 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine compute_rhs () - - include 'header3d.h' - integer i,j,k,m,z - double precision rho_inv,uijk,up1,um1,vijk,vp1,vm1,wijk,wp1,wm1,r - &hs_(5),s1,s2,s3,s4,s5,s6,s7,qs1,qs2,qs3,qs4,qs5,qs6,qs7 -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON us(i,j,k),PRIVATE(m),cuda_block(128) - do k = 0,problem_size - 1 - do j = 0,problem_size - 1 - do i = 0,problem_size - 1 - do m = 1,5 - rhs(m,i,j,k) = 0 - enddo - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! compute xi-direction fluxes -!--------------------------------------------------------------------- -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), PRIVATE(uijk,up1,um1,m, -!DVM$&vijk,vp1,vm1,wijk,wp1,wm1,rhs_,s1,s2,s3,s4,s5,s6,s7, -!DVM$&qs1,qs2,qs3,qs4,qs5,qs6,qs7),cuda_block(32) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - do m = 1, 5 - rhs_(m) = forcing(m,i,j,k) - end do - - uijk = u(2,i,j,k) / u(1,i,j,k) - up1 = u(2,i + 1,j,k) / u(1,i + 1,j,k) - um1 = u(2,i - 1,j,k) / u(1,i - 1,j,k) - - vijk = u(3,i,j,k) / u(1,i,j,k) - vp1 = u(3,i,j + 1,k) / u(1,i,j + 1,k) - vm1 = u(3,i,j - 1,k) / u(1,i,j - 1,k) - - wijk = u(4,i,j,k) / u(1,i,j,k) - wp1 = u(4,i,j,k + 1) / u(1,i,j,k + 1) - wm1 = u(4,i,j,k - 1) / u(1,i,j,k - 1) - - s1 = 0.5d0 * (u(2,i,j,k) * u(2,i,j,k) + u(3,i, - &j,k) * u(3,i,j,k) + u(4,i,j,k) * u(4,i,j,k)) / u(1,i,j,k) - s2 = 0.5d0 * (u(2,i+1,j,k) * u(2,i+1,j,k) + u(3,i - &+1,j,k) * u(3,i+1,j,k) + u(4,i+1,j,k) * u(4,i+1,j,k)) / - &u(1,i+1,j,k) - s3 = 0.5d0 * (u(2,i-1,j,k) * u(2,i-1,j,k) + u(3,i - &-1,j,k) * u(3,i-1,j,k) + u(4,i-1,j,k) * u(4,i-1,j,k)) / - &u(1,i-1,j,k) - s4 = 0.5d0 * (u(2,i,j+1,k) * u(2,i,j+1,k) + u(3,i, - &j+1,k) * u(3,i,j+1,k) + u(4,i,j+1,k) * u(4,i,j+1,k)) / - &u(1,i,j+1,k) - s5 = 0.5d0 * (u(2,i,j-1,k) * u(2,i,j-1,k) + u(3,i, - &j-1,k) * u(3,i,j-1,k) + u(4,i,j-1,k) * u(4,i,j-1,k)) / - &u(1,i,j-1,k) - s6 = 0.5d0 * (u(2,i,j,k+1) * u(2,i,j,k+1) + u(3,i, - &j,k+1) * u(3,i,j,k+1) + u(4,i,j,k+1) * u(4,i,j,k+1)) / - &u(1,i,j,k+1) - s7 = 0.5d0 * (u(2,i,j,k-1) * u(2,i,j,k-1) + u(3,i, - &j,k-1) * u(3,i,j,k-1) + u(4,i,j,k-1) * u(4,i,j,k-1)) / - &u(1,i,j,k-1) - - qs1 = s1 / u(1,i,j,k) - qs2 = s2 / u(1,i+1,j,k) - qs3 = s3 / u(1,i-1,j,k) - qs4 = s4 / u(1,i,j+1,k) - qs5 = s5 / u(1,i,j-1,k) - qs6 = s6 / u(1,i,j,k+1) - qs7 = s7 / u(1,i,j,k-1) - -! rhs_(1) = forcing(1,i,j,k) -! rhs_(2) = forcing(2,i,j,k) -! rhs_(3) = forcing(3,i,j,k) -! rhs_(4) = forcing(4,i,j,k) -! rhs_(5) = forcing(5,i,j,k) - - rhs_(1) = rhs_(1) + dx1tx1 * (u(1,i + 1,j,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i - 1,j,k)) - tx2 * (u(2,i + 1,j,k) - u(2,i - 1,j,k - &)) - rhs_(2) = rhs_(2) + dx2tx1 * (u(2,i + 1,j,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i - 1,j,k)) + xxcon2 * con43 * (up1 - 2.0d0 * uijk - &+ um1) - tx2 * (u(2,i + 1,j,k) * up1 - u(2,i - 1,j,k) * um1 + (u(5 - &,i + 1,j,k) - s2 - u(5,i - 1,j,k) + s3) * c2) - rhs_(3) = rhs_(3) + dx3tx1 * (u(3,i + 1,j,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i - 1,j,k)) + xxcon2 * (u(3,i + 1,j,k) / - &u(1,i + 1,j,k) - 2.0d0 * vijk + u(3,i - 1,j,k)/u(1,i - 1,j,k)) - &- tx2 * (u(3,i + 1,j,k) * up1 - u(3,i - 1,j,k) * um1) - rhs_(4) = rhs_(4) + dx4tx1 * (u(4,i + 1,j,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i - 1,j,k)) + xxcon2 * (u(4,i + 1,j,k) / - &u(1,i + 1,j,k) - 2.0d0 * wijk + u(4,i - 1,j,k) / u(1,i - 1,j,k)) - &- tx2 * (u(4,i + 1,j,k) * up1 - u(4,i - 1,j,k) * um1) - rhs_(5) = rhs_(5) + dx5tx1 * (u(5,i + 1,j,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i - 1,j,k)) + xxcon3 * (qs2 - 2.0d0 * qs1 + - &qs3) + xxcon4 * (up1 * up1 - 2.0d0 * uijk * uij - &k + um1 * um1) + xxcon5 * (u(5,i + 1,j,k) * 1.0d0 / u(1,i + 1,j,k) - & - 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i - 1,j,k) * - &1.0d0 / u(1,i - 1,j,k)) - tx2 * ((c1 * u(5,i + 1,j,k) - - &c2 * s2) * up1 - - &(c1 * u(5,i - 1,j,k) - c2 * s3) * um1) - if (i .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k)) - enddo - else if (i .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i - 1, - &j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k - &)) - enddo - else if (i .ge. 3 .and. i .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m - &,i + 2,j,k)) - enddo - else if (i .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k)) - enddo - else if (i .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.d0 * - & u(m,i - 1,j,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - - rhs_(1) = rhs_(1) + dy1ty1 * (u(1,i,j + 1,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j - 1,k)) - ty2 * (u(3,i,j + 1,k) - u(3,i,j - 1,k - &)) - rhs_(2) = rhs_(2) + dy2ty1 * (u(2,i,j + 1,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j - 1,k)) + yycon2 * (u(2,i,j + 1,k) / - &u(1,i,j + 1,k) - 2.0d0 * uijk + u(2,i,j - 1,k)/u(1,i,j - 1,k)) - &- ty2 * (u(2,i,j + 1,k) * vp1 - u(2,i,j -1,k) * vm1) - rhs_(3) = rhs_(3) + dy3ty1 * (u(3,i,j + 1,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j - 1,k)) + yycon2 * con43 * (vp1 - 2.0d0 * vijk - &+ vm1) - ty2 * (u(3,i,j + 1,k) * vp1 - u(3,i,j - 1,k) * vm1 + (u(5 - &,i,j + 1,k) - s4 - u(5,i,j - 1,k) + s5) * c2) - rhs_(4) = rhs_(4) + dy4ty1 * (u(4,i,j + 1,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j - 1,k)) + yycon2 * (u(4,i,j + 1,k) / - &u(1,i,j + 1,k) - 2.0d0 * wijk + u(4,i,j - 1,k) / u(1,i,j - 1,k)) - &- ty2 * (u(4,i,j + 1,k) * vp1 - u(4,i,j - 1,k) * vm1) - rhs_(5) = rhs_(5) + dy5ty1 * (u(5,i,j + 1,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j - 1,k)) + yycon3 * (qs4 - 2.0d0 * qs1 - & + qs5) + yycon4 * (vp1 * vp1 - 2.0d0 * vijk * vij - &k + vm1 * vm1) + yycon5 * (u(5,i,j + 1,k) * 1.0d0 / u(1,i,j + 1,k) - &- 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i,j - 1,k) * - &1.0d0 / u(1,i,j - 1,k) - &) - ty2 * ((c1 * u(5,i,j + 1,k) - c2 * s4) * vp1 - - &(c1 * u(5,i,j - 1,k) - c2 * s5) * vm1) - if (j .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k)) - enddo - else if (j .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j - - &1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k - &)) - enddo - else if (j .ge. 3 .and. j .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m - &,i,j + 2,k)) - enddo - else if (j .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k)) - enddo - else if (j .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.d0 * - & u(m,i,j - 1,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - - rhs_(1) = rhs_(1) + dz1tz1 * (u(1,i,j,k + 1) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j,k - 1)) - tz2 * (u(4,i,j,k + 1) - u(4,i,j,k - 1 - &)) - rhs_(2) = rhs_(2) + dz2tz1 * (u(2,i,j,k + 1) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j,k - 1)) + zzcon2 * (u(2,i,j,k + 1) / - &u(1,i,j,k + 1) - 2.0d0 * uijk + u(2,i,j,k - 1) / u(1,i,j,k - 1)) - &- tz2 * (u(2,i,j,k + 1) * wp1 - u(2,i,j,k - 1) * wm1) - rhs_(3) = rhs_(3) + dz3tz1 * (u(3,i,j,k + 1) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j,k - 1)) + zzcon2 * (u(3,i,j,k + 1) / - &u(1,i,j,k + 1) - 2.0d0 * vijk + u(3,i,j,k - 1) / u(1,i,j,k - 1)) - &- tz2 * (u(3,i,j,k + 1) * wp1 - u(3,i,j,k - 1) * wm1) - rhs_(4) = rhs_(4) + dz4tz1 * (u(4,i,j,k + 1) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j,k - 1)) + zzcon2 * con43 * (wp1 - 2.0d0 * wijk - &+ wm1) - tz2 * (u(4,i,j,k + 1) * wp1 - u(4,i,j,k - 1) * wm1 + (u(5 - &,i,j,k + 1) - s6 - u(5,i,j,k - 1) + s7) * c2) - rhs_(5) = rhs_(5) + dz5tz1 * (u(5,i,j,k + 1) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j,k - 1)) + zzcon3 * (qs6 - 2.0d0 * qs1 + - &qs7) + zzcon4 * (wp1 * wp1 - 2.0d0 * wijk * wij - &k + wm1 * wm1) + zzcon5 * (u(5,i,j,k + 1) * 1.0d0 / u(1,i,j,k+1) - &- 2.0d0 * u(5,i,j,k) * 1.0d0 / u(1,i,j,k) + u(5,i,j,k - 1) * - &1.0d0 / u(1,i,j,k-1) - &) - tz2 * ((c1 * u(5,i,j,k + 1) - c2 * s6) * wp1 - - &(c1 * u(5,i,j,k - 1) - c2 * s7) * wm1) - if (k .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2)) - enddo - else if (k .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j,k - &- 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2 - &)) - enddo - else if (k .ge. 3 .and. k .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m - &,i,j,k + 2)) - enddo - else if (k .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1)) - enddo - else if (k .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.d0 * - & u(m,i,j,k - 1) + 5.d0 * u(m,i,j,k)) - enddo - endif - rhs(1,i,j,k) = rhs_(1) * dt - rhs(2,i,j,k) = rhs_(2) * dt - rhs(3,i,j,k) = rhs_(3) * dt - rhs(4,i,j,k) = rhs_(4) * dt - rhs(5,i,j,k) = rhs_(5) * dt - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_mpi.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_mpi.fdv deleted file mode 100644 index 549948e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/compute_rhs_mpi.fdv +++ /dev/null @@ -1,219 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine compute_rhs () - - include 'header3d.h' - integer i,j,k,m - double precision rho_inv,uijk,up1,um1,vijk,vp1,vm1,wijk,wp1,wm1,r - &hs_(5) - -!DVM$ region out(rho_i, us, vs, ws, qs, square) -!DVM$ PARALLEL (k,j,i) ON us(i,j,k), SHADOW_COMPUTE, -!DVM$& PRIVATE(rho_inv,m),cuda_block(128) -!DVM$& ,SHADOW_RENEW(u(0:0,2:2,2:2,2:2)) - do k = 0,problem_size - 1 - do j = 0,problem_size - 1 - do i = 0,problem_size - 1 - rho_inv = 1.0d0 / u(1,i,j,k) - rho_i(i,j,k) = rho_inv - us(i,j,k) = u(2,i,j,k) * rho_inv - vs(i,j,k) = u(3,i,j,k) * rho_inv - ws(i,j,k) = u(4,i,j,k) * rho_inv - square(i,j,k) = 0.5d0 * (u(2,i,j,k) * u(2,i,j,k) + u(3,i, - &j,k) * u(3,i,j,k) + u(4,i,j,k) * u(4,i,j,k)) * rho_inv - qs(i,j,k) = square(i,j,k) * rho_inv - do m = 1,5 - rhs(m,i,j,k) = forcing(m,i,j,k) - enddo - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! compute xi-direction fluxes -!--------------------------------------------------------------------- -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), PRIVATE(uijk,up1,um1,m, -!DVM$&vijk,vp1,vm1,wijk,wp1,wm1,rhs_),cuda_block(32) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - uijk = us(i,j,k) - up1 = us(i + 1,j,k) - um1 = us(i - 1,j,k) - rhs_(1) = forcing(1,i,j,k) - rhs_(2) = forcing(2,i,j,k) - rhs_(3) = forcing(3,i,j,k) - rhs_(4) = forcing(4,i,j,k) - rhs_(5) = forcing(5,i,j,k) - - rhs_(1) = rhs_(1) + dx1tx1 * (u(1,i + 1,j,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i - 1,j,k)) - tx2 * (u(2,i + 1,j,k) - u(2,i - 1,j,k - &)) - rhs_(2) = rhs_(2) + dx2tx1 * (u(2,i + 1,j,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i - 1,j,k)) + xxcon2 * con43 * (up1 - 2.0d0 * uijk - &+ um1) - tx2 * (u(2,i + 1,j,k) * up1 - u(2,i - 1,j,k) * um1 + (u(5 - &,i + 1,j,k) - square(i + 1,j,k) - u(5,i - 1,j,k) + square(i - 1,j, - &k)) * c2) - rhs_(3) = rhs_(3) + dx3tx1 * (u(3,i + 1,j,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i - 1,j,k)) + xxcon2 * (vs(i + 1,j,k) - 2.0d0 * vs( - &i,j,k) + vs(i - 1,j,k)) - tx2 * (u(3,i + 1,j,k) * up1 - u(3,i - 1, - &j,k) * um1) - rhs_(4) = rhs_(4) + dx4tx1 * (u(4,i + 1,j,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i - 1,j,k)) + xxcon2 * (ws(i + 1,j,k) - 2.0d0 * ws( - &i,j,k) + ws(i - 1,j,k)) - tx2 * (u(4,i + 1,j,k) * up1 - u(4,i - 1, - &j,k) * um1) - rhs_(5) = rhs_(5) + dx5tx1 * (u(5,i + 1,j,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i - 1,j,k)) + xxcon3 * (qs(i + 1,j,k) - 2.0d0 * qs( - &i,j,k) + qs(i - 1,j,k)) + xxcon4 * (up1 * up1 - 2.0d0 * uijk * uij - &k + um1 * um1) + xxcon5 * (u(5,i + 1,j,k) * rho_i(i + 1,j,k) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i - 1,j,k) * rho_i(i - 1,j,k) - &) - tx2 * ((c1 * u(5,i + 1,j,k) - c2 * square(i + 1,j,k)) * up1 - - &(c1 * u(5,i - 1,j,k) - c2 * square(i - 1,j,k)) * um1) - if (i .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k)) - enddo - else if (i .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i - 1, - &j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m,i + 2,j,k - &)) - enddo - else if (i .ge. 3 .and. i .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k) + u(m - &,i + 2,j,k)) - enddo - else if (i .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.0d0 - &* u(m,i - 1,j,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i + 1,j,k)) - enddo - else if (i .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i - 2,j,k) - 4.d0 * - & u(m,i - 1,j,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - vijk = vs(i,j,k) - vp1 = vs(i,j + 1,k) - vm1 = vs(i,j - 1,k) - rhs_(1) = rhs_(1) + dy1ty1 * (u(1,i,j + 1,k) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j - 1,k)) - ty2 * (u(3,i,j + 1,k) - u(3,i,j - 1,k - &)) - rhs_(2) = rhs_(2) + dy2ty1 * (u(2,i,j + 1,k) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j - 1,k)) + yycon2 * (us(i,j + 1,k) - 2.0d0 * us( - &i,j,k) + us(i,j - 1,k)) - ty2 * (u(2,i,j + 1,k) * vp1 - u(2,i,j - - &1,k) * vm1) - rhs_(3) = rhs_(3) + dy3ty1 * (u(3,i,j + 1,k) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j - 1,k)) + yycon2 * con43 * (vp1 - 2.0d0 * vijk - &+ vm1) - ty2 * (u(3,i,j + 1,k) * vp1 - u(3,i,j - 1,k) * vm1 + (u(5 - &,i,j + 1,k) - square(i,j + 1,k) - u(5,i,j - 1,k) + square(i,j - 1, - &k)) * c2) - rhs_(4) = rhs_(4) + dy4ty1 * (u(4,i,j + 1,k) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j - 1,k)) + yycon2 * (ws(i,j + 1,k) - 2.0d0 * ws( - &i,j,k) + ws(i,j - 1,k)) - ty2 * (u(4,i,j + 1,k) * vp1 - u(4,i,j - - &1,k) * vm1) - rhs_(5) = rhs_(5) + dy5ty1 * (u(5,i,j + 1,k) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j - 1,k)) + yycon3 * (qs(i,j + 1,k) - 2.0d0 * qs( - &i,j,k) + qs(i,j - 1,k)) + yycon4 * (vp1 * vp1 - 2.0d0 * vijk * vij - &k + vm1 * vm1) + yycon5 * (u(5,i,j + 1,k) * rho_i(i,j + 1,k) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i,j - 1,k) * rho_i(i,j - 1,k) - &) - ty2 * ((c1 * u(5,i,j + 1,k) - c2 * square(i,j + 1,k)) * vp1 - - &(c1 * u(5,i,j - 1,k) - c2 * square(i,j - 1,k)) * vm1) - if (j .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k)) - enddo - else if (j .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j - - &1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m,i,j + 2,k - &)) - enddo - else if (j .ge. 3 .and. j .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k) + u(m - &,i,j + 2,k)) - enddo - else if (j .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.0d0 - &* u(m,i,j - 1,k) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j + 1,k)) - enddo - else if (j .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j - 2,k) - 4.d0 * - & u(m,i,j - 1,k) + 5.d0 * u(m,i,j,k)) - enddo - endif - wijk = ws(i,j,k) - wp1 = ws(i,j,k + 1) - wm1 = ws(i,j,k - 1) - rhs_(1) = rhs_(1) + dz1tz1 * (u(1,i,j,k + 1) - 2.0d0 * u( - &1,i,j,k) + u(1,i,j,k - 1)) - tz2 * (u(4,i,j,k + 1) - u(4,i,j,k - 1 - &)) - rhs_(2) = rhs_(2) + dz2tz1 * (u(2,i,j,k + 1) - 2.0d0 * u( - &2,i,j,k) + u(2,i,j,k - 1)) + zzcon2 * (us(i,j,k + 1) - 2.0d0 * us( - &i,j,k) + us(i,j,k - 1)) - tz2 * (u(2,i,j,k + 1) * wp1 - u(2,i,j,k - &- 1) * wm1) - rhs_(3) = rhs_(3) + dz3tz1 * (u(3,i,j,k + 1) - 2.0d0 * u( - &3,i,j,k) + u(3,i,j,k - 1)) + zzcon2 * (vs(i,j,k + 1) - 2.0d0 * vs( - &i,j,k) + vs(i,j,k - 1)) - tz2 * (u(3,i,j,k + 1) * wp1 - u(3,i,j,k - &- 1) * wm1) - rhs_(4) = rhs_(4) + dz4tz1 * (u(4,i,j,k + 1) - 2.0d0 * u( - &4,i,j,k) + u(4,i,j,k - 1)) + zzcon2 * con43 * (wp1 - 2.0d0 * wijk - &+ wm1) - tz2 * (u(4,i,j,k + 1) * wp1 - u(4,i,j,k - 1) * wm1 + (u(5 - &,i,j,k + 1) - square(i,j,k + 1) - u(5,i,j,k - 1) + square(i,j,k - - &1)) * c2) - rhs_(5) = rhs_(5) + dz5tz1 * (u(5,i,j,k + 1) - 2.0d0 * u( - &5,i,j,k) + u(5,i,j,k - 1)) + zzcon3 * (qs(i,j,k + 1) - 2.0d0 * qs( - &i,j,k) + qs(i,j,k - 1)) + zzcon4 * (wp1 * wp1 - 2.0d0 * wijk * wij - &k + wm1 * wm1) + zzcon5 * (u(5,i,j,k + 1) * rho_i(i,j,k + 1) - 2.0 - &d0 * u(5,i,j,k) * rho_i(i,j,k) + u(5,i,j,k - 1) * rho_i(i,j,k - 1) - &) - tz2 * ((c1 * u(5,i,j,k + 1) - c2 * square(i,j,k + 1)) * wp1 - - &(c1 * u(5,i,j,k - 1) - c2 * square(i,j,k - 1)) * wm1) - if (k .eq. 1) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (5.0d0 * u(m,i,j,k) - 4. - &0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2)) - enddo - else if (k .eq. 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * ((-(4.0d0)) * u(m,i,j,k - &- 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m,i,j,k + 2 - &)) - enddo - else if (k .ge. 3 .and. k .le. problem_size - 4) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1) + u(m - &,i,j,k + 2)) - enddo - else if (k .eq. problem_size - 3) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.0d0 - &* u(m,i,j,k - 1) + 6.0d0 * u(m,i,j,k) - 4.0d0 * u(m,i,j,k + 1)) - enddo - else if (k .eq. problem_size - 2) then - do m = 1,5 - rhs_(m) = rhs_(m) - dssp * (u(m,i,j,k - 2) - 4.d0 * - & u(m,i,j,k - 1) + 5.d0 * u(m,i,j,k)) - enddo - endif - rhs(1,i,j,k) = rhs_(1) * dt - rhs(2,i,j,k) = rhs_(2) * dt - rhs(3,i,j,k) = rhs_(3) * dt - rhs(4,i,j,k) = rhs_(4) * dt - rhs(5,i,j,k) = rhs_(5) * dt - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs.fdv deleted file mode 100644 index 01c5640..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs.fdv +++ /dev/null @@ -1,307 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine exact_rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - - include 'header3d.h' - - double precision dtemp(5), xi, eta, zeta, dtpp - integer m, i, j, k, ip1, im1, jp1, p, p1, - > jm1, km1, kp1,z - double precision ue_(-2:2, 5), buf_(-2:2, 5),cuf_(-2:2),q_(-2:2) - - -!DVM$ region -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(m) - do k= 0, problem_size-1 - do j = 0, problem_size-1 - do i = 0, problem_size-1 - do m = 1, 5 - forcing(m,i,j,k) = 0.0d0 - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c xi-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m,dtemp -!DVM$& ,buf_,cuf_,q_,dtpp,z,ue_) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - do z = -2, 2 - xi = dble(i + z) * dnxm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,2) * buf_(z,2) - buf_(z,1) = cuf_(z) + buf_(z,3) * buf_(z,3) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > tx2*( ue_(1,2)-ue_(-1,2) )+ - > dx1tx1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - tx2 * ( - > (ue_(1,2)*buf_(1,2)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,2)*buf_(-1,2)+c2*(ue_(-1,5)-q_(-1))))+ - > xxcon1*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dx2tx1*( ue_(1,2)-2.0d0* ue_(0,2)+ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - tx2 * ( - > ue_(1,3)*buf_(1,2)-ue_(-1,3)*buf_(-1,2))+ - > xxcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dx3tx1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - tx2*( - > ue_(1,4)*buf_(1,2)-ue_(-1,4)*buf_(-1,2))+ - > xxcon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dx4tx1*( ue_(1,4)-2.0d0* ue_(0,4)+ ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - tx2*( - > buf_(1,2)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,2)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*xxcon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > xxcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > xxcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dx5tx1*( ue_(1,5)-2.0d0* ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(i .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(i .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(i .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(i .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c eta-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m,dtemp -!DVM$& ,buf_,cuf_,q_,dtpp,z,ue_) - do k = 1, problem_size- 2 - do j = 1, problem_size-2 - do i = 1, problem_size- 2 - zeta = dble(k) * dnzm1 - xi = dble(i) * dnxm1 - do z = -2, 2 - eta = dble(j + z) * dnym1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,3) * buf_(z,3) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3) - > *ue_(z,3) + buf_(z,4) * ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > ty2*( ue_(1,3)-ue_(-1,3) )+ - > dy1ty1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - ty2*( - > ue_(1,2)*buf_(1,3)-ue_(-1,2)*buf_(-1,3))+ - > yycon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dy2ty1*( ue_(1,2)-2.0* ue_(0,2)+ ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - ty2*( - > (ue_(1,3)*buf_(1,3)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,3)*buf_(-1,3)+c2*(ue_(-1,5)-q_(-1))))+ - > yycon1*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dy3ty1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - ty2*( - > ue_(1,4)*buf_(1,3)-ue_(-1,4)*buf_(-1,3))+ - > yycon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dy4ty1*( ue_(1,4)-2.0d0*ue_(0,4)+ ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - ty2*( - > buf_(1,3)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,3)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*yycon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > yycon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > yycon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dy5ty1*(ue_(1,5)-2.0d0*ue_(0,5)+ue_(-1,5)) - do m = 1, 5 - if(j .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(j .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(j .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(j .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c zeta-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m -!DVM$& ,buf_,cuf_,q_,ue_,dtpp,dtemp,z) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - xi = dble(i) * dnxm1 - eta = dble(j) * dnym1 - do z = -2, 2 - zeta = dble(k + z) * dnzm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,4) * buf_(z,4) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,3) * buf_(z,3) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > tz2*( ue_(1,4)-ue_(-1,4) )+ - > dz1tz1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - tz2 * ( - > ue_(1,2)*buf_(1,4)-ue_(-1,2)*buf_(-1,4))+ - > zzcon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dz2tz1*( ue_(1,2)-2.0d0* ue_(0,2)+ ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - tz2 * ( - > ue_(1,3)*buf_(1,4)-ue_(-1,3)*buf_(-1,4))+ - > zzcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dz3tz1*(ue_(1,3)-2.0d0*ue_(0,3)+ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - tz2 * ( - > (ue_(1,4)*buf_(1,4)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,4)*buf_(-1,4)+c2*(ue_(-1,5)-q_(-1))))+ - > zzcon1*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dz4tz1*( ue_(1,4)-2.0d0*ue_(0,4) +ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - tz2 * ( - > buf_(1,4)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,4)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*zzcon3*(buf_(1,1)-2.0d0*buf_(0,1) - > +buf_(-1,1))+ - > zzcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > zzcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dz5tz1*( ue_(1,5)-2.0d0*ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(k .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(k .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(k .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(k .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c now change the sign of the forcing function, -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(m) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - do m = 1, 5 - forcing(m,i,j,k) = -1.d0 * forcing(m,i,j,k) - end do - end do - end do - end do -!DVM$ end region - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs_block.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs_block.fdv deleted file mode 100644 index 3d74e46..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_rhs_block.fdv +++ /dev/null @@ -1,4 +0,0 @@ - subroutine exact_rhs - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_solution.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_solution.fdv deleted file mode 100644 index 28e00a0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/exact_solution.fdv +++ /dev/null @@ -1,18 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! this function returns the exact solution at point xi, eta, zeta -!--------------------------------------------------------------------- - subroutine exact_solution (xi, eta, zeta, dtemp) - - include 'header3d.h' - double precision xi,eta,zeta,dtemp(5) - integer m - do m = 1,5 - dtemp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi * (ce(m - &,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + eta * ( - &ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce(m,7) + - &zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/header3d.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/header3d.h deleted file mode 100644 index 88298ef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/header3d.h +++ /dev/null @@ -1,106 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! header.h -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - - implicit none - -!--------------------------------------------------------------------- -! The following include file is generated automatically by the -! "setparams" utility. It defines -! maxcells: the square root of the maximum number of processors -! problem_size: 12, 64, 102, 162 (for class T, A, B, C) -! dt_default: default time step for this problem size if no -! config file -! niter_default: default number of iterations for this problem size -!--------------------------------------------------------------------- - - include 'npbparams.h' - - integer aa, bb, cc, BLOCK_SIZE - parameter (aa=1, bb=2, cc=3, BLOCK_SIZE=5) - - integer grid_points(3) - double precision elapsed_time - common /global/ elapsed_time, grid_points - - double precision tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3 - double precision dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4 - double precision dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt - double precision ce(5,13), dxmax, dymax, dzmax, xxcon1, xxcon2 - double precision xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1 - double precision dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4 - double precision yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1 - double precision zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1 - double precision dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1 - double precision dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2 - double precision c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1 - double precision dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1 - double precision c2dtty1, c2dttz1, comz1, comz4, comz5, comz6 - double precision c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16 - integer stage_n, BL, R - - common /constants/ tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3 - common /constants/ dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4 - common /constants/ dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt - common /constants/ ce, dxmax, dymax, dzmax, xxcon1, xxcon2 - common /constants/ xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1 - common /constants/ dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4 - common /constants/ yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1 - common /constants/ zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1 - common /constants/ dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1 - common /constants/ dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2 - common /constants/ c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1 - common /constants/ dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1 - common /constants/ c2dtty1, c2dttz1, comz1, comz4, comz5, comz6 - common /constants/ c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16 - common /constants/ stage_n - - integer IMAX, JMAX, KMAX - - parameter (IMAX=problem_size,JMAX=problem_size,KMAX=problem_size) - parameter (BL=1, R=0) -! -! to improve cache performance, grid dimensions padded by 1 -! for even number sizes only. -! - double precision us(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision vs(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision ws(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision qs(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision rho_i(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision square(0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision forcing (5,0:IMAX/2*2,0:JMAX/2*2, 0:KMAX/2*2) - double precision u(5,0:(IMAX+1)/2*2,0:(JMAX+1)/2*2,0:(KMAX+1)/2*2) - double precision rhs(5,0:IMAX/2*2, 0:JMAX/2*2, 0:KMAX/2*2) - double precision lhs__(5,5,0:IMAX/2*2,0:JMAX/2*2,0:KMAX/2*2/BL+R) - common /fields/ u, us, vs, ws, qs, rho_i, square - common /fields/ rhs, forcing, lhs__ - - double precision cv(-2:problem_size+1) - double precision cuf(-2:problem_size+1), q(-2:problem_size+1) - double precision ue(-2:problem_size+1,5), buf(-2:problem_size+1,5) - common /work_1d/ cv, cuf, q, ue, buf - - double precision tmp1, tmp2, tmp3, tmp11, tmp22 - double precision t1, t2, t3, tm1, tm2, tm3 - - common /work_lhs/ tmp1, tmp2, tmp3, tmp11, tmp22 - common /work_lhs/ t1, t2, t3, tm1, tm2, tm3 - double precision tmp_block(5,5), b_inverse(5,5), tmp_vec(5) - common /work_solve/ tmp_block, b_inverse, tmp_vec -!-------------------------------------------------------------------- -! FDVM Specifications -!-------------------------------------------------------------------- - -!DVM$ DISTRIBUTE us (BLOCK,BLOCK,BLOCK) -!DVM$ ALIGN (i,j,k) WITH us(i,j,k) :: vs, ws, qs, rho_i, square -!DVM$ ALIGN (*,*,i,j,k) WITH us(i,j,k) :: lhs__ -!DVM$ ALIGN (*,i,j,k) WITH us(i,j,k) :: u, rhs -!DVM$ ALIGN (*,i,j,k) WITH us(i,j,k) :: forcing - -!DVM$ SHADOW u(2:2,2:2,2:2,2:2) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/initialize.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/initialize.fdv deleted file mode 100644 index 7c39d39..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/initialize.fdv +++ /dev/null @@ -1,181 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! This subroutine initializes the field variable u using -! tri-linear transfinite interpolation of the boundary values -!--------------------------------------------------------------------- - subroutine initialize () - - include 'header3d.h' - integer i,j,k,m,ix,iy,iz - double precision xi,eta,zeta,pface(5,3,2),pxi,peta,pzeta,temp(5), - &xi1,yi1,zi1 - xi = 0.0 - eta = 0.0 - zeta = 0.0 - -!--------------------------------------------------------------------- -! Later (in compute_rhs) we compute 1/u for every element. A few of -! the corner elements are not used, but it convenient (and faster) -! to compute the whole thing with a simple loop. Make sure those -! values are nonzero by initializing the whole thing here. -!--------------------------------------------------------------------- -!DVM$ region out(u) -!DVM$ PARALLEL (k,j,i) ON u(*,i,j,k), SHADOW_COMPUTE, private(m) - do k = 0,imax - 1 - do j = 0,imax - 1 - do i = 0,imax - 1 - do m = 1,5 - u(m,i,j,k) = 1.0 - enddo - enddo - enddo - enddo - -!DVM$ PARALLEL (k,j,i) ON u(*,i,j,k), private(m,zeta,eta, xi,ix, -!DVM$& iy,iz,Pxi,Peta,Pzeta,Pface,xi1,yi1,zi1,temp),SHADOW_COMPUTE - do k = 0,grid_points(3) - 1 - do j = 0,grid_points(2) - 1 - do i = 0,grid_points(1) - 1 - zeta = dble (k) * dnzm1 - eta = dble (j) * dnym1 - xi = dble (i) * dnxm1 - do ix = 1,2 - -! call exact_solution(dble(ix-1), eta, zeta, Pface(1,1,ix)) - xi1 = dble (ix - 1) - do m = 1,5 - pface(m,1,ix) = ce(m,1) + xi1 * (ce(m,2) + xi1 * (c - &e(m,5) + xi1 * (ce(m,8) + xi1 * ce(m,11)))) + eta * (ce(m,3) + eta - & * (ce(m,6) + eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) - & + zeta * (ce(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - enddo - do iy = 1,2 - -! call exact_solution(xi, dble(iy-1) , zeta, Pface(1,2,iy)) - yi1 = dble (iy - 1) - do m = 1,5 - pface(m,2,iy) = ce(m,1) + xi * (ce(m,2) + xi * (ce( - &m,5) + xi * (ce(m,8) + xi * ce(m,11)))) + yi1 * (ce(m,3) + yi1 * ( - &ce(m,6) + yi1 * (ce(m,9) + yi1 * ce(m,12)))) + zeta * (ce(m,4) + z - &eta * (ce(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - enddo - do iz = 1,2 - -! call exact_solution(xi, eta, dble(iz-1), Pface(1,3,iz)) - zi1 = dble (iz - 1) - do m = 1,5 - pface(m,3,iz) = ce(m,1) + xi * (ce(m,2) + xi * (ce( - &m,5) + xi * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * ( - &ce(m,6) + eta * (ce(m,9) + eta * ce(m,12)))) + zi1 * (ce(m,4) + zi - &1 * (ce(m,7) + zi1 * (ce(m,10) + zi1 * ce(m,13)))) - enddo - enddo - do m = 1,5 - pxi = xi * pface(m,1,2) + (1.0d0 - xi) * pface(m,1,1) - peta = eta * pface(m,2,2) + (1.0d0 - eta) * pface(m,2, - &1) - pzeta = zeta * pface(m,3,2) + (1.0d0 - zeta) * pface(m - &,3,1) - u(m,i,j,k) = pxi + peta + pzeta - pxi * peta - pxi * p - &zeta - peta * pzeta + pxi * peta * pzeta - enddo - - if(i .eq. 0) then - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - if(i .eq. grid_points(1) - 1) then - xi = 1.0d0 - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - - if(j .eq. 0) then - zeta = dble (k) * dnzm1 - xi = dble (i) * dnxm1 - eta = 0.0d0 - - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - - if(j .eq. grid_points(2) - 1) then - zeta = dble (k) * dnzm1 - xi = dble (i) * dnxm1 - eta = 1.0d0 -! call exact_solution(xi, eta, zeta, temp) - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - - if(k .eq. 0) then - zeta = 0.0d0 - xi = dble (i) * dnxm1 - eta = dble (j) * dnym1 - -! call exact_solution(xi, eta, zeta, temp) - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - - if(k .eq. grid_points(3) - 1) then - zeta = 1.0d0 - xi = dble (i) * dnxm1 - eta = dble (j) * dnym1 - -! call exact_solution(xi, eta, zeta, temp) - do m = 1,5 - temp(m) = ce(m,1) + xi * (ce(m,2) + xi * (ce(m,5) + xi - & * (ce(m,8) + xi * ce(m,11)))) + eta * (ce(m,3) + eta * (ce(m,6) + - & eta * (ce(m,9) + eta * ce(m,12)))) + zeta * (ce(m,4) + zeta * (ce - &(m,7) + zeta * (ce(m,10) + zeta * ce(m,13)))) - enddo - do m = 1,5 - u(m,i,j,k) = temp(m) - enddo - endif - enddo - enddo - enddo -!DVM$ end region - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/print_result.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/print_result.fdv deleted file mode 100644 index 8d72bdd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/print_result.fdv +++ /dev/null @@ -1,58 +0,0 @@ - - subroutine print_results (name, class, n1, n2, n3, niter, t, mops, - & optype, verified, npbversion) - -! , compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - implicit none - character*2 name - character*1 class - integer n1,n2,n3,niter,j - double precision t,mops - character optype*24,size*13 - logical verified - character*(*) npbversion - -! , compiletime,cs1, cs2, cs3, cs4, cs5, cs6, cs7 - write (unit = *,fmt = 2) name -2 format(//, ' ', A2, ' Benchmark Completed.') - write (unit = *,fmt = 3) class -3 format(' Class = ', 12x, a12) - -! If this is not a grid-based problem (EP, FT, CG), then -! we only print n1, which contains some measure of the -! problem size. In that case, n2 and n3 are both zero. -! Otherwise, we print the grid size n1xn2xn3 - if (n2 .eq. 0 .and. n3 .eq. 0) then - if (name(1:2) .eq. 'EP') then - write (unit = size,fmt = '(f12.0)') 2.d0** n1 - do j = 13,1,(-(1)) - if (size(j:j) .eq. '.') size(j:j) = ' ' - enddo - write (unit = *,fmt = 42) size -42 format(' Size = ',12x, a14) - else - write (unit = *,fmt = 44) n1 -44 format(' Size = ',12x, i12) - endif - else - write (unit = *,fmt = 4) n1,n2,n3 -4 format(' Size = ',12x, i3,'x',i3,'x',i3) - endif - write (unit = *,fmt = 5) niter -5 format(' Iterations = ', 12x, i12) - write (unit = *,fmt = 6) t -6 format(' Time in seconds = ',12x, f12.2) - write (unit = *,fmt = 9) mops -9 format(' Mop/s total = ',12x, f12.2) - write (unit = *,fmt = 11) optype -11 format(' Operation type = ', a24) - if (verified) then - write (unit = *,fmt = 12) ' SUCCESSFUL' - else - write (unit = *,fmt = 12) 'UNSUCCESSFUL' - endif -12 format(' Verification = ', 12x, a) - write (unit = *,fmt = 13) npbversion -13 format(' Version = ', 12x, a12) - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/set_constants.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/set_constants.fdv deleted file mode 100644 index ff3c15f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/set_constants.fdv +++ /dev/null @@ -1,165 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine set_constants () - - include 'header3d.h' - ce(1,1) = 2.0d0 - ce(1,2) = 0.0d0 - ce(1,3) = 0.0d0 - ce(1,4) = 4.0d0 - ce(1,5) = 5.0d0 - ce(1,6) = 3.0d0 - ce(1,7) = 0.5d0 - ce(1,8) = 0.02d0 - ce(1,9) = 0.01d0 - ce(1,10) = 0.03d0 - ce(1,11) = 0.5d0 - ce(1,12) = 0.4d0 - ce(1,13) = 0.3d0 - ce(2,1) = 1.0d0 - ce(2,2) = 0.0d0 - ce(2,3) = 0.0d0 - ce(2,4) = 0.0d0 - ce(2,5) = 1.0d0 - ce(2,6) = 2.0d0 - ce(2,7) = 3.0d0 - ce(2,8) = 0.01d0 - ce(2,9) = 0.03d0 - ce(2,10) = 0.02d0 - ce(2,11) = 0.4d0 - ce(2,12) = 0.3d0 - ce(2,13) = 0.5d0 - ce(3,1) = 2.0d0 - ce(3,2) = 2.0d0 - ce(3,3) = 0.0d0 - ce(3,4) = 0.0d0 - ce(3,5) = 0.0d0 - ce(3,6) = 2.0d0 - ce(3,7) = 3.0d0 - ce(3,8) = 0.04d0 - ce(3,9) = 0.03d0 - ce(3,10) = 0.05d0 - ce(3,11) = 0.3d0 - ce(3,12) = 0.5d0 - ce(3,13) = 0.4d0 - ce(4,1) = 2.0d0 - ce(4,2) = 2.0d0 - ce(4,3) = 0.0d0 - ce(4,4) = 0.0d0 - ce(4,5) = 0.0d0 - ce(4,6) = 2.0d0 - ce(4,7) = 3.0d0 - ce(4,8) = 0.03d0 - ce(4,9) = 0.05d0 - ce(4,10) = 0.04d0 - ce(4,11) = 0.2d0 - ce(4,12) = 0.1d0 - ce(4,13) = 0.3d0 - ce(5,1) = 5.0d0 - ce(5,2) = 4.0d0 - ce(5,3) = 3.0d0 - ce(5,4) = 2.0d0 - ce(5,5) = 0.1d0 - ce(5,6) = 0.4d0 - ce(5,7) = 0.3d0 - ce(5,8) = 0.05d0 - ce(5,9) = 0.04d0 - ce(5,10) = 0.03d0 - ce(5,11) = 0.1d0 - ce(5,12) = 0.3d0 - ce(5,13) = 0.2d0 - c1 = 1.4d0 - c2 = 0.4d0 - c3 = 0.1d0 - c4 = 1.0d0 - c5 = 1.4d0 - dnxm1 = 1.0d0 / dble (grid_points(1) - 1) - dnym1 = 1.0d0 / dble (grid_points(2) - 1) - dnzm1 = 1.0d0 / dble (grid_points(3) - 1) - c1c2 = c1 * c2 - c1c5 = c1 * c5 - c3c4 = c3 * c4 - c1345 = c1c5 * c3c4 - conz1 = 1.0d0 - c1c5 - tx1 = 1.0d0 / (dnxm1 * dnxm1) - tx2 = 1.0d0 / (2.0d0 * dnxm1) - tx3 = 1.0d0 / dnxm1 - ty1 = 1.0d0 / (dnym1 * dnym1) - ty2 = 1.0d0 / (2.0d0 * dnym1) - ty3 = 1.0d0 / dnym1 - tz1 = 1.0d0 / (dnzm1 * dnzm1) - tz2 = 1.0d0 / (2.0d0 * dnzm1) - tz3 = 1.0d0 / dnzm1 - dx1 = 0.75d0 - dx2 = 0.75d0 - dx3 = 0.75d0 - dx4 = 0.75d0 - dx5 = 0.75d0 - dy1 = 0.75d0 - dy2 = 0.75d0 - dy3 = 0.75d0 - dy4 = 0.75d0 - dy5 = 0.75d0 - dz1 = 1.0d0 - dz2 = 1.0d0 - dz3 = 1.0d0 - dz4 = 1.0d0 - dz5 = 1.0d0 - dxmax = dmax1 (dx3,dx4) - dymax = dmax1 (dy2,dy4) - dzmax = dmax1 (dz2,dz3) - dssp = 0.25d0 * dmax1 (dx1,dmax1 (dy1,dz1)) - c4dssp = 4.0d0 * dssp - c5dssp = 5.0d0 * dssp - dttx1 = dt * tx1 - dttx2 = dt * tx2 - dtty1 = dt * ty1 - dtty2 = dt * ty2 - dttz1 = dt * tz1 - dttz2 = dt * tz2 - c2dttx1 = 2.0d0 * dttx1 - c2dtty1 = 2.0d0 * dtty1 - c2dttz1 = 2.0d0 * dttz1 - dtdssp = dt * dssp - comz1 = dtdssp - comz4 = 4.0d0 * dtdssp - comz5 = 5.0d0 * dtdssp - comz6 = 6.0d0 * dtdssp - c3c4tx3 = c3c4 * tx3 - c3c4ty3 = c3c4 * ty3 - c3c4tz3 = c3c4 * tz3 - dx1tx1 = dx1 * tx1 - dx2tx1 = dx2 * tx1 - dx3tx1 = dx3 * tx1 - dx4tx1 = dx4 * tx1 - dx5tx1 = dx5 * tx1 - dy1ty1 = dy1 * ty1 - dy2ty1 = dy2 * ty1 - dy3ty1 = dy3 * ty1 - dy4ty1 = dy4 * ty1 - dy5ty1 = dy5 * ty1 - dz1tz1 = dz1 * tz1 - dz2tz1 = dz2 * tz1 - dz3tz1 = dz3 * tz1 - dz4tz1 = dz4 * tz1 - dz5tz1 = dz5 * tz1 - c2iv = 2.5d0 - con43 = 4.0d0 / 3.0d0 - con16 = 1.0d0 / 6.0d0 - xxcon1 = c3c4tx3 * con43 * tx3 - xxcon2 = c3c4tx3 * tx3 - xxcon3 = c3c4tx3 * conz1 * tx3 - xxcon4 = c3c4tx3 * con16 * tx3 - xxcon5 = c3c4tx3 * c1c5 * tx3 - yycon1 = c3c4ty3 * con43 * ty3 - yycon2 = c3c4ty3 * ty3 - yycon3 = c3c4ty3 * conz1 * ty3 - yycon4 = c3c4ty3 * con16 * ty3 - yycon5 = c3c4ty3 * c1c5 * ty3 - zzcon1 = c3c4tz3 * con43 * tz3 - zzcon2 = c3c4tz3 * tz3 - zzcon3 = c3c4tz3 * conz1 * tz3 - zzcon4 = c3c4tz3 * con16 * tz3 - zzcon5 = c3c4tz3 * c1c5 * tz3 - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/timers.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/timers.fdv deleted file mode 100644 index d824693..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/timers.fdv +++ /dev/null @@ -1,84 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine timer_clear (n) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - integer n - double precision start(64),elapsed(64) - common /tt/start,elapsed - elapsed(n) = 0.0 - return - end - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine timer_start (n) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64),elapsed(64) - common /tt/start,elapsed - start(n) = elapsed_time () - return - end - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine timer_stop (n) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64),elapsed(64) - common /tt/start,elapsed - double precision t,now - now = elapsed_time () - t = now - start(n) - elapsed(n) = elapsed(n) + t - return - end - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - double precision function timer_read (n) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - integer n - double precision start(64),elapsed(64) - common /tt/start,elapsed - timer_read = elapsed(n) - return - end - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - double precision function elapsed_time () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - double precision t,dvtime - integer dvm_debug - -! dvm_debug = 0 - standard mode, dvm_debug > 0 - debugging mode - parameter (dvm_debug = 0) - data t/0.d0/ - t = dvtime () - elapsed_time = t - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/verify.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/verify.fdv deleted file mode 100644 index 874799b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/verify.fdv +++ /dev/null @@ -1,312 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! verification routine -!--------------------------------------------------------------------- - subroutine verify (no_time_steps, class, verified) - - include 'header3d.h' - double precision xcrref(5),xceref(5),xcrdif(5),xcedif(5),epsilon, - &xce(5),xcr(5),dtref - integer m,no_time_steps - character class - logical verified - -!--------------------------------------------------------------------- -! tolerance level -!--------------------------------------------------------------------- - epsilon = 1.0d-08 - -!--------------------------------------------------------------------- -! compute the error norm and the residual norm, and exit if not printing -!--------------------------------------------------------------------- - call error_norm(xce) - call compute_rhs() - call rhs_norm(xcr) - do m = 1,5 - xcr(m) = xcr(m) / dt - enddo - class = 'U' - verified = .TRUE. - do m = 1,5 - xcrref(m) = 1.0 - xceref(m) = 1.0 - enddo - -!--------------------------------------------------------------------- -! reference data for 12X12X12 grids after 100 time steps, with DT = 1.0d-02 -!--------------------------------------------------------------------- - if (problem_size .eq. 12 .and. problem_size .eq. 12 .and. problem_ - &size .eq. 12 .and. no_time_steps .eq. 60) then - class = 'S' - dtref = 1.0d-2 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 1.7034283709541311d-01 - xcrref(2) = 1.2975252070034097d-02 - xcrref(3) = 3.2527926989486055d-02 - xcrref(4) = 2.6436421275166801d-02 - xcrref(5) = 1.9211784131744430d-01 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - xceref(1) = 4.9976913345811579d-04 - xceref(2) = 4.5195666782961927d-05 - xceref(3) = 7.3973765172921357d-05 - xceref(4) = 7.3821238632439731d-05 - xceref(5) = 8.9269630987491446d-04 - -!--------------------------------------------------------------------- -! reference data for 24X24X24 grids after 200 time steps, with DT = 0.8d-3 -!--------------------------------------------------------------------- - else if (problem_size .eq. 24 .and. problem_size .eq. 24 .and. pro - &blem_size .eq. 24 .and. no_time_steps .eq. 200) then - class = 'W' - dtref = 0.8d-3 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 0.1125590409344d+03 - xcrref(2) = 0.1180007595731d+02 - xcrref(3) = 0.2710329767846d+02 - xcrref(4) = 0.2469174937669d+02 - xcrref(5) = 0.2638427874317d+03 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - xceref(1) = 0.4419655736008d+01 - xceref(2) = 0.4638531260002d+00 - xceref(3) = 0.1011551749967d+01 - xceref(4) = 0.9235878729944d+00 - xceref(5) = 0.1018045837718d+02 - -!--------------------------------------------------------------------- -! reference data for 64X64X64 grids after 200 time steps, with DT = 0.8d-3 -!--------------------------------------------------------------------- - else if (problem_size .eq. 64 .and. problem_size .eq. 64 .and. pro - &blem_size .eq. 64 .and. no_time_steps .eq. 200) then - class = 'A' - dtref = 0.8d-3 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 1.0806346714637264d+02 - xcrref(2) = 1.1319730901220813d+01 - xcrref(3) = 2.5974354511582465d+01 - xcrref(4) = 2.3665622544678910d+01 - xcrref(5) = 2.5278963211748344d+02 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - xceref(1) = 4.2348416040525025d+00 - xceref(2) = 4.4390282496995698d-01 - xceref(3) = 9.6692480136345650d-01 - xceref(4) = 8.8302063039765474d-01 - xceref(5) = 9.7379901770829278d+00 - -!--------------------------------------------------------------------- -! reference data for 102X102X102 grids after 200 time steps, -! with DT = 3.0d-04 -!--------------------------------------------------------------------- - else if (problem_size .eq. 102 .and. problem_size .eq. 102 .and. p - &roblem_size .eq. 102 .and. no_time_steps .eq. 200) then - class = 'B' - dtref = 3.0d-4 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 1.4233597229287254d+03 - xcrref(2) = 9.9330522590150238d+01 - xcrref(3) = 3.5646025644535285d+02 - xcrref(4) = 3.2485447959084092d+02 - xcrref(5) = 3.2707541254659363d+03 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - xceref(1) = 5.2969847140936856d+01 - xceref(2) = 4.4632896115670668d+00 - xceref(3) = 1.3122573342210174d+01 - xceref(4) = 1.2006925323559144d+01 - xceref(5) = 1.2459576151035986d+02 - -!--------------------------------------------------------------------- -! reference data for 162X162X162 grids after 200 time steps, -! with DT = 1.0d-04 -!--------------------------------------------------------------------- - else if (problem_size .eq. 162 .and. problem_size .eq. 162 .and. p - &roblem_size .eq. 162 .and. no_time_steps .eq. 200) then - class = 'C' - dtref = 1.0d-4 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 0.62398116551764615d+04 - xcrref(2) = 0.50793239190423964d+03 - xcrref(3) = 0.15423530093013596d+04 - xcrref(4) = 0.13302387929291190d+04 - xcrref(5) = 0.11604087428436455d+05 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - xceref(1) = 0.16462008369091265d+03 - xceref(2) = 0.11497107903824313d+02 - xceref(3) = 0.41207446207461508d+02 - xceref(4) = 0.37087651059694167d+02 - xceref(5) = 0.36211053051841265d+03 -!--------------------------------------------------------------------- -! reference data for 408x408x408 grids after 250 time steps, with DT = 0.2d-04 -!--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 408) .and. - & (grid_points(2) .eq. 408) .and. - & (grid_points(3) .eq. 408) .and. - & (no_time_steps . eq. 250) ) then - - class = 'D' - dtref = 0.2d-4 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 0.2533188551738d+05 - xcrref(2) = 0.2346393716980d+04 - xcrref(3) = 0.6294554366904d+04 - xcrref(4) = 0.5352565376030d+04 - xcrref(5) = 0.3905864038618d+05 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - - xceref(1) = 0.3100009377557d+03 - xceref(2) = 0.2424086324913d+02 - xceref(3) = 0.7782212022645d+02 - xceref(4) = 0.6835623860116d+02 - xceref(5) = 0.6065737200368d+03 - -!--------------------------------------------------------------------- -! reference data for 1020x1020x1020 grids after 250 time steps, with DT = 0.4d-05 -!--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 1020) .and. - & (grid_points(2) .eq. 1020) .and. - & (grid_points(3) .eq. 1020) .and. - & (no_time_steps . eq. 250) ) then - - class = 'E' - dtref = 0.4d-5 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual. -!--------------------------------------------------------------------- - xcrref(1) = 0.9795372484517d+05 - xcrref(2) = 0.9739814511521d+04 - xcrref(3) = 0.2467606342965d+05 - xcrref(4) = 0.2092419572860d+05 - xcrref(5) = 0.1392138856939d+06 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error. -!--------------------------------------------------------------------- - - xceref(1) = 0.4327562208414d+03 - xceref(2) = 0.3699051964887d+02 - xceref(3) = 0.1089845040954d+03 - xceref(4) = 0.9462517622043d+02 - xceref(5) = 0.7765512765309d+03 - - else - verified = .FALSE. - endif - -!--------------------------------------------------------------------- -! verification test for residuals if gridsize is either 12X12X12 or -! 64X64X64 or 102X102X102 or 162X162X162 -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! Compute the difference of solution values and the known reference values. -!--------------------------------------------------------------------- - do m = 1,5 - xcrdif(m) = dabs ((xcr(m) - xcrref(m)) / xcrref(m)) - xcedif(m) = dabs ((xce(m) - xceref(m)) / xceref(m)) - enddo - -!--------------------------------------------------------------------- -! Output the comparison of computed results to known cases. -!--------------------------------------------------------------------- - if (class .ne. 'U') then - write (unit = *,fmt = 1990) class -1990 format(' Verification being performed for class ', a) - write (unit = *,fmt = 2000) epsilon -2000 format(' accuracy setting for epsilon = ', E20.13) - if (dabs (dt - dtref) .gt. epsilon) then - verified = .FALSE. - class = 'U' - write (unit = *,fmt = 1000) dtref -1000 format(' DT does not match the reference value of ', - & E15.8) - endif - else - write (unit = *,fmt = 1995) -1995 format(' Unknown class') - endif - if (class .ne. 'U') then - write (unit = *,fmt = 2001) - else - write (unit = *,fmt = 2005) - endif -2001 format(' Comparison of RMS-norms of residual') -2005 format(' RMS-norms of residual') - do m = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m,xcr(m) - else if (xcrdif(m) .gt. epsilon .or. isnan(xcrdif(m)))then - verified = .FALSE. - write (unit = *,fmt = 2010) m,xcr(m),xcrref(m),xcrdif(m) - else - write (unit = *,fmt = 2011) m,xcr(m),xcrref(m),xcrdif(m) - endif - enddo - if (class .ne. 'U') then - write (unit = *,fmt = 2002) - else - write (unit = *,fmt = 2006) - endif -2002 format(' Comparison of RMS-norms of solution error') -2006 format(' RMS-norms of solution error') - do m = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m,xce(m) - else if (xcedif(m) .gt. epsilon .or. isnan(xcedif(m))) then - verified = .FALSE. - write (unit = *,fmt = 2010) m,xce(m),xceref(m),xcedif(m) - else - write (unit = *,fmt = 2011) m,xce(m),xceref(m),xcedif(m) - endif - enddo -2010 format(' FAILURE: ', i2, E20.13, E20.13, E20.13) -2011 format(' ', i2, E20.13, E20.13, E20.13) -2015 format(' ', i2, E20.13) - if (class .eq. 'U') then - write (unit = *,fmt = 2022) - write (unit = *,fmt = 2023) -2022 format(' No reference values provided') -2023 format(' No verification performed') - else if (verified) then - write (unit = *,fmt = 2020) -2020 format(' Verification Successful') - else - write (unit = *,fmt = 2021) -2021 format(' Verification failed') - endif - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve.fdv deleted file mode 100644 index 623ac1c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve.fdv +++ /dev/null @@ -1,627 +0,0 @@ -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(IMAX) and rhs'(IMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine x_solve () - - include 'header3d.h' - double precision pivot,coeff - integer i__0,j__1 - integer m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),u_(0:3,5) - double precision rhs_(5) - integer i,j,k,isize - isize = problem_size - 1 - -!--------------------------------------------------------------------- -! outer most do loops - sweeping in i direction -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! begin inner most do loop -! do all the elements of the cell unless last -!--------------------------------------------------------------------- -!, ACROSS(rhs(1:0,0:0,0:0,0:0),lhs__(1:0,0:0,0:0,0:0,0:0)) -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k,j) ON rhs(*,*,j,k),private(u_,i,rhs_,tmp1,tmp2, -!DVM$&tmp3,t1,t2,t3,tm1,tm2,pivot,coeff, tm3,i__0,j__1,tmp11, -!DVM$&tmp22,lhs_,m,n,coeff__2, pivot__3) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do m = 1,5 - u_(0,m) = u(m,0,j,k) - u_(1,m) = u(m,1,j,k) - enddo - do i = 1,isize - 1 - do m = 1,5 - u_(2,m) = u(m,i + 1,j,k) - enddo - -! if(i .ne. isize) then - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tx1 - tmp22 = dt * tx2 - lhs_(1,1,1) = (-(tmp11)) * dx1 - lhs_(1,2,1) = (-(tmp22)) - lhs_(1,3,1) = 0. - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * t2 * u_(0,2))) + - & c2 * 0.50d+00 * (u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * ((2.0d+00 - c2) * (u_(0,2) / u - &_(0,1))) - tmp11 * con43 * c3c4 * t1 - tmp11 * dx2 - lhs_(2,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * t1)) - lhs_(2,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * t1)) - lhs_(2,5,1) = (-(tmp22)) * c2 - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,3,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx3 - lhs_(3,4,1) = 0. - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,3,1) = 0. - lhs_(4,4,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,2) * t1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * t3 * u_(0, - &2)** 2 - (c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * (3.0d+00 * u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((con43 * c3c4 - c1345) * t2 * u_(0,2)) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * (u_(0,2) * t1) - tmp11 * - &c1345 * t1 - tmp11 * dx5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dx1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dx2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx4 - lhs_(4,5,2) = tmp11 * 2.0d+00 * 0 - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(con43 * c3c4 - c1345) - &) * tmp3 * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * ((con43 * c3c4 - c1345) * - & tmp2 * u_(1,2)) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dx5 - if (i .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dx1 - lhs_(1,2,3) = tmp22 - lhs_(1,3,3) = 0. - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * tm2 * u_(2,2))) + c2 - &* 0.50d+00 * (u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * ((2.0d+00 - c2) * (u_(2,2) / u_(2,1 - &))) - tmp11 * con43 * c3c4 * tm1 - tmp11 * dx2 - lhs_(2,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * tm1)) - lhs_(2,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * tm1)) - lhs_(2,5,3) = tmp22 * c2 - lhs_(3,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,3,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx3 - lhs_(3,4,3) = 0. - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,3,3) = 0. - lhs_(4,4,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,2) * tm1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * tm3 * u_(2,2 - &)** 2 - (c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * (3.0d+00 * u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((con43 * c3c4 - c1345) * tm2 * u_(2,2)) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * (u_(2,2) * tm1) - tmp11 * c134 - &5 * tm1 - tmp11 * dx5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1 - &,j,k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3 - &,i - 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * - & rhs(5,i - 1,j,k) - enddo - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - -! else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1,j, - &k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3,i - &- 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * rh - &s(5,i - 1,j,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - -! endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - -! enddo - do i = problem_size - 2,0,(-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhs(1,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhs(2,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhs(3,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhs(4,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhs(5,i + 1,j,k) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - enddo - enddo - -!DVM$ end region - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_block.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_block.fdv deleted file mode 100644 index 5219404..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_block.fdv +++ /dev/null @@ -1,640 +0,0 @@ -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(IMAX) and rhs'(IMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine x_solve () - - include 'header3d.h' - double precision pivot,coeff - integer i__0,j__1 - integer m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),u_(0:3,5) - double precision rhs_(5) - integer i,j,k,isize,low_k,high_k,k1,maxBlK - isize = problem_size - 1 - if(mod((problem_size - 2), BL) .eq. 0) then - maxBlK = (problem_size - 2) / BL - else - maxblK = (problem_size - 2) / BL + 1 - endif -!--------------------------------------------------------------------- -! outer most do loops - sweeping in i direction -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! begin inner most do loop -! do all the elements of the cell unless last -!--------------------------------------------------------------------- -!, ACROSS(rhs(1:0,0:0,0:0,0:0),lhs__(1:0,0:0,0:0,0:0,0:0)) -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k1, j) ON rhs(*,*,j,k1),private(u_,i,rhs_,tmp1,tmp2, -!DVM$&tmp3,t1,t2,t3,tm1,tm2,pivot,coeff, tm3,i__0,j__1,tmp11, -!DVM$&tmp22,lhs_,m,n,coeff__2, pivot__3,low_k,high_k,k), -!DVM$&cuda_block(32) - do k1 = 1, maxblK - do j = 1, problem_size - 2 - low_k = (k1 - 1) * BL + 1 - high_k = k1 * BL - if(high_k .gt. problem_size - 2) then - high_k = problem_size - 2 - endif - do k = low_k, high_k - do m = 1,5 - u_(0,m) = u(m,0,j,k) - u_(1,m) = u(m,1,j,k) - enddo - do i = 1,isize - 1 - do m = 1,5 - u_(2,m) = u(m,i + 1,j,k) - enddo - -! if(i .ne. isize) then - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tx1 - tmp22 = dt * tx2 - lhs_(1,1,1) = (-(tmp11)) * dx1 - lhs_(1,2,1) = (-(tmp22)) - lhs_(1,3,1) = 0. - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * t2 * u_(0,2))) + - & c2 * 0.50d+00 * (u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * ((2.0d+00 - c2) * (u_(0,2) / u - &_(0,1))) - tmp11 * con43 * c3c4 * t1 - tmp11 * dx2 - lhs_(2,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * t1)) - lhs_(2,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * t1)) - lhs_(2,5,1) = (-(tmp22)) * c2 - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,3,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx3 - lhs_(3,4,1) = 0. - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,3,1) = 0. - lhs_(4,4,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,2) * t1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * t3 * u_(0, - &2)** 2 - (c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * (3.0d+00 * u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((con43 * c3c4 - c1345) * t2 * u_(0,2)) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * (u_(0,2) * t1) - tmp11 * - &c1345 * t1 - tmp11 * dx5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dx1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dx2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx4 - lhs_(4,5,2) = tmp11 * 2.0d+00 * 0 - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(con43 * c3c4 - c1345) - &) * tmp3 * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * ((con43 * c3c4 - c1345) * - & tmp2 * u_(1,2)) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dx5 - if (i .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dx1 - lhs_(1,2,3) = tmp22 - lhs_(1,3,3) = 0. - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * tm2 * u_(2,2))) + c2 - &* 0.50d+00 * (u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * ((2.0d+00 - c2) * (u_(2,2) / u_(2,1 - &))) - tmp11 * con43 * c3c4 * tm1 - tmp11 * dx2 - lhs_(2,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * tm1)) - lhs_(2,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * tm1)) - lhs_(2,5,3) = tmp22 * c2 - lhs_(3,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,3,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx3 - lhs_(3,4,3) = 0. - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,3,3) = 0. - lhs_(4,4,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,2) * tm1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * tm3 * u_(2,2 - &)** 2 - (c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * (3.0d+00 * u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((con43 * c3c4 - c1345) * tm2 * u_(2,2)) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * (u_(2,2) * tm1) - tmp11 * c134 - &5 * tm1 - tmp11 * dx5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1 - &,j,k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3 - &,i - 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * - & rhs(5,i - 1,j,k) - enddo - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k1) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k1) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k1) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k1) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k1) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - -! else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1,j, - &k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3,i - &- 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * rh - &s(5,i - 1,j,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - -! endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - -! enddo - do i = problem_size - 2,0,(-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k1) * rhs(1,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k1) * rhs(2,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k1) * rhs(3,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k1) * rhs(4,i + 1,j,k) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k1) * rhs(5,i + 1,j,k) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - - enddo - enddo - enddo - -!DVM$ end region - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_mpi.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_mpi.fdv deleted file mode 100644 index 4665bbd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/x_solve_mpi.fdv +++ /dev/null @@ -1,640 +0,0 @@ -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(IMAX) and rhs'(IMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine x_solve () - - include 'header3d.h' - double precision pivot,coeff - integer i__0,j__1 - integer m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),u_(0:3,5) - double precision rhs_(5),rhsp_(5) - integer i,j,k,isize - isize = problem_size - 1 - -!--------------------------------------------------------------------- -! outer most do loops - sweeping in i direction -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! begin inner most do loop -! do all the elements of the cell unless last -!--------------------------------------------------------------------- - -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k),private(u_,rhs_,tmp1,tmp2, -!DVM$&tmp3,t1,t2,t3,tm1,tm2,pivot,coeff, tm3,i__0,j__1,tmp11, -!DVM$&tmp22,lhs_,m,n,coeff__2, pivot__3),stage(stage_n), -!DVM$& ACROSS(rhs(0:0,1:0,0:0,0:0),lhs__(0:0,0:0,1:0,0:0,0:0)) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = 1,isize - 1 - if(i .ne. isize) then - do m = 1,5 - lhs_(m,1,3) = lhs__(m,1,i-1,j,k) - lhs_(m,2,3) = lhs__(m,2,i-1,j,k) - lhs_(m,3,3) = lhs__(m,3,i-1,j,k) - lhs_(m,4,3) = lhs__(m,4,i-1,j,k) - lhs_(m,5,3) = lhs__(m,5,i-1,j,k) - - u_(0,m) = u(m,i-1,j,k) - u_(1,m) = u(m,i,j,k) - u_(2,m) = u(m,i+1,j,k) - enddo - - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tx1 - tmp22 = dt * tx2 - lhs_(1,1,1) = (-(tmp11)) * dx1 - lhs_(1,2,1) = (-(tmp22)) - lhs_(1,3,1) = 0. - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * t2 * u_(0,2))) + - & c2 * 0.50d+00 * (u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * ((2.0d+00 - c2) * (u_(0,2) / u - &_(0,1))) - tmp11 * con43 * c3c4 * t1 - tmp11 * dx2 - lhs_(2,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * t1)) - lhs_(2,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * t1)) - lhs_(2,5,1) = (-(tmp22)) * c2 - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,3,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx3 - lhs_(3,4,1) = 0. - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,3,1) = 0. - lhs_(4,4,1) = (-(tmp22)) * u_(0,2) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dx4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,2) * t1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * t3 * u_(0, - &2)** 2 - (c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * (3.0d+00 * u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - &* u_(0,4)) * t2) - tmp11 * ((con43 * c3c4 - c1345) * t2 * u_(0,2)) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,4) * u_(0,2)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * (u_(0,2) * t1) - tmp11 * - &c1345 * t1 - tmp11 * dx5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dx1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dx2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dx4 - lhs_(4,5,2) = tmp11 * 2.0d+00 * 0 - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(con43 * c3c4 - c1345) - &) * tmp3 * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * ((con43 * c3c4 - c1345) * - & tmp2 * u_(1,2)) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dx5 - if (i .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dx1 - lhs_(1,2,3) = tmp22 - lhs_(1,3,3) = 0. - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * tm2 * u_(2,2))) + c2 - &* 0.50d+00 * (u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * ((2.0d+00 - c2) * (u_(2,2) / u_(2,1 - &))) - tmp11 * con43 * c3c4 * tm1 - tmp11 * dx2 - lhs_(2,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * tm1)) - lhs_(2,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * tm1)) - lhs_(2,5,3) = tmp22 * c2 - lhs_(3,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,3,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx3 - lhs_(3,4,3) = 0. - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,3,3) = 0. - lhs_(4,4,3) = tmp22 * u_(2,2) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dx4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,2) * tm1)) - tmp11 * ((-(con43 * c3c4 - c1345)) * tm3 * u_(2,2 - &)** 2 - (c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * (3.0d+00 * u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u_ - &(2,4)) * tm2) - tmp11 * ((con43 * c3c4 - c1345) * tm2 * u_(2,2)) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,4) * u_(2,2)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * (u_(2,2) * tm1) - tmp11 * c134 - &5 * tm1 - tmp11 * dx5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1 - &,j,k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3 - &,i - 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * - & rhs(5,i - 1,j,k) - enddo - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo -! enddo - - else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i - 1,j, - &k) - lhs_(i__0,2,1) * rhs(2,i - 1,j,k) - lhs_(i__0,3,1) * rhs(3,i - &- 1,j,k) - lhs_(i__0,4,1) * rhs(4,i - 1,j,k) - lhs_(i__0,5,1) * rh - &s(5,i - 1,j,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - - endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - - enddo - enddo - enddo - -! enddo - -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k),private(m,rhsp_,rhs_), -!DVM$& ACROSS(rhs(0:0,0:1,0:0,0:0)),stage(stage_n) - do k = 1,problem_size - 2 - do j = 1,problem_size - 2 - do i = problem_size - 2,0,(-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - rhsp_(m) = rhs(m,i+1,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhsp_(1) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhsp_(2) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhsp_(3) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhsp_(4) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhsp_(5) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - enddo - enddo - -!DVM$ end region - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve.fdv deleted file mode 100644 index 5bd0f87..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve.fdv +++ /dev/null @@ -1,622 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(JMAX) and rhs'(JMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine y_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),u_(0:3,5) - integer i,j,k,jsize,jstart - jstart = 0 - jsize = problem_size - 1 - -!ACROSS (rhs(0:0,1:0,0:0,0:0),lhs__(0:0,1:0,0:0,0:0,0:0)) -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k,i) ON rhs(*,i,*,k), private(u_,j,rhs_,pivot, -!DVM$&coeff,tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3, tmp11, -!DVM$&tmp22, i__0, j__1,lhs_,coeff__2,pivot__3,m,n) - do k = 1,problem_size - 2 - do i = 1,problem_size - 2 - do m = 1,5 - u_(0,m) = u(m,i,0,k) - u_(1,m) = u(m,i,1,k) - enddo - do j = 1,jsize - 1 - do m = 1,5 - u_(2,m) = u(m,i,j + 1,k) - enddo - -! if(j .ne. jsize) then - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * ty1 - tmp22 = dt * ty2 - lhs_(1,1,1) = (-(tmp11)) * dy1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = (-(tmp22)) - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy2 - lhs_(2,3,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,4,1) = 0. - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,3) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(3,3,1) = (-(tmp22)) * ((2.0d+00 - c2) * u_(0,3) * t1 - &) - tmp11 * con43 * c3c4 * t1 - tmp11 * dy3 - lhs_(3,4,1) = (-(tmp22)) * ((-(c2)) * u_(0,4) * t1) - lhs_(3,5,1) = (-(tmp22)) * c2 - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = 0. - lhs_(4,3,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,4,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * u_(0,5) * t1) * u - &_(0,3) * t1) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - (co - &n43 * c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * u_( - &0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * u_(0,3) * - & t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * ((u_(0,2) * u_(0,2) + 3.0d+00 * u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,3) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dy5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dy1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dy3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (con43 * c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dy5 - if (j .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dy1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = tmp22 - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy2 - lhs_(2,3,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,4,3) = 0. - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,3) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(3,3,3) = tmp22 * ((2.0d+00 - c2) * u_(2,3) * tm1) - - &tmp11 * con43 * c3c4 * tm1 - tmp11 * dy3 - lhs_(3,4,3) = tmp22 * ((-(c2)) * u_(2,4) * tm1) - lhs_(3,5,3) = tmp22 * c2 - lhs_(4,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = 0. - lhs_(4,3,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,4,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * u_(2,5) * tm1) * u_(2 - &,3) * tm1) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - (con - &43 * c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 * u_ - &(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * u_(2,2) * u_(2,3) * tm2) - & - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * ((u_(2,2) * u_(2,2) + 3.0d+00 * u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,3) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dy5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j - - & 1,k) - lhs_(i__0,2,1) * rhs(2,i,j - 1,k) - lhs_(i__0,3,1) * rhs(3 - &,i,j - 1,k) - lhs_(i__0,4,1) * rhs(4,i,j - 1,k) - lhs_(i__0,5,1) * - & rhs(5,i,j - 1,k) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - -! else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,jsize - &- 1,k) - lhs_(i__0,2,1) * rhs(2,i,jsize - 1,k) - lhs_(i__0,3,1) * - &rhs(3,i,jsize - 1,k) - lhs_(i__0,4,1) * rhs(4,i,jsize - 1,k) - lhs - &_(i__0,5,1) * rhs(5,i,jsize - 1,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - -! endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - -! enddo - do j = problem_size - 2,0,(-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhs(1,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhs(2,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhs(3,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhs(4,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhs(5,i,j + 1,k) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_block.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_block.fdv deleted file mode 100644 index 5d91c64..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_block.fdv +++ /dev/null @@ -1,635 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(JMAX) and rhs'(JMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine y_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),u_(0:3,5) - integer i,j,k,jsize,low_k,high_k,k1,maxBlK - jsize = problem_size - 1 - - if(mod((problem_size - 2), BL) .eq. 0) then - maxBlK = (problem_size - 2) / BL - else - maxblK = (problem_size - 2) / BL + 1 - endif -!ACROSS (rhs(0:0,1:0,0:0,0:0),lhs__(0:0,1:0,0:0,0:0,0:0)) -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k1,i) ON rhs(*,i,*,k1), private(u_,j,rhs_,pivot, -!DVM$&coeff,tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3, tmp11, -!DVM$&tmp22, i__0, j__1,lhs_,coeff__2,pivot__3,m,n,k,low_k,high_k) -!DVM$&,cuda_block(32) - do k1 = 1, maxBlK - do i = 1, problem_size - 2 - low_k = (k1 - 1) * BL + 1 - high_k = k1 * BL - if(high_k .gt. problem_size - 2) then - high_k = problem_size - 2 - endif - do k = low_k, high_k - do m = 1,5 - u_(0,m) = u(m,i,0,k) - u_(1,m) = u(m,i,1,k) - enddo - do j = 1,jsize - 1 - do m = 1,5 - u_(2,m) = u(m,i,j + 1,k) - enddo - -! if(j .ne. jsize) then - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * ty1 - tmp22 = dt * ty2 - lhs_(1,1,1) = (-(tmp11)) * dy1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = (-(tmp22)) - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy2 - lhs_(2,3,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,4,1) = 0. - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,3) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(3,3,1) = (-(tmp22)) * ((2.0d+00 - c2) * u_(0,3) * t1 - &) - tmp11 * con43 * c3c4 * t1 - tmp11 * dy3 - lhs_(3,4,1) = (-(tmp22)) * ((-(c2)) * u_(0,4) * t1) - lhs_(3,5,1) = (-(tmp22)) * c2 - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = 0. - lhs_(4,3,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,4,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * u_(0,5) * t1) * u - &_(0,3) * t1) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - (co - &n43 * c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * u_( - &0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * u_(0,3) * - & t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * ((u_(0,2) * u_(0,2) + 3.0d+00 * u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,3) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dy5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dy1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dy3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (con43 * c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dy5 - if (j .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dy1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = tmp22 - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy2 - lhs_(2,3,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,4,3) = 0. - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,3) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(3,3,3) = tmp22 * ((2.0d+00 - c2) * u_(2,3) * tm1) - - &tmp11 * con43 * c3c4 * tm1 - tmp11 * dy3 - lhs_(3,4,3) = tmp22 * ((-(c2)) * u_(2,4) * tm1) - lhs_(3,5,3) = tmp22 * c2 - lhs_(4,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = 0. - lhs_(4,3,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,4,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * u_(2,5) * tm1) * u_(2 - &,3) * tm1) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - (con - &43 * c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 * u_ - &(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * u_(2,2) * u_(2,3) * tm2) - & - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * ((u_(2,2) * u_(2,2) + 3.0d+00 * u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,3) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dy5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j - - & 1,k) - lhs_(i__0,2,1) * rhs(2,i,j - 1,k) - lhs_(i__0,3,1) * rhs(3 - &,i,j - 1,k) - lhs_(i__0,4,1) * rhs(4,i,j - 1,k) - lhs_(i__0,5,1) * - & rhs(5,i,j - 1,k) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k1) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k1) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k1) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k1) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k1) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - -! else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,jsize - &- 1,k) - lhs_(i__0,2,1) * rhs(2,i,jsize - 1,k) - lhs_(i__0,3,1) * - &rhs(3,i,jsize - 1,k) - lhs_(i__0,4,1) * rhs(4,i,jsize - 1,k) - lhs - &_(i__0,5,1) * rhs(5,i,jsize - 1,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - -! endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - -! enddo - do j = problem_size - 2,0,(-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k1) * rhs(1,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k1) * rhs(2,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k1) * rhs(3,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k1) * rhs(4,i,j + 1,k) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k1) * rhs(5,i,j + 1,k) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - - enddo - enddo - enddo - -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_mpi.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_mpi.fdv deleted file mode 100644 index d0d5fdd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/y_solve_mpi.fdv +++ /dev/null @@ -1,634 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(JMAX) and rhs'(JMAX) will be sent to next cell -!--------------------------------------------------------------------- - subroutine y_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),rhsp_(5),u_(0:3,5) - integer i,j,k,jsize,jstart - jstart = 0 - jsize = problem_size - 1 - -!DVM$ region local(lhs__) -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), private(u_,rhs_,pivot, -!DVM$&coeff,tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3, tmp11, -!DVM$&tmp22, i__0, j__1,lhs_,coeff__2,pivot__3,m,n),stage(stage_n), -!DVM$& ACROSS(rhs(0:0,0:0,1:0,0:0),lhs__(0:0,0:0,0:0,1:0,0:0)) - do k = 1,problem_size - 2 - do j = 1,jsize - 1 - do i = 1,problem_size - 2 - if(j .ne. jsize) then - - do m = 1,5 - lhs_(m,1,3) = lhs__(m,1,i,j-1,k) - lhs_(m,2,3) = lhs__(m,2,i,j-1,k) - lhs_(m,3,3) = lhs__(m,3,i,j-1,k) - lhs_(m,4,3) = lhs__(m,4,i,j-1,k) - lhs_(m,5,3) = lhs__(m,5,i,j-1,k) - - u_(0,m) = u(m,i,j-1,k) - u_(1,m) = u(m,i,j,k) - u_(2,m) = u(m,i,j+1,k) - enddo - - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * ty1 - tmp22 = dt * ty2 - lhs_(1,1,1) = (-(tmp11)) * dy1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = (-(tmp22)) - lhs_(1,4,1) = 0. - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,3))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy2 - lhs_(2,3,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,4,1) = 0. - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,3) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,3)) - lhs_(3,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(3,3,1) = (-(tmp22)) * ((2.0d+00 - c2) * u_(0,3) * t1 - &) - tmp11 * con43 * c3c4 * t1 - tmp11 * dy3 - lhs_(3,4,1) = (-(tmp22)) * ((-(c2)) * u_(0,4) * t1) - lhs_(3,5,1) = (-(tmp22)) * c2 - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,4)) - lhs_(4,2,1) = 0. - lhs_(4,3,1) = (-(tmp22)) * u_(0,4) * t1 - lhs_(4,4,1) = (-(tmp22)) * u_(0,3) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dy4 - lhs_(4,5,1) = 0. - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * u_(0,5) * t1) * u - &_(0,3) * t1) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - (co - &n43 * c3c4 - c1345) * t3 * u_(0,3)** 2 - (c3c4 - c1345) * t3 * u_( - &0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * u_(0,3) * - & t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * (c1 * u_(0,5) * t1 - 0.50d+00 - &* c2 * ((u_(0,2) * u_(0,2) + 3.0d+00 * u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,3) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dy5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dy1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3c4 * - &tmp1 + tmp11 * 2.0d+00 * dy3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dy4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (con43 * c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dy5 - if (j .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dy1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = tmp22 - lhs_(1,4,3) = 0. - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,3))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy2 - lhs_(2,3,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,4,3) = 0. - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,3) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,3)) - lhs_(3,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(3,3,3) = tmp22 * ((2.0d+00 - c2) * u_(2,3) * tm1) - - &tmp11 * con43 * c3c4 * tm1 - tmp11 * dy3 - lhs_(3,4,3) = tmp22 * ((-(c2)) * u_(2,4) * tm1) - lhs_(3,5,3) = tmp22 * c2 - lhs_(4,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,4)) - lhs_(4,2,3) = 0. - lhs_(4,3,3) = tmp22 * u_(2,4) * tm1 - lhs_(4,4,3) = tmp22 * u_(2,3) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dy4 - lhs_(4,5,3) = 0. - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * u_(2,5) * tm1) * u_(2 - &,3) * tm1) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - (con - &43 * c3c4 - c1345) * tm3 * u_(2,3)** 2 - (c3c4 - c1345) * tm3 * u_ - &(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * u_(2,2) * u_(2,3) * tm2) - & - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * (c1 * u_(2,5) * tm1 - 0.50d+00 * c2 - & * ((u_(2,2) * u_(2,2) + 3.0d+00 * u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,3) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dy5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j - - & 1,k) - lhs_(i__0,2,1) * rhs(2,i,j - 1,k) - lhs_(i__0,3,1) * rhs(3 - &,i,j - 1,k) - lhs_(i__0,4,1) * rhs(4,i,j - 1,k) - lhs_(i__0,5,1) * - & rhs(5,i,j - 1,k) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo -! enddo - - else ! ******************* else case ************************* - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,jsize - &- 1,k) - lhs_(i__0,2,1) * rhs(2,i,jsize - 1,k) - lhs_(i__0,3,1) * - &rhs(3,i,jsize - 1,k) - lhs_(i__0,4,1) * rhs(4,i,jsize - 1,k) - lhs - &_(i__0,5,1) * rhs(5,i,jsize - 1,k) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - - endif - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - - enddo - enddo - enddo - - -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), private(m, rhs_,rhsp_) -!DVM$& ,ACROSS(rhs(0:0,0:0,0:1,0:0)),stage(stage_n) - do k = 1,problem_size - 2 - do j = problem_size - 2,0,(-(1)) - do i = 1,problem_size - 2 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - rhsp_(m) = rhs(m,i,j+1,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhsp_(1) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhsp_(2) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhsp_(3) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhsp_(4) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhsp_(5) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - enddo - enddo - enddo - -!DVM$ end region - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve.fdv deleted file mode 100644 index d967666..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve.fdv +++ /dev/null @@ -1,623 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(KMAX) and rhs'(KMAX) will be sent to next cell. -!--------------------------------------------------------------------- - subroutine z_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),rhsp_(5),u_(0:3,5) - integer i,j,k,ksize, k1 - ksize = problem_size - 1 - -!DVM$ region local(lhs__) -!DVM$ PARALLEL (j,i) ON rhs(*,i,j,*), private(k,u_,rhs_,pivot, -!DVM$& coeff, tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3,rhsp_, -!DVM$& tmp11, tmp22, i__0, j__1,lhs_,n,m,pivot__3,coeff__2) - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - do m = 1,5 - u_(0,m) = u(m,i,j,0) - u_(1,m) = u(m,i,j,1) - enddo - do k = 1,ksize - 1 - do m = 1,5 - u_(2,m) = u(m,i,j,k + 1) - enddo - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tz1 - tmp22 = dt * tz2 - lhs_(1,1,1) = (-(tmp11)) * dz1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = 0. - lhs_(1,4,1) = (-(tmp22)) - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz2 - lhs_(2,3,1) = 0. - lhs_(2,4,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = 0. - lhs_(3,3,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz3 - lhs_(3,4,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,4) * u_(0,4) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(4,3,1) = (-(tmp22)) * ((-(c2)) * u_(0,3) * t1) - lhs_(4,4,1) = (-(tmp22)) * (2.0d+00 - c2) * u_(0,4) * t1 - &- tmp11 * con43 * c3 * c4 * t1 - tmp11 * dz4 - lhs_(4,5,1) = (-(tmp22)) * c2 - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,4) * t1)) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - - & (c3c4 - c1345) * t3 * u_(0,3)** 2 - (con43 * c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * (u_(0,2) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * (c1 * (u_(0,5) * t1) - 0.50d+0 - &0 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + 3.0d+00 * u_(0, - &4) * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0, - &4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,4) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dz5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dz1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3 * c4 - & * tmp1 + tmp11 * 2.0d+00 * dz4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (con43 * c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dz5 - if (k .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dz1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = 0. - lhs_(1,4,3) = tmp22 - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz2 - lhs_(2,3,3) = 0. - lhs_(2,4,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = 0. - lhs_(3,3,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz3 - lhs_(3,4,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,4) * u_(2,4) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(4,3,3) = tmp22 * ((-(c2)) * u_(2,3) * tm1) - lhs_(4,4,3) = tmp22 * (2.0d+00 - c2) * u_(2,4) * tm1 - tm - &p11 * con43 * c3 * c4 * tm1 - tmp11 * dz4 - lhs_(4,5,3) = tmp22 * c2 - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,4) * tm1)) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - - &(c3c4 - c1345) * tm3 * u_(2,3)** 2 - (con43 * c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * (u_(2,2) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * (c1 * (u_(2,5) * tm1) - 0.50d+00 * - &c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + 3.0d+00 * u_(2,4) * - & u_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,4) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dz5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,k - & - 1) - lhs_(i__0,2,1) * rhs(2,i,j,k - 1) - lhs_(i__0,3,1) * rhs(3 - &,i,j,k - 1) - lhs_(i__0,4,1) * rhs(4,i,j,k - 1) - lhs_(i__0,5,1) * - & rhs(5,i,j,k - 1) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,ksiz - &e - 1) - lhs_(i__0,2,1) * rhs(2,i,j,ksize - 1) - lhs_(i__0,3,1) * - &rhs(3,i,j,ksize - 1) - lhs_(i__0,4,1) * rhs(4,i,j,ksize - 1) - lhs - &_(i__0,5,1) * rhs(5,i,j,ksize - 1) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - - k = ksize-1 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - rhsp_(m) = rhs(m,i,j,k + 1) - enddo - do k = ksize-1, 1, (-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhsp_(1) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhsp_(2) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhsp_(3) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhsp_(4) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhsp_(5) - enddo - do m = 1,5 - rhsp_(m) = rhs_(m) - u(m,i,j,k) = u(m,i,j,k) + rhs_(m) - enddo - enddo - enddo - enddo -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_block.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_block.fdv deleted file mode 100644 index ac97c19..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_block.fdv +++ /dev/null @@ -1,636 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(KMAX) and rhs'(KMAX) will be sent to next cell. -!--------------------------------------------------------------------- - subroutine z_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),rhsp_(5),u_(0:3,5) - integer i,j,k,ksize,j1,maxblJ,low_j,high_j - ksize = problem_size - 1 - if(mod((problem_size - 2), BL) .eq. 0) then - maxBlJ = (problem_size - 2) / BL - else - maxblJ = (problem_size - 2) / BL + 1 - endif -!DVM$ region local(lhs__) -!DVM$ PARALLEL (j1,i) ON rhs(*,i,j1,*), private(k,u_,rhs_,pivot, -!DVM$& coeff, tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3,rhsp_, -!DVM$& tmp11, tmp22, i__0, j__1,lhs_,n,m,pivot__3, -!DVM$& coeff__2,j,low_j,high_j),cuda_block(32) - do j1 = 1, maxBlJ - do i = 1, problem_size - 2 - low_j = (j1 - 1) * BL + 1 - high_j = j1 * BL - if(high_j .gt. problem_size - 2) then - high_j = problem_size - 2 - endif - do j = low_j, high_j - do m = 1,5 - u_(0,m) = u(m,i,j,0) - u_(1,m) = u(m,i,j,1) - enddo - do k = 1,ksize - 1 - do m = 1,5 - u_(2,m) = u(m,i,j,k + 1) - enddo - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tz1 - tmp22 = dt * tz2 - lhs_(1,1,1) = (-(tmp11)) * dz1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = 0. - lhs_(1,4,1) = (-(tmp22)) - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz2 - lhs_(2,3,1) = 0. - lhs_(2,4,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = 0. - lhs_(3,3,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz3 - lhs_(3,4,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,4) * u_(0,4) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(4,3,1) = (-(tmp22)) * ((-(c2)) * u_(0,3) * t1) - lhs_(4,4,1) = (-(tmp22)) * (2.0d+00 - c2) * u_(0,4) * t1 - &- tmp11 * con43 * c3 * c4 * t1 - tmp11 * dz4 - lhs_(4,5,1) = (-(tmp22)) * c2 - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,4) * t1)) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - - & (c3c4 - c1345) * t3 * u_(0,3)** 2 - (con43 * c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * (u_(0,2) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * (c1 * (u_(0,5) * t1) - 0.50d+0 - &0 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + 3.0d+00 * u_(0, - &4) * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0, - &4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,4) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dz5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dz1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3 * c4 - & * tmp1 + tmp11 * 2.0d+00 * dz4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (con43 * c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dz5 - if (k .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dz1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = 0. - lhs_(1,4,3) = tmp22 - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz2 - lhs_(2,3,3) = 0. - lhs_(2,4,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = 0. - lhs_(3,3,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz3 - lhs_(3,4,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,4) * u_(2,4) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(4,3,3) = tmp22 * ((-(c2)) * u_(2,3) * tm1) - lhs_(4,4,3) = tmp22 * (2.0d+00 - c2) * u_(2,4) * tm1 - tm - &p11 * con43 * c3 * c4 * tm1 - tmp11 * dz4 - lhs_(4,5,3) = tmp22 * c2 - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,4) * tm1)) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - - &(c3c4 - c1345) * tm3 * u_(2,3)** 2 - (con43 * c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * (u_(2,2) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * (c1 * (u_(2,5) * tm1) - 0.50d+00 * - &c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + 3.0d+00 * u_(2,4) * - & u_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,4) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dz5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,k - & - 1) - lhs_(i__0,2,1) * rhs(2,i,j,k - 1) - lhs_(i__0,3,1) * rhs(3 - &,i,j,k - 1) - lhs_(i__0,4,1) * rhs(4,i,j,k - 1) - lhs_(i__0,5,1) * - & rhs(5,i,j,k - 1) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,k,j1) = lhs_(i__0,1,3) - lhs__(i__0,2,i,k,j1) = lhs_(i__0,2,3) - lhs__(i__0,3,i,k,j1) = lhs_(i__0,3,3) - lhs__(i__0,4,i,k,j1) = lhs_(i__0,4,3) - lhs__(i__0,5,i,k,j1) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u_(0,m) = u_(1,m) - u_(1,m) = u_(2,m) - enddo - enddo - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,ksiz - &e - 1) - lhs_(i__0,2,1) * rhs(2,i,j,ksize - 1) - lhs_(i__0,3,1) * - &rhs(3,i,j,ksize - 1) - lhs_(i__0,4,1) * rhs(4,i,j,ksize - 1) - lhs - &_(i__0,5,1) * rhs(5,i,j,ksize - 1) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - - k = ksize-1 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - rhsp_(m) = rhs(m,i,j,k + 1) - enddo - do k = ksize-1, 1, (-(1)) - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,k,j1) * rhsp_(1) - rhs_(m) = rhs_(m) - lhs__(m,2,i,k,j1) * rhsp_(2) - rhs_(m) = rhs_(m) - lhs__(m,3,i,k,j1) * rhsp_(3) - rhs_(m) = rhs_(m) - lhs__(m,4,i,k,j1) * rhsp_(4) - rhs_(m) = rhs_(m) - lhs__(m,5,i,k,j1) * rhsp_(5) - enddo - do m = 1,5 - rhsp_(m) = rhs_(m) - u(m,i,j,k) = u(m,i,j,k) + rhs_(m) - enddo - enddo - - enddo - enddo - enddo -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_mpi.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_mpi.fdv deleted file mode 100644 index 20f8f35..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/BT/z_solve_mpi.fdv +++ /dev/null @@ -1,640 +0,0 @@ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! performs guaussian elimination on this cell. -! -! assumes that unpacking routines for non-first cells -! preload C' and rhs' from previous cell. -! -! assumed send happens outside this routine, but that -! c'(KMAX) and rhs'(KMAX) will be sent to next cell. -!--------------------------------------------------------------------- - subroutine z_solve () - - include 'header3d.h' - double precision coeff - double precision pivot - integer i__0 - integer j__1,m,n,zst - double precision coeff__2 - double precision pivot__3 - double precision lhs_(5,5,3),rhs_(5),rhsp_(5),u_(0:3,5) - integer i,j,k,ksize, k1 - ksize = problem_size - 1 - zst = ksize -!DVM$ region local(lhs__) - -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), private(u_,rhs_,pivot, -!DVM$& coeff, tmp1, tmp2, tmp3, t1, t2, t3, tm1, tm2, tm3, -!DVM$& tmp11, tmp22, i__0, j__1,lhs_,n,m,pivot__3,coeff__2), -!DVM$& stage(stage_n) -!DVM$& ,ACROSS(rhs(0:0,0:0,0:0,1:0),lhs__(0:0,0:0,0:0,0:0,1:0)) - do k = 1, problem_size - 1 - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - - if( k .ne. problem_size - 1) then - do m = 1,5 - lhs_(m,1,3) = lhs__(m,1,i,j,k-1) - lhs_(m,2,3) = lhs__(m,2,i,j,k-1) - lhs_(m,3,3) = lhs__(m,3,i,j,k-1) - lhs_(m,4,3) = lhs__(m,4,i,j,k-1) - lhs_(m,5,3) = lhs__(m,5,i,j,k-1) - - u_(0,m) = u(m,i,j,k - 1) - u_(1,m) = u(m,i,j,k) - u_(2,m) = u(m,i,j,k + 1) - enddo - tmp1 = 1.0d+00 / u_(1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - t1 = 1.0d+00 / u_(0,1) - t2 = t1 * t1 - t3 = t1 * t2 - tm1 = 1.0d+00 / u_(2,1) - tm2 = tm1 * tm1 - tm3 = tm1 * tm2 - tmp11 = dt * tz1 - tmp22 = dt * tz2 - lhs_(1,1,1) = (-(tmp11)) * dz1 - lhs_(1,2,1) = 0. - lhs_(1,3,1) = 0. - lhs_(1,4,1) = (-(tmp22)) - lhs_(1,5,1) = 0. - lhs_(2,1,1) = (-(tmp22)) * ((-(u_(0,2) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,2)) - lhs_(2,2,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz2 - lhs_(2,3,1) = 0. - lhs_(2,4,1) = (-(tmp22)) * u_(0,2) * t1 - lhs_(2,5,1) = 0. - lhs_(3,1,1) = (-(tmp22)) * ((-(u_(0,3) * u_(0,4))) * t2) - &- tmp11 * ((-(c3c4)) * t2 * u_(0,3)) - lhs_(3,2,1) = 0. - lhs_(3,3,1) = (-(tmp22)) * u_(0,4) * t1 - tmp11 * c3c4 * - &t1 - tmp11 * dz3 - lhs_(3,4,1) = (-(tmp22)) * u_(0,3) * t1 - lhs_(3,5,1) = 0. - lhs_(4,1,1) = (-(tmp22)) * ((-(u_(0,4) * u_(0,4) * t2)) + - & 0.50d+00 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + u_(0,4) - & * u_(0,4)) * t2)) - tmp11 * ((-(con43)) * c3c4 * t2 * u_(0,4)) - lhs_(4,2,1) = (-(tmp22)) * ((-(c2)) * u_(0,2) * t1) - lhs_(4,3,1) = (-(tmp22)) * ((-(c2)) * u_(0,3) * t1) - lhs_(4,4,1) = (-(tmp22)) * (2.0d+00 - c2) * u_(0,4) * t1 - &- tmp11 * con43 * c3 * c4 * t1 - tmp11 * dz4 - lhs_(4,5,1) = (-(tmp22)) * c2 - lhs_(5,1,1) = (-(tmp22)) * ((c2 * (u_(0,2) * u_(0,2) + u_ - &(0,3) * u_(0,3) + u_(0,4) * u_(0,4)) * t2 - c1 * (u_(0,5) * t1)) * - & (u_(0,4) * t1)) - tmp11 * ((-(c3c4 - c1345)) * t3 * u_(0,2)** 2 - - & (c3c4 - c1345) * t3 * u_(0,3)** 2 - (con43 * c3c4 - c1345) * t3 * - & u_(0,4)** 2 - c1345 * t2 * u_(0,5)) - lhs_(5,2,1) = (-(tmp22)) * ((-(c2)) * (u_(0,2) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,2) - lhs_(5,3,1) = (-(tmp22)) * ((-(c2)) * (u_(0,3) * u_(0,4)) - & * t2) - tmp11 * (c3c4 - c1345) * t2 * u_(0,3) - lhs_(5,4,1) = (-(tmp22)) * (c1 * (u_(0,5) * t1) - 0.50d+0 - &0 * c2 * ((u_(0,2) * u_(0,2) + u_(0,3) * u_(0,3) + 3.0d+00 * u_(0, - &4) * u_(0,4)) * t2)) - tmp11 * (con43 * c3c4 - c1345) * t2 * u_(0, - &4) - lhs_(5,5,1) = (-(tmp22)) * c1 * u_(0,4) * t1 - tmp11 * c1 - &345 * t1 - tmp11 * dz5 - lhs_(1,1,2) = 1.0d+00 + tmp11 * 2.0d+00 * dz1 - lhs_(1,2,2) = 0. - lhs_(1,3,2) = 0. - lhs_(1,4,2) = 0. - lhs_(1,5,2) = 0. - lhs_(2,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &2)) - lhs_(2,2,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz2 - lhs_(2,3,2) = 0. - lhs_(2,4,2) = 0. - lhs_(2,5,2) = 0. - lhs_(3,1,2) = tmp11 * 2.0d+00 * ((-(c3c4)) * tmp2 * u_(1, - &3)) - lhs_(3,2,2) = 0. - lhs_(3,3,2) = 1.0d+00 + tmp11 * 2.0d+00 * c3c4 * tmp1 + t - &mp11 * 2.0d+00 * dz3 - lhs_(3,4,2) = 0. - lhs_(3,5,2) = 0. - lhs_(4,1,2) = tmp11 * 2.0d+00 * ((-(con43)) * c3c4 * tmp2 - & * u_(1,4)) - lhs_(4,2,2) = 0. - lhs_(4,3,2) = 0. - lhs_(4,4,2) = 1.0d+00 + tmp11 * 2.0d+00 * con43 * c3 * c4 - & * tmp1 + tmp11 * 2.0d+00 * dz4 - lhs_(4,5,2) = 0. - lhs_(5,1,2) = tmp11 * 2.0d+00 * ((-(c3c4 - c1345)) * tmp3 - & * u_(1,2)** 2 - (c3c4 - c1345) * tmp3 * u_(1,3)** 2 - (con43 * c3 - &c4 - c1345) * tmp3 * u_(1,4)** 2 - c1345 * tmp2 * u_(1,5)) - lhs_(5,2,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,2) - lhs_(5,3,2) = tmp11 * 2.0d+00 * (c3c4 - c1345) * tmp2 * u - &_(1,3) - lhs_(5,4,2) = tmp11 * 2.0d+00 * (con43 * c3c4 - c1345) * - &tmp2 * u_(1,4) - lhs_(5,5,2) = 1.0d+00 + tmp11 * 2.0d+00 * c1345 * tmp1 + - &tmp11 * 2.0d+00 * dz5 - if (k .ne. 1) then - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs - &_(1,j__1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3, - &j__1,3) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1 - &,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs - &_(1,j__1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3, - &j__1,3) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1 - &,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs - &_(1,j__1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3, - &j__1,3) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1 - &,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs - &_(1,j__1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3, - &j__1,3) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1 - &,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs - &_(1,j__1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3, - &j__1,3) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1 - &,3) - enddo - endif - lhs_(1,1,3) = (-(tmp11)) * dz1 - lhs_(1,2,3) = 0. - lhs_(1,3,3) = 0. - lhs_(1,4,3) = tmp22 - lhs_(1,5,3) = 0. - lhs_(2,1,3) = tmp22 * ((-(u_(2,2) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,2)) - lhs_(2,2,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz2 - lhs_(2,3,3) = 0. - lhs_(2,4,3) = tmp22 * u_(2,2) * tm1 - lhs_(2,5,3) = 0. - lhs_(3,1,3) = tmp22 * ((-(u_(2,3) * u_(2,4))) * tm2) - tm - &p11 * ((-(c3c4)) * tm2 * u_(2,3)) - lhs_(3,2,3) = 0. - lhs_(3,3,3) = tmp22 * u_(2,4) * tm1 - tmp11 * c3c4 * tm1 - &- tmp11 * dz3 - lhs_(3,4,3) = tmp22 * u_(2,3) * tm1 - lhs_(3,5,3) = 0. - lhs_(4,1,3) = tmp22 * ((-(u_(2,4) * u_(2,4) * tm2)) + 0.5 - &0d+00 * c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + u_(2,4) * u - &_(2,4)) * tm2)) - tmp11 * ((-(con43)) * c3c4 * tm2 * u_(2,4)) - lhs_(4,2,3) = tmp22 * ((-(c2)) * u_(2,2) * tm1) - lhs_(4,3,3) = tmp22 * ((-(c2)) * u_(2,3) * tm1) - lhs_(4,4,3) = tmp22 * (2.0d+00 - c2) * u_(2,4) * tm1 - tm - &p11 * con43 * c3 * c4 * tm1 - tmp11 * dz4 - lhs_(4,5,3) = tmp22 * c2 - lhs_(5,1,3) = tmp22 * ((c2 * (u_(2,2) * u_(2,2) + u_(2,3) - & * u_(2,3) + u_(2,4) * u_(2,4)) * tm2 - c1 * (u_(2,5) * tm1)) * (u - &_(2,4) * tm1)) - tmp11 * ((-(c3c4 - c1345)) * tm3 * u_(2,2)** 2 - - &(c3c4 - c1345) * tm3 * u_(2,3)** 2 - (con43 * c3c4 - c1345) * tm3 - &* u_(2,4)** 2 - c1345 * tm2 * u_(2,5)) - lhs_(5,2,3) = tmp22 * ((-(c2)) * (u_(2,2) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,2) - lhs_(5,3,3) = tmp22 * ((-(c2)) * (u_(2,3) * u_(2,4)) * tm - &2) - tmp11 * (c3c4 - c1345) * tm2 * u_(2,3) - lhs_(5,4,3) = tmp22 * (c1 * (u_(2,5) * tm1) - 0.50d+00 * - &c2 * ((u_(2,2) * u_(2,2) + u_(2,3) * u_(2,3) + 3.0d+00 * u_(2,4) * - & u_(2,4)) * tm2)) - tmp11 * (con43 * c3c4 - c1345) * tm2 * u_(2,4) - lhs_(5,5,3) = tmp22 * c1 * u_(2,4) * tm1 - tmp11 * c1345 - &* tm1 - tmp11 * dz5 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,k - & - 1) - lhs_(i__0,2,1) * rhs(2,i,j,k - 1) - lhs_(i__0,3,1) * rhs(3 - &,i,j,k - 1) - lhs_(i__0,4,1) * rhs(4,i,j,k - 1) - lhs_(i__0,5,1) * - & rhs(5,i,j,k - 1) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot - lhs_(1,3,2) = lhs_(1,3,2) * pivot - lhs_(1,4,2) = lhs_(1,4,2) * pivot - lhs_(1,5,2) = lhs_(1,5,2) * pivot - lhs_(1,1,3) = lhs_(1,1,3) * pivot - lhs_(1,2,3) = lhs_(1,2,3) * pivot - lhs_(1,3,3) = lhs_(1,3,3) * pivot - lhs_(1,4,3) = lhs_(1,4,3) * pivot - lhs_(1,5,3) = lhs_(1,5,3) * pivot - rhs_(1) = rhs_(1) * pivot - coeff = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(1,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(1,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(1,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(1,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(1,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(1,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(1) - coeff = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(1,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(1,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(1,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(1,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(1,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(1,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(1) - coeff = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(1,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(1,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(1,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(1,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(1,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(1,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(1) - coeff = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(1,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(1,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(1,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(1,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(1,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(1,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(1) - pivot = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot - lhs_(2,4,2) = lhs_(2,4,2) * pivot - lhs_(2,5,2) = lhs_(2,5,2) * pivot - lhs_(2,1,3) = lhs_(2,1,3) * pivot - lhs_(2,2,3) = lhs_(2,2,3) * pivot - lhs_(2,3,3) = lhs_(2,3,3) * pivot - lhs_(2,4,3) = lhs_(2,4,3) * pivot - lhs_(2,5,3) = lhs_(2,5,3) * pivot - rhs_(2) = rhs_(2) * pivot - coeff = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(2,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(2,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(2,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(2,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(2,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(2,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(2) - coeff = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(2,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(2,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(2,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(2,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(2,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(2,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(2) - coeff = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(2,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(2,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(2,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(2,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(2,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(2,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(2) - coeff = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(2,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(2,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(2,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(2,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(2,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(2,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(2) - pivot = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot - lhs_(3,5,2) = lhs_(3,5,2) * pivot - lhs_(3,1,3) = lhs_(3,1,3) * pivot - lhs_(3,2,3) = lhs_(3,2,3) * pivot - lhs_(3,3,3) = lhs_(3,3,3) * pivot - lhs_(3,4,3) = lhs_(3,4,3) * pivot - lhs_(3,5,3) = lhs_(3,5,3) * pivot - rhs_(3) = rhs_(3) * pivot - coeff = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(3,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(3,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(3,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(3,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(3,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(3,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(3) - coeff = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(3,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(3,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(3,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(3,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(3,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(3,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(3) - coeff = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff * lhs_(3,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(3,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(3,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(3,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(3,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(3,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(3) - coeff = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(3,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(3,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(3,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(3,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(3,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(3,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(3) - pivot = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot - lhs_(4,1,3) = lhs_(4,1,3) * pivot - lhs_(4,2,3) = lhs_(4,2,3) * pivot - lhs_(4,3,3) = lhs_(4,3,3) * pivot - lhs_(4,4,3) = lhs_(4,4,3) * pivot - lhs_(4,5,3) = lhs_(4,5,3) * pivot - rhs_(4) = rhs_(4) * pivot - coeff = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff * lhs_(4,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(4,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(4,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(4,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(4,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(4,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(4) - coeff = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff * lhs_(4,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(4,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(4,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(4,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(4,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(4,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(4) - coeff = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff * lhs_(4,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(4,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(4,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(4,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(4,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(4,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(4) - coeff = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff * lhs_(4,5,2) - lhs_(5,1,3) = lhs_(5,1,3) - coeff * lhs_(4,1,3) - lhs_(5,2,3) = lhs_(5,2,3) - coeff * lhs_(4,2,3) - lhs_(5,3,3) = lhs_(5,3,3) - coeff * lhs_(4,3,3) - lhs_(5,4,3) = lhs_(5,4,3) - coeff * lhs_(4,4,3) - lhs_(5,5,3) = lhs_(5,5,3) - coeff * lhs_(4,5,3) - rhs_(5) = rhs_(5) - coeff * rhs_(4) - pivot = 1.00d0 / lhs_(5,5,2) - lhs_(5,1,3) = lhs_(5,1,3) * pivot - lhs_(5,2,3) = lhs_(5,2,3) * pivot - lhs_(5,3,3) = lhs_(5,3,3) * pivot - lhs_(5,4,3) = lhs_(5,4,3) * pivot - lhs_(5,5,3) = lhs_(5,5,3) * pivot - rhs_(5) = rhs_(5) * pivot - coeff = lhs_(1,5,2) - lhs_(1,1,3) = lhs_(1,1,3) - coeff * lhs_(5,1,3) - lhs_(1,2,3) = lhs_(1,2,3) - coeff * lhs_(5,2,3) - lhs_(1,3,3) = lhs_(1,3,3) - coeff * lhs_(5,3,3) - lhs_(1,4,3) = lhs_(1,4,3) - coeff * lhs_(5,4,3) - lhs_(1,5,3) = lhs_(1,5,3) - coeff * lhs_(5,5,3) - rhs_(1) = rhs_(1) - coeff * rhs_(5) - coeff = lhs_(2,5,2) - lhs_(2,1,3) = lhs_(2,1,3) - coeff * lhs_(5,1,3) - lhs_(2,2,3) = lhs_(2,2,3) - coeff * lhs_(5,2,3) - lhs_(2,3,3) = lhs_(2,3,3) - coeff * lhs_(5,3,3) - lhs_(2,4,3) = lhs_(2,4,3) - coeff * lhs_(5,4,3) - lhs_(2,5,3) = lhs_(2,5,3) - coeff * lhs_(5,5,3) - rhs_(2) = rhs_(2) - coeff * rhs_(5) - coeff = lhs_(3,5,2) - lhs_(3,1,3) = lhs_(3,1,3) - coeff * lhs_(5,1,3) - lhs_(3,2,3) = lhs_(3,2,3) - coeff * lhs_(5,2,3) - lhs_(3,3,3) = lhs_(3,3,3) - coeff * lhs_(5,3,3) - lhs_(3,4,3) = lhs_(3,4,3) - coeff * lhs_(5,4,3) - lhs_(3,5,3) = lhs_(3,5,3) - coeff * lhs_(5,5,3) - rhs_(3) = rhs_(3) - coeff * rhs_(5) - coeff = lhs_(4,5,2) - lhs_(4,1,3) = lhs_(4,1,3) - coeff * lhs_(5,1,3) - lhs_(4,2,3) = lhs_(4,2,3) - coeff * lhs_(5,2,3) - lhs_(4,3,3) = lhs_(4,3,3) - coeff * lhs_(5,3,3) - lhs_(4,4,3) = lhs_(4,4,3) - coeff * lhs_(5,4,3) - lhs_(4,5,3) = lhs_(4,5,3) - coeff * lhs_(5,5,3) - rhs_(4) = rhs_(4) - coeff * rhs_(5) - do i__0 = 1,5 - lhs__(i__0,1,i,j,k) = lhs_(i__0,1,3) - lhs__(i__0,2,i,j,k) = lhs_(i__0,2,3) - lhs__(i__0,3,i,j,k) = lhs_(i__0,3,3) - lhs__(i__0,4,i,j,k) = lhs_(i__0,4,3) - lhs__(i__0,5,i,j,k) = lhs_(i__0,5,3) - enddo - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - - - else !! of big IF(k .ne. lastIter) - - do n = 1,5 - lhs_(1,n,1) = 0.0d0 - lhs_(1,n,2) = 0.0d0 - lhs_(1,n,3) = 0.0d0 - lhs_(2,n,1) = 0.0d0 - lhs_(2,n,2) = 0.0d0 - lhs_(2,n,3) = 0.0d0 - lhs_(3,n,1) = 0.0d0 - lhs_(3,n,2) = 0.0d0 - lhs_(3,n,3) = 0.0d0 - lhs_(4,n,1) = 0.0d0 - lhs_(4,n,2) = 0.0d0 - lhs_(4,n,3) = 0.0d0 - lhs_(5,n,1) = 0.0d0 - lhs_(5,n,2) = 0.0d0 - lhs_(5,n,3) = 0.0d0 - enddo - do m = 1,5 - lhs_(m,m,2) = 1.0d0 - enddo - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - enddo - do i__0 = 1,5 - rhs_(i__0) = rhs_(i__0) - lhs_(i__0,1,1) * rhs(1,i,j,ksiz - &e - 1) - lhs_(i__0,2,1) * rhs(2,i,j,ksize - 1) - lhs_(i__0,3,1) * - &rhs(3,i,j,ksize - 1) - lhs_(i__0,4,1) * rhs(4,i,j,ksize - 1) - lhs - &_(i__0,5,1) * rhs(5,i,j,ksize - 1) - enddo - do j__1 = 1,5 - lhs_(1,j__1,2) = lhs_(1,j__1,2) - lhs_(1,1,1) * lhs_(1,j_ - &_1,3) - lhs_(1,2,1) * lhs_(2,j__1,3) - lhs_(1,3,1) * lhs_(3,j__1,3 - &) - lhs_(1,4,1) * lhs_(4,j__1,3) - lhs_(1,5,1) * lhs_(5,j__1,3) - lhs_(2,j__1,2) = lhs_(2,j__1,2) - lhs_(2,1,1) * lhs_(1,j_ - &_1,3) - lhs_(2,2,1) * lhs_(2,j__1,3) - lhs_(2,3,1) * lhs_(3,j__1,3 - &) - lhs_(2,4,1) * lhs_(4,j__1,3) - lhs_(2,5,1) * lhs_(5,j__1,3) - lhs_(3,j__1,2) = lhs_(3,j__1,2) - lhs_(3,1,1) * lhs_(1,j_ - &_1,3) - lhs_(3,2,1) * lhs_(2,j__1,3) - lhs_(3,3,1) * lhs_(3,j__1,3 - &) - lhs_(3,4,1) * lhs_(4,j__1,3) - lhs_(3,5,1) * lhs_(5,j__1,3) - lhs_(4,j__1,2) = lhs_(4,j__1,2) - lhs_(4,1,1) * lhs_(1,j_ - &_1,3) - lhs_(4,2,1) * lhs_(2,j__1,3) - lhs_(4,3,1) * lhs_(3,j__1,3 - &) - lhs_(4,4,1) * lhs_(4,j__1,3) - lhs_(4,5,1) * lhs_(5,j__1,3) - lhs_(5,j__1,2) = lhs_(5,j__1,2) - lhs_(5,1,1) * lhs_(1,j_ - &_1,3) - lhs_(5,2,1) * lhs_(2,j__1,3) - lhs_(5,3,1) * lhs_(3,j__1,3 - &) - lhs_(5,4,1) * lhs_(4,j__1,3) - lhs_(5,5,1) * lhs_(5,j__1,3) - enddo - -!--------------------------------------------------------------------- -! -!--------------------------------------------------------------------- - pivot__3 = 1.00d0 / lhs_(1,1,2) - lhs_(1,2,2) = lhs_(1,2,2) * pivot__3 - lhs_(1,3,2) = lhs_(1,3,2) * pivot__3 - lhs_(1,4,2) = lhs_(1,4,2) * pivot__3 - lhs_(1,5,2) = lhs_(1,5,2) * pivot__3 - rhs_(1) = rhs_(1) * pivot__3 - coeff__2 = lhs_(2,1,2) - lhs_(2,2,2) = lhs_(2,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(2,3,2) = lhs_(2,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(1) - coeff__2 = lhs_(3,1,2) - lhs_(3,2,2) = lhs_(3,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(1) - coeff__2 = lhs_(4,1,2) - lhs_(4,2,2) = lhs_(4,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(1) - coeff__2 = lhs_(5,1,2) - lhs_(5,2,2) = lhs_(5,2,2) - coeff__2 * lhs_(1,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(1,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(1,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(1,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(1) - pivot__3 = 1.00d0 / lhs_(2,2,2) - lhs_(2,3,2) = lhs_(2,3,2) * pivot__3 - lhs_(2,4,2) = lhs_(2,4,2) * pivot__3 - lhs_(2,5,2) = lhs_(2,5,2) * pivot__3 - rhs_(2) = rhs_(2) * pivot__3 - coeff__2 = lhs_(1,2,2) - lhs_(1,3,2) = lhs_(1,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(2) - coeff__2 = lhs_(3,2,2) - lhs_(3,3,2) = lhs_(3,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(3,4,2) = lhs_(3,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(2) - coeff__2 = lhs_(4,2,2) - lhs_(4,3,2) = lhs_(4,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(2) - coeff__2 = lhs_(5,2,2) - lhs_(5,3,2) = lhs_(5,3,2) - coeff__2 * lhs_(2,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(2,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(2,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(2) - pivot__3 = 1.00d0 / lhs_(3,3,2) - lhs_(3,4,2) = lhs_(3,4,2) * pivot__3 - lhs_(3,5,2) = lhs_(3,5,2) * pivot__3 - rhs_(3) = rhs_(3) * pivot__3 - coeff__2 = lhs_(1,3,2) - lhs_(1,4,2) = lhs_(1,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(3) - coeff__2 = lhs_(2,3,2) - lhs_(2,4,2) = lhs_(2,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(3) - coeff__2 = lhs_(4,3,2) - lhs_(4,4,2) = lhs_(4,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(4,5,2) = lhs_(4,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(3) - coeff__2 = lhs_(5,3,2) - lhs_(5,4,2) = lhs_(5,4,2) - coeff__2 * lhs_(3,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(3,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(3) - pivot__3 = 1.00d0 / lhs_(4,4,2) - lhs_(4,5,2) = lhs_(4,5,2) * pivot__3 - rhs_(4) = rhs_(4) * pivot__3 - coeff__2 = lhs_(1,4,2) - lhs_(1,5,2) = lhs_(1,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(4) - coeff__2 = lhs_(2,4,2) - lhs_(2,5,2) = lhs_(2,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(4) - coeff__2 = lhs_(3,4,2) - lhs_(3,5,2) = lhs_(3,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(4) - coeff__2 = lhs_(5,4,2) - lhs_(5,5,2) = lhs_(5,5,2) - coeff__2 * lhs_(4,5,2) - rhs_(5) = rhs_(5) - coeff__2 * rhs_(4) - pivot__3 = 1.00d0 / lhs_(5,5,2) - rhs_(5) = rhs_(5) * pivot__3 - coeff__2 = lhs_(1,5,2) - rhs_(1) = rhs_(1) - coeff__2 * rhs_(5) - coeff__2 = lhs_(2,5,2) - rhs_(2) = rhs_(2) - coeff__2 * rhs_(5) - coeff__2 = lhs_(3,5,2) - rhs_(3) = rhs_(3) - coeff__2 * rhs_(5) - coeff__2 = lhs_(4,5,2) - rhs_(4) = rhs_(4) - coeff__2 * rhs_(5) - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - enddo - endif - - enddo - enddo - enddo - -!DVM$ PARALLEL (k,j,i) ON rhs(*,i,j,k), private(rhs_,rhsp_,m) -!DVM$& ,ACROSS(rhs(0:0,0:0,0:0,0:1)),stage(stage_n) - do k = problem_size-2, 1, (-(1)) - do j = 1,problem_size - 2 - do i = 1,problem_size - 2 - do m = 1,5 - rhs_(m) = rhs(m,i,j,k) - rhsp_(m) = rhs(m,i,j,k + 1) - enddo - - do m = 1,5 - rhs_(m) = rhs_(m) - lhs__(m,1,i,j,k) * rhsp_(1) - rhs_(m) = rhs_(m) - lhs__(m,2,i,j,k) * rhsp_(2) - rhs_(m) = rhs_(m) - lhs__(m,3,i,j,k) * rhsp_(3) - rhs_(m) = rhs_(m) - lhs__(m,4,i,j,k) * rhsp_(4) - rhs_(m) = rhs_(m) - lhs__(m,5,i,j,k) * rhsp_(5) - enddo - - do m = 1,5 - rhs(m,i,j,k) = rhs_(m) - u(m,i,j,k) = u(m,i,j,k) + rhs_(m) - enddo - enddo - enddo - enddo -!DVM$ end region - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/Makefile deleted file mode 100644 index d76580f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=cg -BENCHMARKU=CG - -include ../config/make.def -include ../sys/make.common - -SOURCES = cg.fdv - -OBJS = ${SOURCES:.fdv=.o} - -${PROGRAM}: config $(OBJS) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} - -cg.o: cg.fdv npbparams.h globals.h - ${F77} fdv ${FFLAGS} -dvmIrregAnalysis cg.fdv - cp cg.DVMH_cuda.cu_opt cg.DVMH_cuda.cu - ${F77} fc cg.fdv -c -o cg.o - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.DVMH_cuda.cu_opt b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.DVMH_cuda.cu_opt deleted file mode 100644 index 1e80d19..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.DVMH_cuda.cu_opt +++ /dev/null @@ -1,2286 +0,0 @@ - -#include -#define dcmplx2 Complex -#define cmplx2 Complex -typedef int __indexTypeInt; -typedef long long __indexTypeLLong; - - - - - -//--------------------- Kernel for loop on line 229 --------------------- - - __global__ void loop_cg_229_cuda_kernel_int(double _x[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _i; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 229 --------------------- - - __global__ void loop_cg_229_cuda_kernel_llong(double _x[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _i; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 233 --------------------- - - __global__ void loop_cg_233_cuda_kernel_int(double _p[], double _r[], double _z[], double _q[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _r[_j] = 0.0e0; - _p[_j] = 0.0e0; - } - } - - -//--------------------- Kernel for loop on line 233 --------------------- - - __global__ void loop_cg_233_cuda_kernel_llong(double _p[], double _r[], double _z[], double _q[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _r[_j] = 0.0e0; - _p[_j] = 0.0e0; - } - } - - -//--------------------- Kernel for loop on line 272 --------------------- - - __global__ void loop_cg_272_cuda_kernel_int(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 272 --------------------- - - __global__ void loop_cg_272_cuda_kernel_llong(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 285 --------------------- - - __global__ void loop_cg_285_cuda_kernel_int(double _x[], double _z[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 285 --------------------- - - __global__ void loop_cg_285_cuda_kernel_llong(double _x[], double _z[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 301 --------------------- - - __global__ void loop_cg_301_cuda_kernel_int(double _x[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _i; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 301 --------------------- - - __global__ void loop_cg_301_cuda_kernel_llong(double _x[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _i; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 347 --------------------- - - __global__ void loop_cg_347_cuda_kernel_int(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 347 --------------------- - - __global__ void loop_cg_347_cuda_kernel_llong(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 367 --------------------- - - __global__ void loop_cg_367_cuda_kernel_int(double _x[], double _z[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 367 --------------------- - - __global__ void loop_cg_367_cuda_kernel_llong(double _x[], double _z[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 522 --------------------- - - __global__ void loop_cg_522_cuda_kernel_int(double _p[], double _r[], double _x[], double _z[], double _q[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _d = _x[_j]; - _r[_j] = _d; - _p[_j] = _d; - } - } - - -//--------------------- Kernel for loop on line 522 --------------------- - - __global__ void loop_cg_522_cuda_kernel_llong(double _p[], double _r[], double _x[], double _z[], double _q[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _d = _x[_j]; - _r[_j] = _d; - _p[_j] = _d; - } - } - - -//--------------------- Kernel for loop on line 537 --------------------- - - __global__ void loop_cg_537_cuda_kernel_int(double _r[], double _rho, double rho_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _rho = _r[_j] * _r[_j] + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 537 --------------------- - - __global__ void loop_cg_537_cuda_kernel_llong(double _r[], double _rho, double rho_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _rho = _r[_j] * _r[_j] + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 558 --------------------- - - __global__ void loop_cg_558_cuda_kernel_int(double _q[], double _p[], int _colidx[], double _a[], int _rowstr[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - int _k; - double _sum; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / 32; - int lid = gid % 32; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _sum = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid ; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _sum = _p[_colidx[_k]] * _a[_k] + _sum; - } - _sum = __dvmh_warpReduceSum(_sum); - if (lid == 0) { - _q[_j] = _sum; - } - } - } - - -//--------------------- Kernel for loop on line 558 --------------------- - - __global__ void loop_cg_558_cuda_kernel_llong(double _q[], double _p[], int _colidx[], double _a[], int _rowstr[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - int _k; - double _sum; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / 32; - int lid = gid % 32; -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _sum = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid ; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _sum = _p[_colidx[_k]] * _a[_k] + _sum; - } - _sum = __dvmh_warpReduceSum(_sum); - if (lid == 0) { - _q[_j] = _sum; - } - } - } - - -//--------------------- Kernel for loop on line 567 --------------------- - - __global__ void loop_cg_567_cuda_kernel_int(double _q[], double _p[], double _d, double d_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = _q[_j] * _p[_j] + _d; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _d = __dvmh_blockReduceSum(_d); - if (_j % warpSize == 0) - { - d_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _d; - } - } - - -//--------------------- Kernel for loop on line 567 --------------------- - - __global__ void loop_cg_567_cuda_kernel_llong(double _q[], double _p[], double _d, double d_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = _q[_j] * _p[_j] + _d; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _d = __dvmh_blockReduceSum(_d); - if (_j % warpSize == 0) - { - d_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _d; - } - } - - -//--------------------- Kernel for loop on line 577 --------------------- - - __global__ void loop_cg_577_cuda_kernel_int(double _q[], double _r[], double _p[], double _z[], double _rho, double rho_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _alpha) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _z[_j] = _p[_j] * _alpha + _z[_j]; - _d = (-(_alpha * _q[_j])) + _r[_j]; - _r[_j] = _d; - _rho = _d * _d + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 577 --------------------- - - __global__ void loop_cg_577_cuda_kernel_llong(double _q[], double _r[], double _p[], double _z[], double _rho, double rho_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _alpha) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _z[_j] = _p[_j] * _alpha + _z[_j]; - _d = (-(_alpha * _q[_j])) + _r[_j]; - _r[_j] = _d; - _rho = _d * _d + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 588 --------------------- - - __global__ void loop_cg_588_cuda_kernel_int(double _p[], double _r[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _beta) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _p[_j] = _p[_j] * _beta + _r[_j]; - } - } - - -//--------------------- Kernel for loop on line 588 --------------------- - - __global__ void loop_cg_588_cuda_kernel_llong(double _p[], double _r[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _beta) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _p[_j] = _p[_j] * _beta + _r[_j]; - } - } - - -//--------------------- Kernel for loop on line 605 --------------------- - - __global__ void loop_cg_605_cuda_kernel_int(double _r[], double _z[], int _colidx[], double _a[], int _rowstr[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - int _k; - double _d; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / 32; - int lid = gid % 32; -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _d = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _d = _z[_colidx[_k]] * _a[_k] + _d; - } - _d = __dvmh_warpReduceSum(_d); - if (lid == 0) { - _r[_j] = _d; - } - } - } - - -//--------------------- Kernel for loop on line 605 --------------------- - - __global__ void loop_cg_605_cuda_kernel_llong(double _r[], double _z[], int _colidx[], double _a[], int _rowstr[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - int _k; - double _d; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / 32; - int lid = gid % 32; -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _d = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _d = _z[_colidx[_k]] * _a[_k] + _d; - } - _d = __dvmh_warpReduceSum(_d); - if (lid == 0) { - _r[_j] = _d; - } - } - } - - -//--------------------- Kernel for loop on line 618 --------------------- - - __global__ void loop_cg_618_cuda_kernel_int(double _r[], double _x[], double _sum, double sum_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = (-_r[_j]) + _x[_j]; - _sum = _d * _d + _sum; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _sum = __dvmh_blockReduceSum(_sum); - if (_j % warpSize == 0) - { - sum_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _sum; - } - } - - -//--------------------- Kernel for loop on line 618 --------------------- - - __global__ void loop_cg_618_cuda_kernel_llong(double _r[], double _x[], double _sum, double sum_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = (-_r[_j]) + _x[_j]; - _sum = _d * _d + _sum; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _sum = __dvmh_blockReduceSum(_sum); - if (_j % warpSize == 0) - { - sum_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _sum; - } - } - - - -#ifdef _MS_F_ -#define loop_cg_229_cuda_ loop_cg_229_cuda -#define loop_cg_233_cuda_ loop_cg_233_cuda -#define loop_cg_272_cuda_ loop_cg_272_cuda -#define loop_cg_285_cuda_ loop_cg_285_cuda -#define loop_cg_301_cuda_ loop_cg_301_cuda -#define loop_cg_347_cuda_ loop_cg_347_cuda -#define loop_cg_367_cuda_ loop_cg_367_cuda -#define loop_cg_522_cuda_ loop_cg_522_cuda -#define loop_cg_537_cuda_ loop_cg_537_cuda -#define loop_cg_558_cuda_ loop_cg_558_cuda -#define loop_cg_567_cuda_ loop_cg_567_cuda -#define loop_cg_577_cuda_ loop_cg_577_cuda -#define loop_cg_588_cuda_ loop_cg_588_cuda -#define loop_cg_605_cuda_ loop_cg_605_cuda -#define loop_cg_618_cuda_ loop_cg_618_cuda -#endif - -extern "C" { - extern DvmType loop_cg_618_cuda_kernel_llong_regs, loop_cg_618_cuda_kernel_int_regs, loop_cg_605_cuda_kernel_llong_regs, loop_cg_605_cuda_kernel_int_regs, loop_cg_588_cuda_kernel_llong_regs, loop_cg_588_cuda_kernel_int_regs, loop_cg_577_cuda_kernel_llong_regs, loop_cg_577_cuda_kernel_int_regs, loop_cg_567_cuda_kernel_llong_regs, loop_cg_567_cuda_kernel_int_regs, loop_cg_558_cuda_kernel_llong_regs, loop_cg_558_cuda_kernel_int_regs, loop_cg_537_cuda_kernel_llong_regs, loop_cg_537_cuda_kernel_int_regs, loop_cg_522_cuda_kernel_llong_regs, loop_cg_522_cuda_kernel_int_regs, loop_cg_367_cuda_kernel_llong_regs, loop_cg_367_cuda_kernel_int_regs, loop_cg_347_cuda_kernel_llong_regs, loop_cg_347_cuda_kernel_int_regs, loop_cg_301_cuda_kernel_llong_regs, loop_cg_301_cuda_kernel_int_regs, loop_cg_285_cuda_kernel_llong_regs, loop_cg_285_cuda_kernel_int_regs, loop_cg_272_cuda_kernel_llong_regs, loop_cg_272_cuda_kernel_int_regs, loop_cg_233_cuda_kernel_llong_regs, loop_cg_233_cuda_kernel_int_regs, loop_cg_229_cuda_kernel_llong_regs, loop_cg_229_cuda_kernel_int_regs; - - -// CUDA handler for loop on line 229 - - void loop_cg_229_cuda_(DvmType *loop_ref, DvmType _x[]) - { - void *x_base; - DvmType d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_229_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_229_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_229_cuda_kernel_int<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_229_cuda_kernel_llong<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 233 - - void loop_cg_233_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], DvmType _z[], DvmType _q[]) - { - void *p_base, *r_base, *z_base, *q_base; - DvmType d_p[4], d_r[4], d_z[4], d_q[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - z_base = dvmh_get_natural_base(&device_num, _z); - q_base = dvmh_get_natural_base(&device_num, _q); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, q_base, _q, d_q); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_233_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_233_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_233_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_233_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 272 - - void loop_cg_272_cuda_(DvmType *loop_ref, DvmType _z[], DvmType _x[]) - { - void *z_base, *x_base; - DvmType d_z[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *norm_temp2_grid; - double _norm_temp2; - void *norm_temp1_grid; - double _norm_temp1; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &norm_temp1_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp1, 0); - red_num = 2; - loop_cuda_register_red(loop_ref, red_num, &norm_temp2_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp2, 0); - -// Get 'natural' bases - z_base = dvmh_get_natural_base(&device_num, _z); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_272_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_272_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - red_num = 2; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_272_cuda_kernel_int<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_272_cuda_kernel_llong<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - red_num = 2; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 285 - - void loop_cg_285_cuda_(DvmType *loop_ref, DvmType _x[], DvmType _z[], double *_norm_temp2) - { - void *x_base, *z_base; - DvmType d_x[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_285_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_285_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_285_cuda_kernel_int<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - else - { - loop_cg_285_cuda_kernel_llong<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 301 - - void loop_cg_301_cuda_(DvmType *loop_ref, DvmType _x[]) - { - void *x_base; - DvmType d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_301_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_301_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_301_cuda_kernel_int<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_301_cuda_kernel_llong<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 347 - - void loop_cg_347_cuda_(DvmType *loop_ref, DvmType _z[], DvmType _x[]) - { - void *z_base, *x_base; - DvmType d_z[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *norm_temp2_grid; - double _norm_temp2; - void *norm_temp1_grid; - double _norm_temp1; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &norm_temp1_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp1, 0); - red_num = 2; - loop_cuda_register_red(loop_ref, red_num, &norm_temp2_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp2, 0); - -// Get 'natural' bases - z_base = dvmh_get_natural_base(&device_num, _z); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_347_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_347_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - red_num = 2; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_347_cuda_kernel_int<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_347_cuda_kernel_llong<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - red_num = 2; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 367 - - void loop_cg_367_cuda_(DvmType *loop_ref, DvmType _x[], DvmType _z[], double *_norm_temp2) - { - void *x_base, *z_base; - DvmType d_x[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_367_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_367_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_367_cuda_kernel_int<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - else - { - loop_cg_367_cuda_kernel_llong<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 522 - - void loop_cg_522_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], DvmType _x[], DvmType _z[], DvmType _q[]) - { - void *p_base, *r_base, *x_base, *z_base, *q_base; - DvmType d_p[4], d_r[4], d_x[4], d_z[4], d_q[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - q_base = dvmh_get_natural_base(&device_num, _q); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, q_base, _q, d_q); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_522_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_522_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_522_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, (double *)x_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_522_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, (double *)x_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 537 - - void loop_cg_537_cuda_(DvmType *loop_ref, DvmType _r[]) - { - void *r_base; - DvmType d_r[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *rho_grid; - double _rho; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &rho_grid, 0); - loop_red_init_(loop_ref, &red_num, &_rho, 0); - -// Get 'natural' bases - r_base = dvmh_get_natural_base(&device_num, _r); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, r_base, _r, d_r); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_537_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_537_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_537_cuda_kernel_int<<>>((double *)r_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_537_cuda_kernel_llong<<>>((double *)r_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 558 - - void loop_cg_558_cuda_(DvmType *loop_ref, DvmType _q[], DvmType _p[], DvmType _colidx[], DvmType _a[], DvmType _rowstr[]) - { - - void *q_base, *p_base, *colidx_base, *a_base, *rowstr_base; - DvmType d_q[4], d_p[4], d_colidx[4], d_a[4], d_rowstr[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - q_base = dvmh_get_natural_base(&device_num, _q); - p_base = dvmh_get_natural_base(&device_num, _p); - colidx_base = dvmh_get_natural_base(&device_num, _colidx); - a_base = dvmh_get_natural_base(&device_num, _a); - rowstr_base = dvmh_get_natural_base(&device_num, _rowstr); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, colidx_base, _colidx, d_colidx); - dvmh_fill_header_(&device_num, a_base, _a, d_a); - dvmh_fill_header_(&device_num, rowstr_base, _rowstr, d_rowstr); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_558_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_558_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]* dvmh_get_warp_size(loop_ref);; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - maxBlocks = maxBlocks / dvmh_get_warp_size(loop_ref) * dvmh_get_warp_size(loop_ref); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_558_cuda_kernel_int<<>>((double *)q_base, (double *)p_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_558_cuda_kernel_llong<<>>((double *)q_base, (double *)p_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 567 - - void loop_cg_567_cuda_(DvmType *loop_ref, DvmType _q[], DvmType _p[]) - { - void *q_base, *p_base; - DvmType d_q[4], d_p[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *d_grid; - double _d; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &d_grid, 0); - loop_red_init_(loop_ref, &red_num, &_d, 0); - -// Get 'natural' bases - q_base = dvmh_get_natural_base(&device_num, _q); - p_base = dvmh_get_natural_base(&device_num, _p); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, p_base, _p, d_p); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_567_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_567_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_567_cuda_kernel_int<<>>((double *)q_base, (double *)p_base, _d, (double *)d_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_567_cuda_kernel_llong<<>>((double *)q_base, (double *)p_base, _d, (double *)d_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 577 - - void loop_cg_577_cuda_(DvmType *loop_ref, DvmType _q[], DvmType _r[], DvmType _p[], DvmType _z[], double *_alpha) - { - void *q_base, *r_base, *p_base, *z_base; - DvmType d_q[4], d_r[4], d_p[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *rho_grid; - double _rho; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &rho_grid, 0); - loop_red_init_(loop_ref, &red_num, &_rho, 0); - -// Get 'natural' bases - q_base = dvmh_get_natural_base(&device_num, _q); - r_base = dvmh_get_natural_base(&device_num, _r); - p_base = dvmh_get_natural_base(&device_num, _p); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_577_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_577_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_577_cuda_kernel_int<<>>((double *)q_base, (double *)r_base, (double *)p_base, (double *)z_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks, *_alpha); - } - else - { - loop_cg_577_cuda_kernel_llong<<>>((double *)q_base, (double *)r_base, (double *)p_base, (double *)z_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks, *_alpha); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 588 - - void loop_cg_588_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], double *_beta) - { - void *p_base, *r_base; - DvmType d_p[4], d_r[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_588_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_588_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_588_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, idxL[0], idxH[0], addBlocks, *_beta); - } - else - { - loop_cg_588_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, idxL[0], idxH[0], addBlocks, *_beta); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 605 - - void loop_cg_605_cuda_(DvmType *loop_ref, DvmType _r[], DvmType _z[], DvmType _colidx[], DvmType _a[], DvmType _rowstr[]) - { - void *r_base, *z_base, *colidx_base, *a_base, *rowstr_base; - DvmType d_r[4], d_z[4], d_colidx[4], d_a[4], d_rowstr[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - r_base = dvmh_get_natural_base(&device_num, _r); - z_base = dvmh_get_natural_base(&device_num, _z); - colidx_base = dvmh_get_natural_base(&device_num, _colidx); - a_base = dvmh_get_natural_base(&device_num, _a); - rowstr_base = dvmh_get_natural_base(&device_num, _rowstr); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, colidx_base, _colidx, d_colidx); - dvmh_fill_header_(&device_num, a_base, _a, d_a); - dvmh_fill_header_(&device_num, rowstr_base, _rowstr, d_rowstr); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_605_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_605_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks * dvmh_get_warp_size(loop_ref); - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - maxBlocks = maxBlocks / dvmh_get_warp_size(loop_ref) * dvmh_get_warp_size(loop_ref); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_605_cuda_kernel_int<<>>((double *)r_base, (double *)z_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_605_cuda_kernel_llong<<>>((double *)r_base, (double *)z_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 618 - - void loop_cg_618_cuda_(DvmType *loop_ref, DvmType _r[], DvmType _x[]) - { - void *r_base, *x_base; - DvmType d_r[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *sum_grid; - double _sum; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &sum_grid, 0); - loop_red_init_(loop_ref, &red_num, &_sum, 0); - -// Get 'natural' bases - r_base = dvmh_get_natural_base(&device_num, _r); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_618_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_618_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_618_cuda_kernel_int<<>>((double *)r_base, (double *)x_base, _sum, (double *)sum_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_618_cuda_kernel_llong<<>>((double *)r_base, (double *)x_base, _sum, (double *)sum_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.fdv deleted file mode 100644 index 1f6e535..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cg.fdv +++ /dev/null @@ -1,1008 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! S E R I A L V E R S I O N ! -! ! -! C G ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is a serial version of the NPB CG code. ! -! Refer to NAS Technical Reports 95-020 for details. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - - -c--------------------------------------------------------------------- -c NPB CG serial version -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c Authors: M. Yarrow -c C. Kuszmaul -c A.S. Kolganov -c -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - program cg -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - - implicit none - - include 'globals.h' - - - common / main_int_mem / colidx, rowstr, - > iv, arow, acol - integer colidx(nz), rowstr(na+1), - > iv(na), arow(na), acol(naz), - > bl_low, bl_high, blGen,gBL(2) - - - common / main_flt_mem / aelt, a, - > x, - > z, - > p, - > q, - > r - double precision aelt(naz), a(nz), - > x(na+1), - > z(na+1), - > p(na+1), - > q(na+1), - > r(na+1) - - - - -CDVM$ TEMPLATE ttt(na+2) -CDVM$ DISTRIBUTE ttt(BLOCK) -CDVM$ ALIGN z(I) WITH ttt(I) - -CDVM$ ALIGN x(I) WITH z(I) -CDVM$ ALIGN r(I) WITH z(I) -CDVM$ ALIGN p(I) WITH z(I) -CDVM$ ALIGN q(I) WITH z(I) - - - integer i, j, k, it, sumL - - double precision zeta, randlc - external randlc - double precision rnorm - double precision norm_temp1,norm_temp2 - - double precision t, mflops, tmax - character class - logical verified - double precision zeta_verify_value, epsilon, err - - integer fstatus - character t_names(t_last)*8 - - do i = 1, T_last - call timer_clear( i ) - end do - - open(unit=2, file='timer.flag', status='old', iostat=fstatus) - if (fstatus .eq. 0) then - timeron = .true. - t_names(t_init) = 'init' - t_names(t_bench) = 'benchmk' - t_names(t_conj_grad) = 'conjgd' - close(2) - else - timeron = .false. - endif - - call timer_start( T_init ) - - firstrow = 1 - lastrow = na - firstcol = 1 - lastcol = na - - - if( na .eq. 1400 .and. - & nonzer .eq. 7 .and. - & niter .eq. 15 .and. - & shift .eq. 10.d0 ) then - class = 'S' - zeta_verify_value = 8.5971775078648d0 - else if( na .eq. 7000 .and. - & nonzer .eq. 8 .and. - & niter .eq. 15 .and. - & shift .eq. 12.d0 ) then - class = 'W' - zeta_verify_value = 10.362595087124d0 - else if( na .eq. 14000 .and. - & nonzer .eq. 11 .and. - & niter .eq. 15 .and. - & shift .eq. 20.d0 ) then - class = 'A' - zeta_verify_value = 17.130235054029d0 - else if( na .eq. 75000 .and. - & nonzer .eq. 13 .and. - & niter .eq. 75 .and. - & shift .eq. 60.d0 ) then - class = 'B' - zeta_verify_value = 22.712745482631d0 - else if( na .eq. 150000 .and. - & nonzer .eq. 15 .and. - & niter .eq. 75 .and. - & shift .eq. 110.d0 ) then - class = 'C' - zeta_verify_value = 28.973605592845d0 - else if( na .eq. 1500000 .and. - & nonzer .eq. 21 .and. - & niter .eq. 100 .and. - & shift .eq. 500.d0 ) then - class = 'D' - zeta_verify_value = 52.514532105794d0 - else if( na .eq. 9000000 .and. - & nonzer .eq. 26 .and. - & niter .eq. 100 .and. - & shift .eq. 1.5d3 ) then - class = 'E' - zeta_verify_value = 77.522164599383d0 - else - class = 'U' - endif - - write( *,1000 ) - write( *,1001 ) na - write( *,1002 ) niter - write( *,* ) - 1000 format(//,' NAS Parallel Benchmarks (NPB3.3-DVMH)', - > ' - CG Benchmark', /) - 1001 format(' Size: ', i11 ) - 1002 format(' Iterations: ', i5 ) - - naa = na - nzz = nz - - -c--------------------------------------------------------------------- -c Inialize random number generator -c--------------------------------------------------------------------- - tran = 314159265.0D0 - amult = 1220703125.0D0 - zeta = randlc( tran, amult ) - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - call makea(naa, nzz, a, colidx, rowstr, - > firstrow, lastrow, firstcol, lastcol, - > arow, acol, aelt, iv) - - - -c--------------------------------------------------------------------- -c Note: as a result of the above call to makea: -c values of j used in indexing rowstr go from 1 --> lastrow-firstrow+1 -c values of colidx which are col indexes go from firstcol --> lastcol -c So: -c Shift the col index vals from actual (firstcol --> lastcol ) -c to local, i.e., (1 --> lastcol-firstcol+1) -c--------------------------------------------------------------------- - do j=1,lastrow-firstrow+1 - do k=rowstr(j),rowstr(j+1)-1 - colidx(k) = colidx(k) - firstcol + 1 - enddo - enddo - -c--------------------------------------------------------------------- -c set starting vector to (1, 1, .... 1) -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (i) on x(i) - do i = 1, na+1 - x(i) = 1.0D0 - enddo -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - q(j) = 0.0d0 - z(j) = 0.0d0 - r(j) = 0.0d0 - p(j) = 0.0d0 - enddo -CDVM$ end region - zeta = 0.0d0 - -c--------------------------------------------------------------------- -c----> -c Do one iteration untimed to init all code and data page tables -c----> (then reinit, start timing, to niter its) -c--------------------------------------------------------------------- - do it = 1, 1 - -c--------------------------------------------------------------------- -c The call to the conjugate gradient routine: -c--------------------------------------------------------------------- - call conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) - -c--------------------------------------------------------------------- -c zeta = shift + 1/(x.z) -c So, first: (x.z) -c Also, find norm of z -c So, first: (z.z) -c--------------------------------------------------------------------- - norm_temp1 = 0.0d0 - norm_temp2 = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on x(j),reduction(SUM(norm_temp1),SUM(norm_temp2)) - do j=1, lastcol-firstcol+1 - norm_temp1 = norm_temp1 + x(j)*z(j) - norm_temp2 = norm_temp2 + z(j)*z(j) - enddo -CDVM$ end region - norm_temp2 = 1.0d0 / sqrt( norm_temp2 ) - - -c--------------------------------------------------------------------- -c Normalize z to obtain x -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - x(j) = norm_temp2*z(j) - enddo -CDVM$ end region - - enddo ! end of do one iteration untimed - - -c--------------------------------------------------------------------- -c set starting vector to (1, 1, .... 1) -c--------------------------------------------------------------------- -c -c -c -CDVM$ region -CDVM$ parallel (i) on x(i) - do i = 1, na+1 - x(i) = 1.0D0 - enddo -CDVM$ end region - zeta = 0.0d0 - - call timer_stop( T_init ) - - write (*, 2000) timer_read(T_init) - 2000 format(' Initialization time = ',f15.3,' seconds') - - call timer_start( T_bench ) - -c--------------------------------------------------------------------- -c----> -c Main Iteration for inverse power method -c----> -c--------------------------------------------------------------------- - do it = 1, niter - -c--------------------------------------------------------------------- -c The call to the conjugate gradient routine: -c--------------------------------------------------------------------- - if ( timeron ) call timer_start( T_conj_grad ) - call conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) - if ( timeron ) call timer_stop( T_conj_grad ) - - -c--------------------------------------------------------------------- -c zeta = shift + 1/(x.z) -c So, first: (x.z) -c Also, find norm of z -c So, first: (z.z) -c--------------------------------------------------------------------- - norm_temp1 = 0.0d0 - norm_temp2 = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on x(j),reduction(SUM(norm_temp1),SUM(norm_temp2)) - do j=1, lastcol-firstcol+1 - norm_temp1 = norm_temp1 + x(j)*z(j) - norm_temp2 = norm_temp2 + z(j)*z(j) - enddo -CDVM$ end region - norm_temp2 = 1.0d0 / sqrt( norm_temp2 ) - - - zeta = shift + 1.0d0 / norm_temp1 - if( it .eq. 1 ) write( *,9000 ) - write( *,9001 ) it, rnorm, zeta - - 9000 format( /,' iteration ||r|| zeta' ) - 9001 format( 4x, i5, 7x, e20.14, f20.13 ) - -c--------------------------------------------------------------------- -c Normalize z to obtain x -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - x(j) = norm_temp2*z(j) - enddo -CDVM$ end region - - enddo ! end of main iter inv pow meth - - call timer_stop( T_bench ) - -c--------------------------------------------------------------------- -c End of timed section -c--------------------------------------------------------------------- - - t = timer_read( T_bench ) - - - write(*,100) - 100 format(' Benchmark completed ') - - epsilon = 1.d-10 - if (class .ne. 'U') then - -c err = abs( zeta - zeta_verify_value) - err = abs( zeta - zeta_verify_value )/zeta_verify_value - if( err .le. epsilon .and. ( .not. isnan(err))) then - verified = .TRUE. - write(*, 200) - write(*, 201) zeta - write(*, 202) err - 200 format(' VERIFICATION SUCCESSFUL ') - 201 format(' Zeta is ', E20.13) - 202 format(' Error is ', E20.13) - else - verified = .FALSE. - write(*, 300) - write(*, 301) zeta - write(*, 302) zeta_verify_value - 300 format(' VERIFICATION FAILED') - 301 format(' Zeta ', E20.13) - 302 format(' The correct zeta is ', E20.13) - endif - else - verified = .FALSE. - write (*, 400) - write (*, 401) - write (*, 201) zeta - 400 format(' Problem size unknown') - 401 format(' NO VERIFICATION PERFORMED') - endif - - - if( t .ne. 0. ) then - mflops = float( 2*niter*na ) - & * ( 3.+float( nonzer*(nonzer+1) ) - & + 25.*(5.+float( nonzer*(nonzer+1) )) - & + 3. ) / t / 1000000.0 - else - mflops = 0.0 - endif - - - call print_results('CG', class, na, 0, 0, - > niter, t, - > mflops, ' floating point', - > verified, npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - - - 600 format( i4, 2e19.12) - - -c--------------------------------------------------------------------- -c More timers -c--------------------------------------------------------------------- - if (.not.timeron) goto 999 - - tmax = timer_read(T_bench) - if (tmax .eq. 0.0) tmax = 1.0 - - write(*,800) - 800 format(' SECTION Time (secs)') - do i=1, t_last - t = timer_read(i) - if (i.eq.t_init) then - write(*,810) t_names(i), t - else - write(*,810) t_names(i), t, t*100./tmax - if (i.eq.t_conj_grad) then - t = tmax - t - write(*,820) 'rest', t, t*100./tmax - endif - endif - 810 format(2x,a8,':',f9.3:' (',f6.2,'%)') - 820 format(' --> ',a8,':',f9.3,' (',f6.2,'%)') - end do - - 999 continue - - - end ! end main - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Floaging point arrays here are named as in NPB1 spec discussion of -c CG algorithm -c--------------------------------------------------------------------- - - implicit none - - - include 'globals.h' - - - double precision x(*), - > z(*), - > a(nzz) - integer colidx(nzz), rowstr(naa+1) - - double precision p(*), - > q(*), - > r(*) - - - integer j, k - integer cgit, cgitmax, mlen,idx, idxl - - double precision d, sum, rho, rho0, alpha, beta, rnorm - - data cgitmax / 25 / -CDVM$ INHERIT x, z, r, p, q - - rho = 0.0d0 - -c--------------------------------------------------------------------- -c Initialize the CG algorithm: -c--------------------------------------------------------------------- - -CDVM$ region -CDVM$ parallel (j) on q(j), private(d) - do j=1,naa+1 - q(j) = 0.0d0 - z(j) = 0.0d0 - d = x(j) - r(j) = d - p(j) = d - enddo - - -c--------------------------------------------------------------------- -c rho = r.r -c Now, obtain the norm of r: First, sum squares of r elements locally... -c--------------------------------------------------------------------- - -CDVM$ parallel(j) on r(j), reduction(SUM(rho)) - do j=1, lastcol-firstcol+1 - rho = rho + r(j)*r(j) - enddo -! mlen = 128 -! DVM$ parallel(j) on r(j), reduction(MAX(mlen)) -! do j=1,lastrow-firstrow+1 -! mlen = max(mlen, rowstr(j+1) - rowstr(j)) -! enddo -CDVM$ end region -! write(*,*) 'maxlen = ', mlen -c--------------------------------------------------------------------- -c----> -c The conj grad iteration loop -c----> -c--------------------------------------------------------------------- - do cgit = 1, cgitmax - d = 0.0d0 -! DVM$ interval 11 -CDVM$ region -!WANR for many process, remote_access(p(:)) is needed -CDVM$ parallel (j) on p(j), private(sum,k) - do j=1,lastrow-firstrow+1 - sum = 0.d0 - do k=rowstr(j),rowstr(j+1)-1 - sum = sum + a(k)*p(colidx(k)) - enddo - q(j) = sum - enddo - -CDVM$ parallel (j) on q(j), reduction(SUM(d)) - do j=1, lastcol-firstcol+1 - d = d + p(j)*q(j) - enddo -CDVM$ end region - alpha = rho / d - rho0 = rho -! DVM$ end interval - rho = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on r(j), private(d), reduction(SUM(rho)) - do j=1, lastcol-firstcol+1 - z(j) = z(j) + alpha*p(j) - d = r(j) - alpha*q(j) - r(j) = d - rho = rho + d*d - enddo -CDVM$ end region - beta = rho / rho0 - -CDVM$ region -CDVM$ parallel (j) on r(j) - do j=1, lastcol-firstcol+1 - p(j) = r(j) + beta*p(j) - enddo -CDVM$ end region - - enddo ! end of do cgit=1,cgitmax - - -c--------------------------------------------------------------------- -c Compute residual norm explicitly: ||r|| = ||x - A.z|| -c First, form A.z -c The partition submatrix-vector multiply -c--------------------------------------------------------------------- -!WANR for many process, remote_access(z(:)) is needed - sum = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on r(j), private(d,k) - do j=1,lastrow-firstrow+1 - d = 0.d0 - do k=rowstr(j),rowstr(j+1)-1 - d = d + a(k)*z(colidx(k)) - enddo - r(j) = d - enddo - - -c--------------------------------------------------------------------- -c At this point, r contains A.z -c--------------------------------------------------------------------- -CDVM$ parallel (j) on r(j), private(d), reduction(SUM(sum)) - do j=1, lastcol-firstcol+1 - d = x(j) - r(j) - sum = sum + d*d - enddo -CDVM$ end region - rnorm = sqrt( sum ) - - - - return - end ! end of routine conj_grad - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine makea( n, nz, a, colidx, rowstr, - > firstrow, lastrow, firstcol, lastcol, - > arow, acol, aelt, iv ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - include 'npbparams.h' - integer n, nz - integer firstrow, lastrow, firstcol, lastcol - integer colidx(nz), rowstr(n+1) - integer iv(n), arow(n), acol(nonzer+1,n) - double precision aelt(nonzer+1,n) - double precision a(nz) - -c--------------------------------------------------------------------- -c generate the test problem for benchmark 6 -c makea generates a sparse matrix with a -c prescribed sparsity distribution -c -c parameter type usage -c -c input -c -c n i number of cols/rows of matrix -c nz i nonzeros as declared array size -c rcond r*8 condition number -c shift r*8 main diagonal shift -c -c output -c -c a r*8 array for nonzeros -c colidx i col indices -c rowstr i row pointers -c -c workspace -c -c iv, arow, acol i -c aelt r*8 -c--------------------------------------------------------------------- - - integer i, iouter, ivelt, nzv, nn1 - integer ivc(nonzer+1) - double precision vc(nonzer+1) - -c--------------------------------------------------------------------- -c nonzer is approximately (int(sqrt(nnza /n))); -c--------------------------------------------------------------------- - - external sparse, sprnvc, vecset - -c--------------------------------------------------------------------- -c nn1 is the smallest power of two not less than n -c--------------------------------------------------------------------- - - nn1 = 1 - 50 continue - nn1 = 2 * nn1 - if (nn1 .lt. n) goto 50 - -c--------------------------------------------------------------------- -c Generate nonzero positions and save for the use in sparse. -c--------------------------------------------------------------------- - - do iouter = 1, n - nzv = nonzer - call sprnvc( n, nzv, nn1, vc, ivc ) - call vecset( n, vc, ivc, nzv, iouter, .5D0 ) - arow(iouter) = nzv - do ivelt = 1, nzv - acol(ivelt, iouter) = ivc(ivelt) - aelt(ivelt, iouter) = vc(ivelt) - enddo - enddo - -c--------------------------------------------------------------------- -c ... make the sparse matrix from list of elements with duplicates -c (iv is used as workspace) -c--------------------------------------------------------------------- - call sparse( a, colidx, rowstr, n, nz, nonzer, arow, acol, - > aelt, firstrow, lastrow, - > iv, rcond, shift ) - return - - end -c-------end of makea------------------------------ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine sparse( a, colidx, rowstr, n, nz, nonzer, arow, acol, - > aelt, firstrow, lastrow, - > nzloc, rcond, shift ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer colidx(*), rowstr(*) - integer firstrow, lastrow - integer n, nz, nonzer, arow(*), acol(nonzer+1,*) - double precision a(*), aelt(nonzer+1,*), rcond, shift - -c--------------------------------------------------------------------- -c rows range from firstrow to lastrow -c the rowstr pointers are defined for nrows = lastrow-firstrow+1 values -c--------------------------------------------------------------------- - integer nzloc(n), nrows - -c--------------------------------------------------- -c generate a sparse matrix from a list of -c [col, row, element] tri -c--------------------------------------------------- - - integer i, j, j1, j2, nza, k, kk, nzrow, jcol - double precision xi, size, scale, ratio, va - -c--------------------------------------------------------------------- -c how many rows of result -c--------------------------------------------------------------------- - nrows = lastrow - firstrow + 1 - -c--------------------------------------------------------------------- -c ...count the number of triples in each row -c--------------------------------------------------------------------- - do j = 1, nrows+1 - rowstr(j) = 0 - enddo - - do i = 1, n - do nza = 1, arow(i) - j = acol(nza, i) + 1 - rowstr(j) = rowstr(j) + arow(i) - end do - end do - - rowstr(1) = 1 - do j = 2, nrows+1 - rowstr(j) = rowstr(j) + rowstr(j-1) - enddo - nza = rowstr(nrows+1) - 1 - -c--------------------------------------------------------------------- -c ... rowstr(j) now is the location of the first nonzero -c of row j of a -c--------------------------------------------------------------------- - - if (nza .gt. nz) then - write(*,*) 'Space for matrix elements exceeded in sparse' - write(*,*) 'nza, nzmax = ',nza, nz - stop - endif - - -c--------------------------------------------------------------------- -c ... preload data pages -c--------------------------------------------------------------------- - do j = 1, nrows - do k = rowstr(j), rowstr(j+1)-1 - a(k) = 0.d0 - colidx(k) = 0 - enddo - nzloc(j) = 0 - enddo - -c--------------------------------------------------------------------- -c ... generate actual values by summing duplicates -c--------------------------------------------------------------------- - - size = 1.0D0 - ratio = rcond ** (1.0D0 / dfloat(n)) - - do i = 1, n - do nza = 1, arow(i) - j = acol(nza, i) - - scale = size * aelt(nza, i) - do nzrow = 1, arow(i) - jcol = acol(nzrow, i) - va = aelt(nzrow, i) * scale - -c--------------------------------------------------------------------- -c ... add the identity * rcond to the generated matrix to bound -c the smallest eigenvalue from below by rcond -c--------------------------------------------------------------------- - if (jcol .eq. j .and. j .eq. i) then - va = va + rcond - shift - endif - - do k = rowstr(j), rowstr(j+1)-1 - if (colidx(k) .gt. jcol) then -c--------------------------------------------------------------------- -c ... insert colidx here orderly -c--------------------------------------------------------------------- - do kk = rowstr(j+1)-2, k, -1 - if (colidx(kk) .gt. 0) then - a(kk+1) = a(kk) - colidx(kk+1) = colidx(kk) - endif - enddo - colidx(k) = jcol - a(k) = 0.d0 - goto 40 - else if (colidx(k) .eq. 0) then - colidx(k) = jcol - goto 40 - else if (colidx(k) .eq. jcol) then -c--------------------------------------------------------------------- -c ... mark the duplicated entry -c--------------------------------------------------------------------- - nzloc(j) = nzloc(j) + 1 - goto 40 - endif - enddo - print *,'internal error in sparse: i=',i - stop - 40 continue - a(k) = a(k) + va - enddo - 60 continue - enddo - size = size * ratio - enddo - - -c--------------------------------------------------------------------- -c ... remove empty entries and generate final results -c--------------------------------------------------------------------- - do j = 2, nrows - nzloc(j) = nzloc(j) + nzloc(j-1) - enddo - - do j = 1, nrows - if (j .gt. 1) then - j1 = rowstr(j) - nzloc(j-1) - else - j1 = 1 - endif - j2 = rowstr(j+1) - nzloc(j) - 1 - nza = rowstr(j) - do k = j1, j2 - a(k) = a(nza) - colidx(k) = colidx(nza) - nza = nza + 1 - enddo - enddo - do j = 2, nrows+1 - rowstr(j) = rowstr(j) - nzloc(j-1) - enddo - nza = rowstr(nrows+1) - 1 - - -CC write (*, 11000) nza - return -11000 format ( //,'final nonzero count in sparse ', - 1 /,'number of nonzeros = ', i16 ) - end -c-------end of sparse----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine sprnvc( n, nz, nn1, v, iv ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - double precision v(*) - integer n, nz, nn1, iv(*) - common /urando/ amult, tran - double precision amult, tran - - -c--------------------------------------------------------------------- -c generate a sparse n-vector (v, iv) -c having nzv nonzeros -c -c mark(i) is set to 1 if position i is nonzero. -c mark is all zero on entry and is reset to all zero before exit -c this corrects a performance bug found by John G. Lewis, caused by -c reinitialization of mark on every one of the n calls to sprnvc -c--------------------------------------------------------------------- - - integer nzv, ii, i, icnvrt - - external randlc, icnvrt - double precision randlc, vecelt, vecloc - - - nzv = 0 - -100 continue - if (nzv .ge. nz) goto 110 - - vecelt = randlc( tran, amult ) - -c--------------------------------------------------------------------- -c generate an integer between 1 and n in a portable manner -c--------------------------------------------------------------------- - vecloc = randlc(tran, amult) - i = icnvrt(vecloc, nn1) + 1 - if (i .gt. n) goto 100 - -c--------------------------------------------------------------------- -c was this integer generated already? -c--------------------------------------------------------------------- - do ii = 1, nzv - if (iv(ii) .eq. i) goto 100 - enddo - nzv = nzv + 1 - v(nzv) = vecelt - iv(nzv) = i - goto 100 -110 continue - - return - end -c-------end of sprnvc----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - function icnvrt(x, ipwr2) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - double precision x - integer ipwr2, icnvrt - -c--------------------------------------------------------------------- -c scale a double precision number x in (0,1) by a power of 2 and chop it -c--------------------------------------------------------------------- - icnvrt = int(ipwr2 * x) - - return - end -c-------end of icnvrt----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine vecset(n, v, iv, nzv, i, val) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n, iv(*), nzv, i, k - double precision v(*), val - -c--------------------------------------------------------------------- -c set ith element of sparse vector (v, iv) with -c nzv nonzeros to val -c--------------------------------------------------------------------- - - logical set - - set = .false. - do k = 1, nzv - if (iv(k) .eq. i) then - v(k) = val - set = .true. - endif - enddo - if (.not. set) then - nzv = nzv + 1 - v(nzv) = val - iv(nzv) = i - endif - return - end -c-------end of vecset----------------------------- - - include 'print_results.f' - include 'timers.f' - include 'randdp.f' - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.DVMH_cuda.cu_opt b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.DVMH_cuda.cu_opt deleted file mode 100644 index 90ed1a4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.DVMH_cuda.cu_opt +++ /dev/null @@ -1,2285 +0,0 @@ - -#include -#define dcmplx2 Complex -#define cmplx2 Complex -typedef int __indexTypeInt; -typedef long long __indexTypeLLong; - - - - - -//--------------------- Kernel for loop on line 229 --------------------- - - __global__ void loop_cg_229_cuda_kernel_int(double _x[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _i; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 229 --------------------- - - __global__ void loop_cg_229_cuda_kernel_llong(double _x[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _i; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 233 --------------------- - - __global__ void loop_cg_233_cuda_kernel_int(double _p[], double _r[], double _z[], double _q[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _r[_j] = 0.0e0; - _p[_j] = 0.0e0; - } - } - - -//--------------------- Kernel for loop on line 233 --------------------- - - __global__ void loop_cg_233_cuda_kernel_llong(double _p[], double _r[], double _z[], double _q[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _r[_j] = 0.0e0; - _p[_j] = 0.0e0; - } - } - - -//--------------------- Kernel for loop on line 272 --------------------- - - __global__ void loop_cg_272_cuda_kernel_int(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 272 --------------------- - - __global__ void loop_cg_272_cuda_kernel_llong(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 285 --------------------- - - __global__ void loop_cg_285_cuda_kernel_int(double _x[], double _z[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 285 --------------------- - - __global__ void loop_cg_285_cuda_kernel_llong(double _x[], double _z[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 301 --------------------- - - __global__ void loop_cg_301_cuda_kernel_int(double _x[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _i; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 301 --------------------- - - __global__ void loop_cg_301_cuda_kernel_llong(double _x[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _i; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _i = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_i <= end_1) - { - -// Loop body - _x[_i] = 1.0e0; - } - } - - -//--------------------- Kernel for loop on line 347 --------------------- - - __global__ void loop_cg_347_cuda_kernel_int(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 347 --------------------- - - __global__ void loop_cg_347_cuda_kernel_llong(double _z[], double _x[], double _norm_temp1, double norm_temp1_grid[], double _norm_temp2, double norm_temp2_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _norm_temp1 = _z[_j] * _x[_j] + _norm_temp1; - _norm_temp2 = _z[_j] * _z[_j] + _norm_temp2; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _norm_temp1 = __dvmh_blockReduceSum(_norm_temp1); - _norm_temp2 = __dvmh_blockReduceSum(_norm_temp2); - if (_j % warpSize == 0) - { - norm_temp2_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp2; - norm_temp1_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _norm_temp1; - } - } - - -//--------------------- Kernel for loop on line 367 --------------------- - - __global__ void loop_cg_367_cuda_kernel_int(double _x[], double _z[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 367 --------------------- - - __global__ void loop_cg_367_cuda_kernel_llong(double _x[], double _z[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _norm_temp2) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _x[_j] = _z[_j] * _norm_temp2; - } - } - - -//--------------------- Kernel for loop on line 522 --------------------- - - __global__ void loop_cg_522_cuda_kernel_int(double _p[], double _r[], double _x[], double _z[], double _q[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _d = _x[_j]; - _r[_j] = _d; - _p[_j] = _d; - } - } - - -//--------------------- Kernel for loop on line 522 --------------------- - - __global__ void loop_cg_522_cuda_kernel_llong(double _p[], double _r[], double _x[], double _z[], double _q[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _q[_j] = 0.0e0; - _z[_j] = 0.0e0; - _d = _x[_j]; - _r[_j] = _d; - _p[_j] = _d; - } - } - - -//--------------------- Kernel for loop on line 537 --------------------- - - __global__ void loop_cg_537_cuda_kernel_int(double _r[], double _rho, double rho_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _rho = _r[_j] * _r[_j] + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 537 --------------------- - - __global__ void loop_cg_537_cuda_kernel_llong(double _r[], double _rho, double rho_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _rho = _r[_j] * _r[_j] + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 558 --------------------- - - __global__ void loop_cg_558_cuda_kernel_int(double _p_rma[], double _q[], int _colidx[], double _a[], int _rowstr[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - int _k; - double _sum; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / warpSize; - int lid = gid % warpSize; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _sum = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid ; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _sum = _p_rma[_colidx[_k]] * _a[_k] + _sum; - } - _sum = __dvmh_warpReduceSum(_sum); - if (lid == 0) { - _q[_j] = _sum; - } - } - } - - -//--------------------- Kernel for loop on line 558 --------------------- - - __global__ void loop_cg_558_cuda_kernel_llong(double _p_rma[], double _q[], int _colidx[], double _a[], int _rowstr[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - int _k; - double _sum; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / warpSize; - int lid = gid % warpSize; -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _sum = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid ; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _sum = _p_rma[_colidx[_k]] * _a[_k] + _sum; - } - _sum = __dvmh_warpReduceSum(_sum); - if (lid == 0) { - _q[_j] = _sum; - } - } - } - - -//--------------------- Kernel for loop on line 567 --------------------- - - __global__ void loop_cg_567_cuda_kernel_int(double _q[], double _p[], double _d, double d_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = _q[_j] * _p[_j] + _d; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _d = __dvmh_blockReduceSum(_d); - if (_j % warpSize == 0) - { - d_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _d; - } - } - - -//--------------------- Kernel for loop on line 567 --------------------- - - __global__ void loop_cg_567_cuda_kernel_llong(double _q[], double _p[], double _d, double d_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = _q[_j] * _p[_j] + _d; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _d = __dvmh_blockReduceSum(_d); - if (_j % warpSize == 0) - { - d_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _d; - } - } - - -//--------------------- Kernel for loop on line 577 --------------------- - - __global__ void loop_cg_577_cuda_kernel_int(double _q[], double _r[], double _p[], double _z[], double _rho, double rho_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _alpha) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _z[_j] = _p[_j] * _alpha + _z[_j]; - _d = (-(_alpha * _q[_j])) + _r[_j]; - _r[_j] = _d; - _rho = _d * _d + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 577 --------------------- - - __global__ void loop_cg_577_cuda_kernel_llong(double _q[], double _r[], double _p[], double _z[], double _rho, double rho_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _alpha) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _z[_j] = _p[_j] * _alpha + _z[_j]; - _d = (-(_alpha * _q[_j])) + _r[_j]; - _r[_j] = _d; - _rho = _d * _d + _rho; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _rho = __dvmh_blockReduceSum(_rho); - if (_j % warpSize == 0) - { - rho_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _rho; - } - } - - -//--------------------- Kernel for loop on line 588 --------------------- - - __global__ void loop_cg_588_cuda_kernel_int(double _p[], double _r[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks, double _beta) - { - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _p[_j] = _p[_j] * _beta + _r[_j]; - } - } - - -//--------------------- Kernel for loop on line 588 --------------------- - - __global__ void loop_cg_588_cuda_kernel_llong(double _p[], double _r[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks, double _beta) - { - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _p[_j] = _p[_j] * _beta + _r[_j]; - } - } - - -//--------------------- Kernel for loop on line 605 --------------------- - - __global__ void loop_cg_605_cuda_kernel_int(double _z_rma[], double _r[], int _colidx[], double _a[], int _rowstr[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - int _k; - double _d; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / warpSize; - int lid = gid % warpSize; -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _d = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _d = _z_rma[_colidx[_k]] * _a[_k] + _d; - } - _d = __dvmh_warpReduceSum(_d); - if (lid == 0) { - _r[_j] = _d; - } - } - } - - -//--------------------- Kernel for loop on line 605 --------------------- - - __global__ void loop_cg_605_cuda_kernel_llong(double _z_rma[], double _r[], int _colidx[], double _a[], int _rowstr[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - int _k; - double _d; - int cond_0; - int __k; - int gid = blockIdx.x * blockDim.x + threadIdx.x; - int tid = gid / warpSize; - int lid = gid % warpSize; -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x) / warpSize; - if (_j <= end_1) - { - -// Loop body - _d = 0.e0; - for (_k = _rowstr[_j] + lid, - (_rowstr[_j] > _rowstr[_j + 1] - 1 && 1 > 0 || _rowstr[_j] < _rowstr[_j + 1] - 1 && 1 < 0) ? - cond_0 = (-1) : - cond_0 = abs(_rowstr[_j] - (_rowstr[_j + 1] - 1)) + abs(1), - __k = 0 + lid; - __k < cond_0 ; - _k = _k + warpSize, __k = __k + warpSize) - { - _d = _z_rma[_colidx[_k]] * _a[_k] + _d; - } - _d = __dvmh_warpReduceSum(_d); - if (lid == 0) { - _r[_j] = _d; - } - } - } - - -//--------------------- Kernel for loop on line 618 --------------------- - - __global__ void loop_cg_618_cuda_kernel_int(double _r[], double _x[], double _sum, double sum_grid[], __indexTypeInt begin_1, __indexTypeInt end_1, __indexTypeInt add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeInt _j; - __indexTypeInt rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = (-_r[_j]) + _x[_j]; - _sum = _d * _d + _sum; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _sum = __dvmh_blockReduceSum(_sum); - if (_j % warpSize == 0) - { - sum_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _sum; - } - } - - -//--------------------- Kernel for loop on line 618 --------------------- - - __global__ void loop_cg_618_cuda_kernel_llong(double _r[], double _x[], double _sum, double sum_grid[], __indexTypeLLong begin_1, __indexTypeLLong end_1, __indexTypeLLong add_blocks) - { - -// Private variables - double _d; - -// Local needs - __indexTypeLLong _j; - __indexTypeLLong rest_blocks, cur_blocks; - -// Calculate each thread's loop variables' values - rest_blocks = add_blocks + blockIdx.x; - cur_blocks = rest_blocks; - _j = begin_1 + (cur_blocks * blockDim.x + threadIdx.x); - if (_j <= end_1) - { - -// Loop body - _d = (-_r[_j]) + _x[_j]; - _sum = _d * _d + _sum; - } - -// Reduction - _j = threadIdx.x + threadIdx.y * blockDim.x + threadIdx.z * (blockDim.x * blockDim.y); - _sum = __dvmh_blockReduceSum(_sum); - if (_j % warpSize == 0) - { - sum_grid[(add_blocks + blockIdx.x) * (blockDim.x * blockDim.y * blockDim.z / warpSize) + _j / warpSize] = _sum; - } - } - - - -#ifdef _MS_F_ -#define loop_cg_229_cuda_ loop_cg_229_cuda -#define loop_cg_233_cuda_ loop_cg_233_cuda -#define loop_cg_272_cuda_ loop_cg_272_cuda -#define loop_cg_285_cuda_ loop_cg_285_cuda -#define loop_cg_301_cuda_ loop_cg_301_cuda -#define loop_cg_347_cuda_ loop_cg_347_cuda -#define loop_cg_367_cuda_ loop_cg_367_cuda -#define loop_cg_522_cuda_ loop_cg_522_cuda -#define loop_cg_537_cuda_ loop_cg_537_cuda -#define loop_cg_558_cuda_ loop_cg_558_cuda -#define loop_cg_567_cuda_ loop_cg_567_cuda -#define loop_cg_577_cuda_ loop_cg_577_cuda -#define loop_cg_588_cuda_ loop_cg_588_cuda -#define loop_cg_605_cuda_ loop_cg_605_cuda -#define loop_cg_618_cuda_ loop_cg_618_cuda -#endif - -extern "C" { - extern DvmType loop_cg_618_cuda_kernel_llong_regs, loop_cg_618_cuda_kernel_int_regs, loop_cg_605_cuda_kernel_llong_regs, loop_cg_605_cuda_kernel_int_regs, loop_cg_588_cuda_kernel_llong_regs, loop_cg_588_cuda_kernel_int_regs, loop_cg_577_cuda_kernel_llong_regs, loop_cg_577_cuda_kernel_int_regs, loop_cg_567_cuda_kernel_llong_regs, loop_cg_567_cuda_kernel_int_regs, loop_cg_558_cuda_kernel_llong_regs, loop_cg_558_cuda_kernel_int_regs, loop_cg_537_cuda_kernel_llong_regs, loop_cg_537_cuda_kernel_int_regs, loop_cg_522_cuda_kernel_llong_regs, loop_cg_522_cuda_kernel_int_regs, loop_cg_367_cuda_kernel_llong_regs, loop_cg_367_cuda_kernel_int_regs, loop_cg_347_cuda_kernel_llong_regs, loop_cg_347_cuda_kernel_int_regs, loop_cg_301_cuda_kernel_llong_regs, loop_cg_301_cuda_kernel_int_regs, loop_cg_285_cuda_kernel_llong_regs, loop_cg_285_cuda_kernel_int_regs, loop_cg_272_cuda_kernel_llong_regs, loop_cg_272_cuda_kernel_int_regs, loop_cg_233_cuda_kernel_llong_regs, loop_cg_233_cuda_kernel_int_regs, loop_cg_229_cuda_kernel_llong_regs, loop_cg_229_cuda_kernel_int_regs; - - -// CUDA handler for loop on line 229 - - void loop_cg_229_cuda_(DvmType *loop_ref, DvmType _x[]) - { - void *x_base; - DvmType d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_229_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_229_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_229_cuda_kernel_int<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_229_cuda_kernel_llong<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 233 - - void loop_cg_233_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], DvmType _z[], DvmType _q[]) - { - void *p_base, *r_base, *z_base, *q_base; - DvmType d_p[4], d_r[4], d_z[4], d_q[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - z_base = dvmh_get_natural_base(&device_num, _z); - q_base = dvmh_get_natural_base(&device_num, _q); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, q_base, _q, d_q); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_233_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_233_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_233_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_233_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 272 - - void loop_cg_272_cuda_(DvmType *loop_ref, DvmType _z[], DvmType _x[]) - { - void *z_base, *x_base; - DvmType d_z[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *norm_temp2_grid; - double _norm_temp2; - void *norm_temp1_grid; - double _norm_temp1; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &norm_temp1_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp1, 0); - red_num = 2; - loop_cuda_register_red(loop_ref, red_num, &norm_temp2_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp2, 0); - -// Get 'natural' bases - z_base = dvmh_get_natural_base(&device_num, _z); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_272_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_272_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - red_num = 2; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_272_cuda_kernel_int<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_272_cuda_kernel_llong<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - red_num = 2; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 285 - - void loop_cg_285_cuda_(DvmType *loop_ref, DvmType _x[], DvmType _z[], double *_norm_temp2) - { - void *x_base, *z_base; - DvmType d_x[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_285_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_285_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_285_cuda_kernel_int<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - else - { - loop_cg_285_cuda_kernel_llong<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 301 - - void loop_cg_301_cuda_(DvmType *loop_ref, DvmType _x[]) - { - void *x_base; - DvmType d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_301_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_301_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_301_cuda_kernel_int<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_301_cuda_kernel_llong<<>>((double *)x_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 347 - - void loop_cg_347_cuda_(DvmType *loop_ref, DvmType _z[], DvmType _x[]) - { - void *z_base, *x_base; - DvmType d_z[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *norm_temp2_grid; - double _norm_temp2; - void *norm_temp1_grid; - double _norm_temp1; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &norm_temp1_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp1, 0); - red_num = 2; - loop_cuda_register_red(loop_ref, red_num, &norm_temp2_grid, 0); - loop_red_init_(loop_ref, &red_num, &_norm_temp2, 0); - -// Get 'natural' bases - z_base = dvmh_get_natural_base(&device_num, _z); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_347_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_347_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - red_num = 2; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_347_cuda_kernel_int<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_347_cuda_kernel_llong<<>>((double *)z_base, (double *)x_base, _norm_temp1, (double *)norm_temp1_grid, _norm_temp2, (double *)norm_temp2_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - red_num = 2; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 367 - - void loop_cg_367_cuda_(DvmType *loop_ref, DvmType _x[], DvmType _z[], double *_norm_temp2) - { - void *x_base, *z_base; - DvmType d_x[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_367_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_367_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_367_cuda_kernel_int<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - else - { - loop_cg_367_cuda_kernel_llong<<>>((double *)x_base, (double *)z_base, idxL[0], idxH[0], addBlocks, *_norm_temp2); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 522 - - void loop_cg_522_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], DvmType _x[], DvmType _z[], DvmType _q[]) - { - void *p_base, *r_base, *x_base, *z_base, *q_base; - DvmType d_p[4], d_r[4], d_x[4], d_z[4], d_q[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - x_base = dvmh_get_natural_base(&device_num, _x); - z_base = dvmh_get_natural_base(&device_num, _z); - q_base = dvmh_get_natural_base(&device_num, _q); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - dvmh_fill_header_(&device_num, q_base, _q, d_q); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_522_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_522_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_522_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, (double *)x_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_522_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, (double *)x_base, (double *)z_base, (double *)q_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 537 - - void loop_cg_537_cuda_(DvmType *loop_ref, DvmType _r[]) - { - void *r_base; - DvmType d_r[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *rho_grid; - double _rho; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &rho_grid, 0); - loop_red_init_(loop_ref, &red_num, &_rho, 0); - -// Get 'natural' bases - r_base = dvmh_get_natural_base(&device_num, _r); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, r_base, _r, d_r); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_537_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_537_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_537_cuda_kernel_int<<>>((double *)r_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_537_cuda_kernel_llong<<>>((double *)r_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 558 - - void loop_cg_558_cuda_(DvmType *loop_ref, DvmType _p_rma[], DvmType _q[], DvmType _colidx[], DvmType _a[], DvmType _rowstr[]) - { - void *p_rma_base, *q_base, *colidx_base, *a_base, *rowstr_base; - DvmType d_p_rma[4], d_q[4], d_colidx[4], d_a[4], d_rowstr[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_rma_base = dvmh_get_natural_base(&device_num, _p_rma); - q_base = dvmh_get_natural_base(&device_num, _q); - colidx_base = dvmh_get_natural_base(&device_num, _colidx); - a_base = dvmh_get_natural_base(&device_num, _a); - rowstr_base = dvmh_get_natural_base(&device_num, _rowstr); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_rma_base, _p_rma, d_p_rma); - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, colidx_base, _colidx, d_colidx); - dvmh_fill_header_(&device_num, a_base, _a, d_a); - dvmh_fill_header_(&device_num, rowstr_base, _rowstr, d_rowstr); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_558_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_558_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks * dvmh_get_warp_size(loop_ref); - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - maxBlocks = maxBlocks / dvmh_get_warp_size(loop_ref) * dvmh_get_warp_size(loop_ref); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_558_cuda_kernel_int<<>>((double *)p_rma_base, (double *)q_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_558_cuda_kernel_llong<<>>((double *)p_rma_base, (double *)q_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 567 - - void loop_cg_567_cuda_(DvmType *loop_ref, DvmType _q[], DvmType _p[]) - { - void *q_base, *p_base; - DvmType d_q[4], d_p[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *d_grid; - double _d; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &d_grid, 0); - loop_red_init_(loop_ref, &red_num, &_d, 0); - -// Get 'natural' bases - q_base = dvmh_get_natural_base(&device_num, _q); - p_base = dvmh_get_natural_base(&device_num, _p); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, p_base, _p, d_p); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_567_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_567_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_567_cuda_kernel_int<<>>((double *)q_base, (double *)p_base, _d, (double *)d_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_567_cuda_kernel_llong<<>>((double *)q_base, (double *)p_base, _d, (double *)d_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 577 - - void loop_cg_577_cuda_(DvmType *loop_ref, DvmType _q[], DvmType _r[], DvmType _p[], DvmType _z[], double *_alpha) - { - void *q_base, *r_base, *p_base, *z_base; - DvmType d_q[4], d_r[4], d_p[4], d_z[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *rho_grid; - double _rho; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &rho_grid, 0); - loop_red_init_(loop_ref, &red_num, &_rho, 0); - -// Get 'natural' bases - q_base = dvmh_get_natural_base(&device_num, _q); - r_base = dvmh_get_natural_base(&device_num, _r); - p_base = dvmh_get_natural_base(&device_num, _p); - z_base = dvmh_get_natural_base(&device_num, _z); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, q_base, _q, d_q); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, z_base, _z, d_z); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_577_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_577_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_577_cuda_kernel_int<<>>((double *)q_base, (double *)r_base, (double *)p_base, (double *)z_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks, *_alpha); - } - else - { - loop_cg_577_cuda_kernel_llong<<>>((double *)q_base, (double *)r_base, (double *)p_base, (double *)z_base, _rho, (double *)rho_grid, idxL[0], idxH[0], addBlocks, *_alpha); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - - -// CUDA handler for loop on line 588 - - void loop_cg_588_cuda_(DvmType *loop_ref, DvmType _p[], DvmType _r[], double *_beta) - { - void *p_base, *r_base; - DvmType d_p[4], d_r[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - p_base = dvmh_get_natural_base(&device_num, _p); - r_base = dvmh_get_natural_base(&device_num, _r); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, p_base, _p, d_p); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_588_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_588_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_588_cuda_kernel_int<<>>((double *)p_base, (double *)r_base, idxL[0], idxH[0], addBlocks, *_beta); - } - else - { - loop_cg_588_cuda_kernel_llong<<>>((double *)p_base, (double *)r_base, idxL[0], idxH[0], addBlocks, *_beta); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 605 - - void loop_cg_605_cuda_(DvmType *loop_ref, DvmType _z_rma[], DvmType _r[], DvmType _colidx[], DvmType _a[], DvmType _rowstr[]) - { - void *z_rma_base, *r_base, *colidx_base, *a_base, *rowstr_base; - DvmType d_z_rma[4], d_r[4], d_colidx[4], d_a[4], d_rowstr[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Get 'natural' bases - z_rma_base = dvmh_get_natural_base(&device_num, _z_rma); - r_base = dvmh_get_natural_base(&device_num, _r); - colidx_base = dvmh_get_natural_base(&device_num, _colidx); - a_base = dvmh_get_natural_base(&device_num, _a); - rowstr_base = dvmh_get_natural_base(&device_num, _rowstr); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, z_rma_base, _z_rma, d_z_rma); - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, colidx_base, _colidx, d_colidx); - dvmh_fill_header_(&device_num, a_base, _a, d_a); - dvmh_fill_header_(&device_num, rowstr_base, _rowstr, d_rowstr); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, 0, loop_cg_605_cuda_kernel_int_regs, &threads, &stream, 0); - } - else - { - loop_cuda_get_config(loop_ref, 0, loop_cg_605_cuda_kernel_llong_regs, &threads, &stream, 0); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks * dvmh_get_warp_size(loop_ref); - addBlocks = 0; - blocks = dim3(1, 1, 1); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - maxBlocks = maxBlocks / dvmh_get_warp_size(loop_ref) * dvmh_get_warp_size(loop_ref); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_605_cuda_kernel_int<<>>((double *)z_rma_base, (double *)r_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_605_cuda_kernel_llong<<>>((double *)z_rma_base, (double *)r_base, (int *)colidx_base, (double *)a_base, (int *)rowstr_base, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - } - - -// CUDA handler for loop on line 618 - - void loop_cg_618_cuda_(DvmType *loop_ref, DvmType _r[], DvmType _x[]) - { - void *r_base, *x_base; - DvmType d_r[4], d_x[4]; - DvmType idxTypeInKernel; - dim3 blocks, threads; - cudaStream_t stream; - DvmType idxL[1], idxH[1], loopSteps[1]; - DvmType blocksS[1], restBlocks, maxBlocks, addBlocks, overallBlocks; - void *sum_grid; - double _sum; - DvmType red_num, num_of_red_blocks, fill_flag; - DvmType shared_mem; - DvmType device_num; - -// Get device number - device_num = loop_get_device_num_(loop_ref); - -// Register reduction for CUDA-execution - red_num = 1; - loop_cuda_register_red(loop_ref, red_num, &sum_grid, 0); - loop_red_init_(loop_ref, &red_num, &_sum, 0); - -// Get 'natural' bases - r_base = dvmh_get_natural_base(&device_num, _r); - x_base = dvmh_get_natural_base(&device_num, _x); - -// Fill 'device' headers - dvmh_fill_header_(&device_num, r_base, _r, d_r); - dvmh_fill_header_(&device_num, x_base, _x, d_x); - -// Guess index type in CUDA kernel - idxTypeInKernel = loop_guess_index_type_(loop_ref); - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(int)) - { - idxTypeInKernel = rt_INT; - } - if (idxTypeInKernel == rt_LONG && sizeof(long) == sizeof(long long)) - { - idxTypeInKernel = rt_LLONG; - } - -// Get CUDA configuration parameters - threads = dim3(0, 0, 0); -#ifdef CUDA_FERMI_ARCH - shared_mem = 8; -#else - shared_mem = 0; -#endif - if (idxTypeInKernel == rt_INT) - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_618_cuda_kernel_int_regs, &threads, &stream, &shared_mem); - } - else - { - loop_cuda_get_config(loop_ref, shared_mem, loop_cg_618_cuda_kernel_llong_regs, &threads, &stream, &shared_mem); - } - loop_fill_bounds_(loop_ref, idxL, idxH, loopSteps); - blocksS[0] = (idxH[0] - idxL[0] + threads.x) / threads.x; - overallBlocks = blocksS[0]; - restBlocks = overallBlocks; - addBlocks = 0; - blocks = dim3(1, 1, 1); - -// Prepare reduction - num_of_red_blocks = overallBlocks * (threads.x * threads.y * threads.z / dvmh_get_warp_size(loop_ref)); - fill_flag = 0; - red_num = 1; - loop_cuda_red_prepare(loop_ref, red_num, num_of_red_blocks, fill_flag); - maxBlocks = loop_cuda_get_device_prop(loop_ref, CUDA_MAX_GRID_X); - -// GPU execution - while (restBlocks > 0) - { - if (restBlocks <= maxBlocks) - { - blocks = restBlocks; - } - else - { - blocks = maxBlocks; - } - if (idxTypeInKernel == rt_INT) - { - loop_cg_618_cuda_kernel_int<<>>((double *)r_base, (double *)x_base, _sum, (double *)sum_grid, idxL[0], idxH[0], addBlocks); - } - else - { - loop_cg_618_cuda_kernel_llong<<>>((double *)r_base, (double *)x_base, _sum, (double *)sum_grid, idxL[0], idxH[0], addBlocks); - } - addBlocks += blocks.x; - restBlocks -= blocks.x; - } - -// Finish reduction - red_num = 1; - loop_red_finish(loop_ref, red_num); - } - -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.fdv deleted file mode 100644 index f077345..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/cluster/cg.fdv +++ /dev/null @@ -1,1008 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! S E R I A L V E R S I O N ! -! ! -! C G ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is a serial version of the NPB CG code. ! -! Refer to NAS Technical Reports 95-020 for details. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - - -c--------------------------------------------------------------------- -c NPB CG serial version -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c Authors: M. Yarrow -c C. Kuszmaul -c A.S. Kolganov -c -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - program cg -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - - implicit none - - include 'globals.h' - - - common / main_int_mem / colidx, rowstr, - > iv, arow, acol - integer colidx(nz), rowstr(na+1), - > iv(na), arow(na), acol(naz), - > bl_low, bl_high, blGen,gBL(2) - - - common / main_flt_mem / aelt, a, - > x, - > z, - > p, - > q, - > r - double precision aelt(naz), a(nz), - > x(na+1), - > z(na+1), - > p(na+1), - > q(na+1), - > r(na+1) - - - - -CDVM$ TEMPLATE ttt(na+2) -CDVM$ DISTRIBUTE ttt(BLOCK) -CDVM$ ALIGN z(I) WITH ttt(I) - -CDVM$ ALIGN x(I) WITH z(I) -CDVM$ ALIGN r(I) WITH z(I) -CDVM$ ALIGN p(I) WITH z(I) -CDVM$ ALIGN q(I) WITH z(I) - - - integer i, j, k, it, sumL - - double precision zeta, randlc - external randlc - double precision rnorm - double precision norm_temp1,norm_temp2 - - double precision t, mflops, tmax - character class - logical verified - double precision zeta_verify_value, epsilon, err - - integer fstatus - character t_names(t_last)*8 - - do i = 1, T_last - call timer_clear( i ) - end do - - open(unit=2, file='timer.flag', status='old', iostat=fstatus) - if (fstatus .eq. 0) then - timeron = .true. - t_names(t_init) = 'init' - t_names(t_bench) = 'benchmk' - t_names(t_conj_grad) = 'conjgd' - close(2) - else - timeron = .false. - endif - - call timer_start( T_init ) - - firstrow = 1 - lastrow = na - firstcol = 1 - lastcol = na - - - if( na .eq. 1400 .and. - & nonzer .eq. 7 .and. - & niter .eq. 15 .and. - & shift .eq. 10.d0 ) then - class = 'S' - zeta_verify_value = 8.5971775078648d0 - else if( na .eq. 7000 .and. - & nonzer .eq. 8 .and. - & niter .eq. 15 .and. - & shift .eq. 12.d0 ) then - class = 'W' - zeta_verify_value = 10.362595087124d0 - else if( na .eq. 14000 .and. - & nonzer .eq. 11 .and. - & niter .eq. 15 .and. - & shift .eq. 20.d0 ) then - class = 'A' - zeta_verify_value = 17.130235054029d0 - else if( na .eq. 75000 .and. - & nonzer .eq. 13 .and. - & niter .eq. 75 .and. - & shift .eq. 60.d0 ) then - class = 'B' - zeta_verify_value = 22.712745482631d0 - else if( na .eq. 150000 .and. - & nonzer .eq. 15 .and. - & niter .eq. 75 .and. - & shift .eq. 110.d0 ) then - class = 'C' - zeta_verify_value = 28.973605592845d0 - else if( na .eq. 1500000 .and. - & nonzer .eq. 21 .and. - & niter .eq. 100 .and. - & shift .eq. 500.d0 ) then - class = 'D' - zeta_verify_value = 52.514532105794d0 - else if( na .eq. 9000000 .and. - & nonzer .eq. 26 .and. - & niter .eq. 100 .and. - & shift .eq. 1.5d3 ) then - class = 'E' - zeta_verify_value = 77.522164599383d0 - else - class = 'U' - endif - - write( *,1000 ) - write( *,1001 ) na - write( *,1002 ) niter - write( *,* ) - 1000 format(//,' NAS Parallel Benchmarks (NPB3.3-DVMH)', - > ' - CG Benchmark', /) - 1001 format(' Size: ', i11 ) - 1002 format(' Iterations: ', i5 ) - - naa = na - nzz = nz - - -c--------------------------------------------------------------------- -c Inialize random number generator -c--------------------------------------------------------------------- - tran = 314159265.0D0 - amult = 1220703125.0D0 - zeta = randlc( tran, amult ) - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - call makea(naa, nzz, a, colidx, rowstr, - > firstrow, lastrow, firstcol, lastcol, - > arow, acol, aelt, iv) - - - -c--------------------------------------------------------------------- -c Note: as a result of the above call to makea: -c values of j used in indexing rowstr go from 1 --> lastrow-firstrow+1 -c values of colidx which are col indexes go from firstcol --> lastcol -c So: -c Shift the col index vals from actual (firstcol --> lastcol ) -c to local, i.e., (1 --> lastcol-firstcol+1) -c--------------------------------------------------------------------- - do j=1,lastrow-firstrow+1 - do k=rowstr(j),rowstr(j+1)-1 - colidx(k) = colidx(k) - firstcol + 1 - enddo - enddo - -c--------------------------------------------------------------------- -c set starting vector to (1, 1, .... 1) -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (i) on x(i) - do i = 1, na+1 - x(i) = 1.0D0 - enddo -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - q(j) = 0.0d0 - z(j) = 0.0d0 - r(j) = 0.0d0 - p(j) = 0.0d0 - enddo -CDVM$ end region - zeta = 0.0d0 - -c--------------------------------------------------------------------- -c----> -c Do one iteration untimed to init all code and data page tables -c----> (then reinit, start timing, to niter its) -c--------------------------------------------------------------------- - do it = 1, 1 - -c--------------------------------------------------------------------- -c The call to the conjugate gradient routine: -c--------------------------------------------------------------------- - call conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) - -c--------------------------------------------------------------------- -c zeta = shift + 1/(x.z) -c So, first: (x.z) -c Also, find norm of z -c So, first: (z.z) -c--------------------------------------------------------------------- - norm_temp1 = 0.0d0 - norm_temp2 = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on x(j),reduction(SUM(norm_temp1),SUM(norm_temp2)) - do j=1, lastcol-firstcol+1 - norm_temp1 = norm_temp1 + x(j)*z(j) - norm_temp2 = norm_temp2 + z(j)*z(j) - enddo -CDVM$ end region - norm_temp2 = 1.0d0 / sqrt( norm_temp2 ) - - -c--------------------------------------------------------------------- -c Normalize z to obtain x -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - x(j) = norm_temp2*z(j) - enddo -CDVM$ end region - - enddo ! end of do one iteration untimed - - -c--------------------------------------------------------------------- -c set starting vector to (1, 1, .... 1) -c--------------------------------------------------------------------- -c -c -c -CDVM$ region -CDVM$ parallel (i) on x(i) - do i = 1, na+1 - x(i) = 1.0D0 - enddo -CDVM$ end region - zeta = 0.0d0 - - call timer_stop( T_init ) - - write (*, 2000) timer_read(T_init) - 2000 format(' Initialization time = ',f15.3,' seconds') - - call timer_start( T_bench ) - -c--------------------------------------------------------------------- -c----> -c Main Iteration for inverse power method -c----> -c--------------------------------------------------------------------- - do it = 1, niter - -c--------------------------------------------------------------------- -c The call to the conjugate gradient routine: -c--------------------------------------------------------------------- - if ( timeron ) call timer_start( T_conj_grad ) - call conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) - if ( timeron ) call timer_stop( T_conj_grad ) - - -c--------------------------------------------------------------------- -c zeta = shift + 1/(x.z) -c So, first: (x.z) -c Also, find norm of z -c So, first: (z.z) -c--------------------------------------------------------------------- - norm_temp1 = 0.0d0 - norm_temp2 = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on x(j),reduction(SUM(norm_temp1),SUM(norm_temp2)) - do j=1, lastcol-firstcol+1 - norm_temp1 = norm_temp1 + x(j)*z(j) - norm_temp2 = norm_temp2 + z(j)*z(j) - enddo -CDVM$ end region - norm_temp2 = 1.0d0 / sqrt( norm_temp2 ) - - - zeta = shift + 1.0d0 / norm_temp1 - if( it .eq. 1 ) write( *,9000 ) - write( *,9001 ) it, rnorm, zeta - - 9000 format( /,' iteration ||r|| zeta' ) - 9001 format( 4x, i5, 7x, e20.14, f20.13 ) - -c--------------------------------------------------------------------- -c Normalize z to obtain x -c--------------------------------------------------------------------- -CDVM$ region -CDVM$ parallel (j) on x(j) - do j=1, lastcol-firstcol+1 - x(j) = norm_temp2*z(j) - enddo -CDVM$ end region - - enddo ! end of main iter inv pow meth - - call timer_stop( T_bench ) - -c--------------------------------------------------------------------- -c End of timed section -c--------------------------------------------------------------------- - - t = timer_read( T_bench ) - - - write(*,100) - 100 format(' Benchmark completed ') - - epsilon = 1.d-10 - if (class .ne. 'U') then - -c err = abs( zeta - zeta_verify_value) - err = abs( zeta - zeta_verify_value )/zeta_verify_value - if( err .le. epsilon .and. ( .not. isnan(err))) then - verified = .TRUE. - write(*, 200) - write(*, 201) zeta - write(*, 202) err - 200 format(' VERIFICATION SUCCESSFUL ') - 201 format(' Zeta is ', E20.13) - 202 format(' Error is ', E20.13) - else - verified = .FALSE. - write(*, 300) - write(*, 301) zeta - write(*, 302) zeta_verify_value - 300 format(' VERIFICATION FAILED') - 301 format(' Zeta ', E20.13) - 302 format(' The correct zeta is ', E20.13) - endif - else - verified = .FALSE. - write (*, 400) - write (*, 401) - write (*, 201) zeta - 400 format(' Problem size unknown') - 401 format(' NO VERIFICATION PERFORMED') - endif - - - if( t .ne. 0. ) then - mflops = float( 2*niter*na ) - & * ( 3.+float( nonzer*(nonzer+1) ) - & + 25.*(5.+float( nonzer*(nonzer+1) )) - & + 3. ) / t / 1000000.0 - else - mflops = 0.0 - endif - - - call print_results('CG', class, na, 0, 0, - > niter, t, - > mflops, ' floating point', - > verified, npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - - - 600 format( i4, 2e19.12) - - -c--------------------------------------------------------------------- -c More timers -c--------------------------------------------------------------------- - if (.not.timeron) goto 999 - - tmax = timer_read(T_bench) - if (tmax .eq. 0.0) tmax = 1.0 - - write(*,800) - 800 format(' SECTION Time (secs)') - do i=1, t_last - t = timer_read(i) - if (i.eq.t_init) then - write(*,810) t_names(i), t - else - write(*,810) t_names(i), t, t*100./tmax - if (i.eq.t_conj_grad) then - t = tmax - t - write(*,820) 'rest', t, t*100./tmax - endif - endif - 810 format(2x,a8,':',f9.3:' (',f6.2,'%)') - 820 format(' --> ',a8,':',f9.3,' (',f6.2,'%)') - end do - - 999 continue - - - end ! end main - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine conj_grad ( colidx, - > rowstr, - > x, - > z, - > a, - > p, - > q, - > r, - > rnorm ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Floaging point arrays here are named as in NPB1 spec discussion of -c CG algorithm -c--------------------------------------------------------------------- - - implicit none - - - include 'globals.h' - - - double precision x(*), - > z(*), - > a(nzz) - integer colidx(nzz), rowstr(naa+1) - - double precision p(*), - > q(*), - > r(*) - - - integer j, k - integer cgit, cgitmax, mlen,idx, idxl - - double precision d, sum, rho, rho0, alpha, beta, rnorm - - data cgitmax / 25 / -CDVM$ INHERIT x, z, r, p, q - - rho = 0.0d0 - -c--------------------------------------------------------------------- -c Initialize the CG algorithm: -c--------------------------------------------------------------------- - -CDVM$ region -CDVM$ parallel (j) on q(j), private(d) - do j=1,naa+1 - q(j) = 0.0d0 - z(j) = 0.0d0 - d = x(j) - r(j) = d - p(j) = d - enddo - - -c--------------------------------------------------------------------- -c rho = r.r -c Now, obtain the norm of r: First, sum squares of r elements locally... -c--------------------------------------------------------------------- - -CDVM$ parallel(j) on r(j), reduction(SUM(rho)) - do j=1, lastcol-firstcol+1 - rho = rho + r(j)*r(j) - enddo -! mlen = 128 -! DVM$ parallel(j) on r(j), reduction(MAX(mlen)) -! do j=1,lastrow-firstrow+1 -! mlen = max(mlen, rowstr(j+1) - rowstr(j)) -! enddo -CDVM$ end region -! write(*,*) 'maxlen = ', mlen -c--------------------------------------------------------------------- -c----> -c The conj grad iteration loop -c----> -c--------------------------------------------------------------------- - do cgit = 1, cgitmax - - d = 0.0d0 -CDVM$ region - -CDVM$ parallel (j) on p(j), private(sum,k), remote_access(p(:)) - do j=1,lastrow-firstrow+1 - sum = 0.d0 - do k=rowstr(j),rowstr(j+1)-1 - sum = sum + a(k)*p(colidx(k)) - enddo - q(j) = sum - enddo - -CDVM$ parallel (j) on q(j), reduction(SUM(d)) - do j=1, lastcol-firstcol+1 - d = d + p(j)*q(j) - enddo -CDVM$ end region - alpha = rho / d - rho0 = rho - - rho = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on r(j), private(d), reduction(SUM(rho)) - do j=1, lastcol-firstcol+1 - z(j) = z(j) + alpha*p(j) - d = r(j) - alpha*q(j) - r(j) = d - rho = rho + d*d - enddo -CDVM$ end region - beta = rho / rho0 - -CDVM$ region -CDVM$ parallel (j) on r(j) - do j=1, lastcol-firstcol+1 - p(j) = r(j) + beta*p(j) - enddo -CDVM$ end region - - enddo ! end of do cgit=1,cgitmax - - -c--------------------------------------------------------------------- -c Compute residual norm explicitly: ||r|| = ||x - A.z|| -c First, form A.z -c The partition submatrix-vector multiply -c--------------------------------------------------------------------- - - sum = 0.0d0 -CDVM$ region -CDVM$ parallel (j) on r(j), private(d,k),remote_access(z(:)) - do j=1,lastrow-firstrow+1 - d = 0.d0 - do k=rowstr(j),rowstr(j+1)-1 - d = d + a(k)*z(colidx(k)) - enddo - r(j) = d - enddo - - -c--------------------------------------------------------------------- -c At this point, r contains A.z -c--------------------------------------------------------------------- -CDVM$ parallel (j) on r(j), private(d), reduction(SUM(sum)) - do j=1, lastcol-firstcol+1 - d = x(j) - r(j) - sum = sum + d*d - enddo -CDVM$ end region - rnorm = sqrt( sum ) - - - - return - end ! end of routine conj_grad - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine makea( n, nz, a, colidx, rowstr, - > firstrow, lastrow, firstcol, lastcol, - > arow, acol, aelt, iv ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - include 'npbparams.h' - integer n, nz - integer firstrow, lastrow, firstcol, lastcol - integer colidx(nz), rowstr(n+1) - integer iv(n), arow(n), acol(nonzer+1,n) - double precision aelt(nonzer+1,n) - double precision a(nz) - -c--------------------------------------------------------------------- -c generate the test problem for benchmark 6 -c makea generates a sparse matrix with a -c prescribed sparsity distribution -c -c parameter type usage -c -c input -c -c n i number of cols/rows of matrix -c nz i nonzeros as declared array size -c rcond r*8 condition number -c shift r*8 main diagonal shift -c -c output -c -c a r*8 array for nonzeros -c colidx i col indices -c rowstr i row pointers -c -c workspace -c -c iv, arow, acol i -c aelt r*8 -c--------------------------------------------------------------------- - - integer i, iouter, ivelt, nzv, nn1 - integer ivc(nonzer+1) - double precision vc(nonzer+1) - -c--------------------------------------------------------------------- -c nonzer is approximately (int(sqrt(nnza /n))); -c--------------------------------------------------------------------- - - external sparse, sprnvc, vecset - -c--------------------------------------------------------------------- -c nn1 is the smallest power of two not less than n -c--------------------------------------------------------------------- - - nn1 = 1 - 50 continue - nn1 = 2 * nn1 - if (nn1 .lt. n) goto 50 - -c--------------------------------------------------------------------- -c Generate nonzero positions and save for the use in sparse. -c--------------------------------------------------------------------- - - do iouter = 1, n - nzv = nonzer - call sprnvc( n, nzv, nn1, vc, ivc ) - call vecset( n, vc, ivc, nzv, iouter, .5D0 ) - arow(iouter) = nzv - do ivelt = 1, nzv - acol(ivelt, iouter) = ivc(ivelt) - aelt(ivelt, iouter) = vc(ivelt) - enddo - enddo - -c--------------------------------------------------------------------- -c ... make the sparse matrix from list of elements with duplicates -c (iv is used as workspace) -c--------------------------------------------------------------------- - call sparse( a, colidx, rowstr, n, nz, nonzer, arow, acol, - > aelt, firstrow, lastrow, - > iv, rcond, shift ) - return - - end -c-------end of makea------------------------------ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine sparse( a, colidx, rowstr, n, nz, nonzer, arow, acol, - > aelt, firstrow, lastrow, - > nzloc, rcond, shift ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer colidx(*), rowstr(*) - integer firstrow, lastrow - integer n, nz, nonzer, arow(*), acol(nonzer+1,*) - double precision a(*), aelt(nonzer+1,*), rcond, shift - -c--------------------------------------------------------------------- -c rows range from firstrow to lastrow -c the rowstr pointers are defined for nrows = lastrow-firstrow+1 values -c--------------------------------------------------------------------- - integer nzloc(n), nrows - -c--------------------------------------------------- -c generate a sparse matrix from a list of -c [col, row, element] tri -c--------------------------------------------------- - - integer i, j, j1, j2, nza, k, kk, nzrow, jcol - double precision xi, size, scale, ratio, va - -c--------------------------------------------------------------------- -c how many rows of result -c--------------------------------------------------------------------- - nrows = lastrow - firstrow + 1 - -c--------------------------------------------------------------------- -c ...count the number of triples in each row -c--------------------------------------------------------------------- - do j = 1, nrows+1 - rowstr(j) = 0 - enddo - - do i = 1, n - do nza = 1, arow(i) - j = acol(nza, i) + 1 - rowstr(j) = rowstr(j) + arow(i) - end do - end do - - rowstr(1) = 1 - do j = 2, nrows+1 - rowstr(j) = rowstr(j) + rowstr(j-1) - enddo - nza = rowstr(nrows+1) - 1 - -c--------------------------------------------------------------------- -c ... rowstr(j) now is the location of the first nonzero -c of row j of a -c--------------------------------------------------------------------- - - if (nza .gt. nz) then - write(*,*) 'Space for matrix elements exceeded in sparse' - write(*,*) 'nza, nzmax = ',nza, nz - stop - endif - - -c--------------------------------------------------------------------- -c ... preload data pages -c--------------------------------------------------------------------- - do j = 1, nrows - do k = rowstr(j), rowstr(j+1)-1 - a(k) = 0.d0 - colidx(k) = 0 - enddo - nzloc(j) = 0 - enddo - -c--------------------------------------------------------------------- -c ... generate actual values by summing duplicates -c--------------------------------------------------------------------- - - size = 1.0D0 - ratio = rcond ** (1.0D0 / dfloat(n)) - - do i = 1, n - do nza = 1, arow(i) - j = acol(nza, i) - - scale = size * aelt(nza, i) - do nzrow = 1, arow(i) - jcol = acol(nzrow, i) - va = aelt(nzrow, i) * scale - -c--------------------------------------------------------------------- -c ... add the identity * rcond to the generated matrix to bound -c the smallest eigenvalue from below by rcond -c--------------------------------------------------------------------- - if (jcol .eq. j .and. j .eq. i) then - va = va + rcond - shift - endif - - do k = rowstr(j), rowstr(j+1)-1 - if (colidx(k) .gt. jcol) then -c--------------------------------------------------------------------- -c ... insert colidx here orderly -c--------------------------------------------------------------------- - do kk = rowstr(j+1)-2, k, -1 - if (colidx(kk) .gt. 0) then - a(kk+1) = a(kk) - colidx(kk+1) = colidx(kk) - endif - enddo - colidx(k) = jcol - a(k) = 0.d0 - goto 40 - else if (colidx(k) .eq. 0) then - colidx(k) = jcol - goto 40 - else if (colidx(k) .eq. jcol) then -c--------------------------------------------------------------------- -c ... mark the duplicated entry -c--------------------------------------------------------------------- - nzloc(j) = nzloc(j) + 1 - goto 40 - endif - enddo - print *,'internal error in sparse: i=',i - stop - 40 continue - a(k) = a(k) + va - enddo - 60 continue - enddo - size = size * ratio - enddo - - -c--------------------------------------------------------------------- -c ... remove empty entries and generate final results -c--------------------------------------------------------------------- - do j = 2, nrows - nzloc(j) = nzloc(j) + nzloc(j-1) - enddo - - do j = 1, nrows - if (j .gt. 1) then - j1 = rowstr(j) - nzloc(j-1) - else - j1 = 1 - endif - j2 = rowstr(j+1) - nzloc(j) - 1 - nza = rowstr(j) - do k = j1, j2 - a(k) = a(nza) - colidx(k) = colidx(nza) - nza = nza + 1 - enddo - enddo - do j = 2, nrows+1 - rowstr(j) = rowstr(j) - nzloc(j-1) - enddo - nza = rowstr(nrows+1) - 1 - - -CC write (*, 11000) nza - return -11000 format ( //,'final nonzero count in sparse ', - 1 /,'number of nonzeros = ', i16 ) - end -c-------end of sparse----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine sprnvc( n, nz, nn1, v, iv ) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - double precision v(*) - integer n, nz, nn1, iv(*) - common /urando/ amult, tran - double precision amult, tran - - -c--------------------------------------------------------------------- -c generate a sparse n-vector (v, iv) -c having nzv nonzeros -c -c mark(i) is set to 1 if position i is nonzero. -c mark is all zero on entry and is reset to all zero before exit -c this corrects a performance bug found by John G. Lewis, caused by -c reinitialization of mark on every one of the n calls to sprnvc -c--------------------------------------------------------------------- - - integer nzv, ii, i, icnvrt - - external randlc, icnvrt - double precision randlc, vecelt, vecloc - - - nzv = 0 - -100 continue - if (nzv .ge. nz) goto 110 - - vecelt = randlc( tran, amult ) - -c--------------------------------------------------------------------- -c generate an integer between 1 and n in a portable manner -c--------------------------------------------------------------------- - vecloc = randlc(tran, amult) - i = icnvrt(vecloc, nn1) + 1 - if (i .gt. n) goto 100 - -c--------------------------------------------------------------------- -c was this integer generated already? -c--------------------------------------------------------------------- - do ii = 1, nzv - if (iv(ii) .eq. i) goto 100 - enddo - nzv = nzv + 1 - v(nzv) = vecelt - iv(nzv) = i - goto 100 -110 continue - - return - end -c-------end of sprnvc----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - function icnvrt(x, ipwr2) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - double precision x - integer ipwr2, icnvrt - -c--------------------------------------------------------------------- -c scale a double precision number x in (0,1) by a power of 2 and chop it -c--------------------------------------------------------------------- - icnvrt = int(ipwr2 * x) - - return - end -c-------end of icnvrt----------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine vecset(n, v, iv, nzv, i, val) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n, iv(*), nzv, i, k - double precision v(*), val - -c--------------------------------------------------------------------- -c set ith element of sparse vector (v, iv) with -c nzv nonzeros to val -c--------------------------------------------------------------------- - - logical set - - set = .false. - do k = 1, nzv - if (iv(k) .eq. i) then - v(k) = val - set = .true. - endif - enddo - if (.not. set) then - nzv = nzv + 1 - v(nzv) = val - iv(nzv) = i - endif - return - end -c-------end of vecset----------------------------- - - include 'print_results.f' - include 'timers.f' - include 'randdp.f' - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/globals.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/globals.h deleted file mode 100644 index 469ed32..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/globals.h +++ /dev/null @@ -1,105 +0,0 @@ - include 'npbparams.h' - -c--------------------------------------------------------------------- -c Note: please observe that in the routine conj_grad three -c implementations of the sparse matrix-vector multiply have -c been supplied. The default matrix-vector multiply is not -c loop unrolled. The alternate implementations are unrolled -c to a depth of 2 and unrolled to a depth of 8. Please -c experiment with these to find the fastest for your particular -c architecture. If reporting timing results, any of these three may -c be used without penalty. -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- -c Class specific parameters: -c It appears here for reference only. -c These are their values, however, this info is imported in the npbparams.h -c include file, which is written by the sys/setparams.c program. -c--------------------------------------------------------------------- - -C---------- -C Class S: -C---------- -CC parameter( na=1400, -CC > nonzer=7, -CC > shift=10., -CC > niter=15, -CC > rcond=1.0d-1 ) -C---------- -C Class W: -C---------- -CC parameter( na=7000, -CC > nonzer=8, -CC > shift=12., -CC > niter=15, -CC > rcond=1.0d-1 ) -C---------- -C Class A: -C---------- -CC parameter( na=14000, -CC > nonzer=11, -CC > shift=20., -CC > niter=15, -CC > rcond=1.0d-1 ) -C---------- -C Class B: -C---------- -CC parameter( na=75000, -CC > nonzer=13, -CC > shift=60., -CC > niter=75, -CC > rcond=1.0d-1 ) -C---------- -C Class C: -C---------- -CC parameter( na=150000, -CC > nonzer=15, -CC > shift=110., -CC > niter=75, -CC > rcond=1.0d-1 ) -C---------- -C Class D: -C---------- -CC parameter( na=1500000, -CC > nonzer=21, -CC > shift=500., -CC > niter=100, -CC > rcond=1.0d-1 ) -C---------- -C Class E: -C---------- -CC parameter( na=9000000, -CC > nonzer=26, -CC > shift=1500., -CC > niter=100, -CC > rcond=1.0d-1 ) - - - integer nz, naz - parameter( nz = na*(nonzer+1)*(nonzer+1) ) - parameter( naz = na*(nonzer+1) ) - - - common / partit_size / naa, nzz, - > firstrow, - > lastrow, - > firstcol, - > lastcol - integer naa, nzz, - > firstrow, - > lastrow, - > firstcol, - > lastcol - - common /urando/ amult, tran - double precision amult, tran - - external timer_read - double precision timer_read - - integer T_init, T_bench, T_conj_grad, T_last - parameter (T_init=1, T_bench=2, T_conj_grad=3, T_last=3) - logical timeron - common /timers/ timeron diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/make.bat deleted file mode 100644 index dcc4b71..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams CG %CLASS% -CALL %F77% %OPT% cg 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist cg.exe ( - copy cg.exe %BIN%\cg.%CLASS%.x.exe - del cg.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/print_results.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/print_results.f deleted file mode 100644 index d2fe91e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/print_results.f +++ /dev/null @@ -1,111 +0,0 @@ - - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion, - > compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character name*(*) - character class*1 - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*15 - logical verified - character*(*) npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7 - - write (*, 2) name - 2 format(//, ' ', A, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f15.0)' ) 2.d0**n1 - j = 15 - if (size(j:j) .eq. '.') then - size(j:j) = ' ' - j = j - 1 - endif - write (*,42) size(1:j) - 42 format(' Size = ',9x, a15) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',9x, i4,'x',i4,'x',i4) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - - write(*,14) compiletime - 14 format(' Compile date = ', 12x, a12) - - - write (*,121) cs1 - 121 format(/, ' Compile options:', /, - > ' F77 = ', A) - - write (*,122) cs2 - 122 format(' FLINK = ', A) - - write (*,123) cs3 - 123 format(' F_LIB = ', A) - - write (*,124) cs4 - 124 format(' F_INC = ', A) - - write (*,125) cs5 - 125 format(' FFLAGS = ', A) - - write (*,126) cs6 - 126 format(' FLINKFLAGS = ', A) - - write(*, 127) cs7 - 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send all errors/feedbacks to:'// - > ' NPB Development Team'/ - > ' npb@nas.nasa.gov'//) -c 130 format(//' Please send the results of this run to:'// -c > ' NPB Development Team '/ -c > ' Internet: npb@nas.nasa.gov'/ -c > ' '/ -c > ' If email is not available, send this to:'// -c > ' MS T27A-1'/ -c > ' NASA Ames Research Center'/ -c > ' Moffett Field, CA 94035-1000'// -c > ' Fax: 650-604-3957'//) - - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/randdp.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/randdp.f deleted file mode 100644 index 64860d9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/randdp.f +++ /dev/null @@ -1,137 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function randlc (x, a) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine returns a uniform pseudorandom double precision number in the -c range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The returned value RANDLC is normalized to be -c between 0 and 1, i.e. RANDLC = 2^(-46) * x_1. X is updated to contain -c the new seed x_1, so that subsequent calls to RANDLC using the same -c arguments will generate a continuous sequence. -c -c This routine should produce the same results on any computer with at least -c 48 mantissa bits in double precision floating point data. On 64 bit -c systems, double precision should be disabled. -c -c David H. Bailey October 26, 1990 -c -c--------------------------------------------------------------------- - - implicit none - - double precision r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - randlc = r46 * x - - return - end - - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine vranlc (n, x, a, y) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine generates N uniform pseudorandom double precision numbers in -c the range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The N results are placed in Y and are normalized -c to be between 0 and 1. X is updated to contain the new seed, so that -c subsequent calls to VRANLC using the same arguments will generate a -c continuous sequence. If N is zero, only initialization is performed, and -c the variables X, A and Y are ignored. -c -c This routine is the standard version designed for scalar or RISC systems. -c However, it should produce the same results on any single processor -c computer with at least 48 mantissa bits in double precision floating point -c data. On 64 bit systems, double precision should be disabled. -c -c--------------------------------------------------------------------- - - implicit none - - integer i,n - double precision y,r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - dimension y(*) - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Generate N results. This loop is not vectorizable. -c--------------------------------------------------------------------- - do i = 1, n - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - y(i) = r46 * x - enddo - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/timers.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/timers.f deleted file mode 100644 index 83c1a7f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/CG/timers.f +++ /dev/null @@ -1,108 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - double precision dvtime - -c This function must measure wall clock time, not CPU time. -c Since there is no portable timer in Fortran (77) -c we call a routine compiled in C (though the C source may have -c to be tweaked). -! call wtime(t) -c The following is not ok for "official" results because it reports -c CPU time not wall clock time. It may be useful for developing/testing -c on timeshared Crays, though. -c call second(t) - - elapsed_time = dvtime() - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/Makefile deleted file mode 100644 index a52a4a4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=ep -BENCHMARKU=EP - -include ../config/make.def -include ../sys/make.common - -SOURCES = ep.fdv - -OBJS = ${SOURCES:.fdv=.o} - -${PROGRAM}: config $(OBJS) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} - -%.o: %.fdv npbparams.h - ${F77} f ${FFLAGS} -c -o $@ $< - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c *.f diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/ep.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/ep.fdv deleted file mode 100644 index a10a417..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/ep.fdv +++ /dev/null @@ -1,565 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 2.3 ! -! ! -! D V M V E R S I O N S ! -! ! -! E P ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is DVM version of the NPB EP code. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 2.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 2.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/NAS/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! Send bug reports to npb-bugs@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (415) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - - -c--------------------------------------------------------------------- -c -c Author: P. O. Frederickson -c D. H. Bailey -c A. C. Woo -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- - program epdv -c--------------------------------------------------------------------- -C -c This is the serial version of the APP Benchmark 1, -c the "embarassingly parallel" benchmark. -c -c -c M is the Log_2 of the number of complex pairs of uniform (0, 1) random -c numbers. MK is the Log_2 of the size of each batch of uniform random -c numbers. MK can be set for convenience on a given system, since it does -c not affect the results. - - implicit none - - include 'npbparams.h' - -cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc - - double precision y,r23,r46,t23,t46,a1,a2,z,ah - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc - - double precision Mops, epsilon, a, s, t1, t2, t3, t4, x, x1, - > x2, q, sx, sy, tm, an, tt, gc, dum(3), - > timer_read - integer mk, mm, nn, nk, nq, np, ierr, node, no_nodes, - > i, ik, kk, l, k, nit, ierrcode, no_large_nodes, - > np_add, k_offset, j - logical verified, timers_enabled - parameter (timers_enabled = .false.) - external timer_read - double precision qq, t1h, t2h, y1, y2, xh - character*13 size - - parameter (mk = 16, mm = m - mk, nn = 2 ** mm, - > nk = 2 ** mk, nq = 10, epsilon=1.d-8, - > a = 1220703125.d0, s = 271828183.d0) - -c common/storage/ x(2*nk), q(0:nq-1), qq(10000) - common/storage/ x(2*nk), q(0:9), qq(10000) - -!DVM$ TEMPLATE TEM(nn) -!DVM$ DISTRIBUTE TEM (BLOCK) - data dum /1.d0, 1.d0, 1.d0/ - - -c Because the size of the problem is too large to store in a 32-bit -c integer for some classes, we put it into a string (for printing). -c Have to strip off the decimal point put in there by the floating -c point print statement (internal file) - - write(*, 1000) - write(size, '(f12.0)' ) 2.d0**(m+1) - do j =13,1,-1 - if (size(j:j) .eq. '.') size(j:j) = ' ' - end do - write (*,1001) size - - 1000 format(//,' NAS Parallel Benchmarks 3.3 - DVMH version', - > ' - EP Benchmark', /) - 1001 format(' Number of random numbers generated: ', a14) - 1003 format(' Number of active processes: ', i12, /) - - verified = .false. - -c Compute the number of "batches" of random number pairs generated -c per processor. Adjust if the number of processors does not evenly -c divide the total number - - np = nn - - -c Call the random number generator functions and initialize -c the x-array to reduce the effects of paging on the timings. -c Also, call all mathematical functions that are used. Make -c sure these initializations cannot be eliminated as dead code. - - call vranlc(0, dum(1), dum(2), dum(3)) - call randlc(dum(2), dum(3), dum(1)) - do 5 i = 1, 2*nk - x(i) = -1.d99 - 5 continue - Mops = log(sqrt(abs(max(1.d0,1.d0)))) - - - call timer_clear(1) - call timer_clear(2) - call timer_clear(3) - call timer_start(1) -!DVM$ INTERVAL 1 - call vranlc(0, t1, a, x) - -c Compute AN = A ^ (2 * NK) (mod 2^46). - - t1 = a - - do 100 i = 1, mk + 1 - call randlc(t1, t1, t2) - 100 continue - - an = t1 - tt = s - gc = 0.d0 - sx = 0.d0 - sy = 0.d0 - - do 110 i = 0, nq - 1 - q(i) = 0.d0 - 110 continue - -c Each instance of this loop may be performed independently. We compute -c the k offsets separately to take into account the fact that some nodes -c have more numbers to generate than others - - k_offset = -1 - -!DVM$ region -!DVM$ PARALLEL (k) ON TEM(k),REDUCTION(SUM(q),SUM(sx),SUM(sy)) -!DVM$*,private(xh,i,kk,ik,t1,t2,y1,y2,a1,a2,x1,x2 -!DVM$*,l,t3,t4),cuda_block(256) - do k = 1, np - kk = k_offset + k - t1 = s - t2 = an - -c Find starting seed t1 for this kk. - do i = 1, 100 - ik = kk / 2 - if (2 * ik .ne. kk) then - call randlc(t1, t2, t3) - endif - if (ik .eq. 0) exit - call randlc(t2, t2, t3) - kk = ik - enddo - - - xh = t1 - a1 = int (r23 * a) - a2 = a - t23 * a1 - - do i = 1, nk - call randNext (xh, y1, a1, a2) - call randNext (xh, y2, a1, a2) - - x1 = 2.d0 * y1 - 1.d0 - x2 = 2.d0 * y2 - 1.d0 - t1 = x1 * x1 + x2 * x2 - if (t1 .le. 1.d0) then - t2 = sqrt(-2.d0 * log(t1) / t1) - t3 = (x1 * t2) - t4 = (x2 * t2) - l = max(abs(t3), abs(t4)) - q(l) = q(l) + 1.d0 - sx = sx + t3 - sy = sy + t4 - endif - enddo - enddo -!DVM$ end region - - do 160 i = 0, nq - 1 - gc = gc + q(i) - 160 continue -!DVM$ END INTERVAL - call timer_stop(1) - tm = timer_read(1) - - nit=0 - if (m.eq.24) then - if((abs((sx- (-3.247834652034740D3))/sx).le.epsilon).and. - > (abs((sy- (-6.958407078382297D3))/sy).le.epsilon)) - > verified = .TRUE. - elseif (m.eq.25) then - if ((abs((sx- (-2.863319731645753D+03))/sx).le.epsilon).and. - > (abs((sy- (-6.320053679109499D+03))/sy).le.epsilon)) - > verified = .TRUE. - elseif (m.eq.28) then - if ((abs((sx- (-4.295875165629892D3))/sx).le.epsilon).and. - > (abs((sy- (-1.580732573678431D4))/sy).le.epsilon)) - > verified = .TRUE. - elseif (m.eq.30) then - if ((abs((sx- (4.033815542441498D4))/sx).le.epsilon).and. - > (abs((sy- (-2.660669192809235D4))/sy).le.epsilon)) - > verified = .true. - elseif (m.eq.32) then - if ((abs((sx- (4.764367927995374D+4))/sx).le.epsilon).and. - > (abs((sy- (-8.084072988043731D+4))/sy).le.epsilon)) - > verified = .true. - elseif (m.eq.36) then - if ((abs((sx- (1.982481200946593D+5))/sx).le.epsilon).and. - > (abs((sy- (-1.020596636361769D+5))/sy).le.epsilon)) - > verified = .true. - elseif (m.eq.40) then - if ((abs((sx- (-5.319717441530D+05))/sx).le.epsilon).and. - > (abs((sy- (-3.688834557731D+05))/sy).le.epsilon)) - > verified = .true. - else - verified = .false. - endif - Mops = 2.d0**(m+1)/tm/1000000.d0 - - write (6,11) tm, m, gc, sx, sy, (i, q(i), i = 0, nq - 1) - 11 format (' EP Benchmark Results:'//' CPU Time =',f10.4/' N = 2^', - > i5/' No. Gaussian Pairs =',f15.0/' Sums = ',1p,2d25.15/ - > ' Counts:'/(i3,0p,f15.0)) - - call print_results('EP', class, m+1, 0, 0, nit, - > tm, Mops, - > 'Random numbers generated', - > verified, npbversion) - - - if (timers_enabled) then - print *, 'Total time: ', timer_read(1) - print *, 'Gaussian pairs: ', timer_read(2) - print *, 'Random numbers: ', timer_read(3) - endif - - - end - - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion) - - implicit none - character*2 name - character*1 class - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*13 - logical verified - character*(*) npbversion - - write (*, 2) name - 2 format(//, ' ', A2, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f12.0)' ) 2.d0**n1 - do j =13,1,-1 - if (size(j:j) .eq. '.') size(j:j) = ' ' - end do - write (*,42) size - 42 format(' Size = ',12x, a14) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',12x, i3,'x',i3,'x',i3) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - - write (*,130) - 130 format(//' Please send the results of this run to:'// - > ' NPB Development Team '/ - > ' Internet: npb@nas.nasa.gov'/ - > ' '/ - > ' If email is not available, send this to:'// - > ' MS T27A-1'/ - > ' NASA Ames Research Center'/ - > ' Moffett Field, CA 94035-1000'// - > ' Fax: 415-604-3957'//) - - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine randlc (x, a, ret) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none - intent(in)::a - intent(inout)::x - intent(out)::ret - double precision r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - > ,ret - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - ret = r46 * x - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine randNext (x, ret, a1, a2) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none - intent(inout)::x - intent(in)::a1, a2 - intent(out)::ret - double precision r23,r46,t23,t46,x,t1,t2,t3,t4,a1,a2,x1,x2,z - > ,ret - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - ret = r46 * x - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine vranlc (n, x, a, y) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - integer i,n - double precision y,r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - dimension y(*) - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Generate N results. This loop is not vectorizable. -c--------------------------------------------------------------------- - do i = 1, n - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - y(i) = r46 * x - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed -!DVM$ BARRIER - start(n) = elapsed_time() - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none - double precision t - double precision dvtime - data t/0.d0/ - elapsed_time = dvtime() - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/make.bat deleted file mode 100644 index 768cdf6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/EP/make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams EP %CLASS% -CALL %F77% %OPT% ep 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist ep.exe ( - copy ep.exe %BIN%\ep.%CLASS%.x.exe - del ep.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/Makefile deleted file mode 100644 index 1afbae6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=ft -BENCHMARKU=FT - -include ../config/make.def -include ../sys/make.common - -SOURCES = ft.fdv - -OBJS = ${SOURCES:.fdv=.o} - -${PROGRAM}: config $(OBJS) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} - -%.o: %.fdv npbparams.h global.h - ${F77} f ${FFLAGS} -f90 -c -o $@ $< - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c *.f diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/dtime.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/dtime.h deleted file mode 100644 index 74fee83..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/dtime.h +++ /dev/null @@ -1,3 +0,0 @@ - integer dvm_debug - parameter (dvm_debug=0) - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/ft.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/ft.fdv deleted file mode 100644 index 49fd41a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/ft.fdv +++ /dev/null @@ -1,1838 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! O p e n M P ->DVMH V E R S I O N ! -! ! -! F T ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is an OpenMP version of the NPB FT code. ! -! It is described in NAS Technical Report 99-011. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - -!--------------------------------------------------------------------- -! -! Authors: D. Bailey -! W. Saphir -! H. Jin -! -!--------------------------------------------------------------------- -! OpenMP ->DVMH version Mihail Kuznetsov -!--------------------------------------------------------------------- - - - - -program ft - implicit none - include 'global.h' - - integer i, iter, niter - - double precision total_time, mflops - logical verified - character class - - - double complex sums(niter_default) - - call info(niter) - - do i = 1, t_max - call timer_clear(i) - end do - - if(more_memory) then - call init_ui - else - call init_ui_1 - endif - - - if (timers_enabled) call timer_start(T_total) - - - if (timers_enabled) call timer_start(T_setup) - - - call setup - - if(more_memory) call init_twiddle - call init_scratch - - - - if (timers_enabled) call timer_stop(T_setup) - - -! if (timers_enabled) call timer_start(T_fft) - call fft_p -! if (timers_enabled) call timer_stop(T_fft) - - - -!-----------------------------------------------------------------------> - do iter = 1, niter - - call timer_start(T_fft) - if (more_memory) then - call evolve_and_fft_n - else - call evolve_and_fft_n_1 - endif - call timer_stop(T_fft) - - if (timers_enabled) call timer_start(T_checksum) - call checksum(iter,sums) - if (timers_enabled) call timer_stop(T_checksum) - - end do -!-----------------------------------------------------------------------------------> - - - - - call verify(niter, verified, class,sums) - - call timer_stop(t_total) - total_time = timer_read(T_fft) - - if( total_time .ne. 0. ) then - mflops = 1.0d-6*float(ntotal)* (14.8157+7.19641*log(float(ntotal))+(5.23518+7.21113*log(float(ntotal)))*niter)/total_time - else - mflops = 0.0 - endif - - call print_results('FT', class, nx, ny, nz, niter,total_time, mflops, ' floating point', verified, npbversion, compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - if (timers_enabled) call print_timers() - -end - -!--------------------------------------------------------------------------------------------------> -subroutine timer_clear(n) - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - elapsed(n) = 0.0 - return -end - - -subroutine timer_start(n) - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - - return -end - -subroutine timer_stop(n) - - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - - return -end - -double precision function timer_read(n) - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - - timer_read = elapsed(n) - return -end - - -double precision function elapsed_time() - implicit none - double precision t - double precision dvtime - - include 'dtime.h' - data t/0.d0/ - if(dvm_debug.ne.0) then - t=t+1.D0 - elapsed_time = t - else - elapsed_time = dvtime() - end if - return -end - - -!-------------------------------------------------------------------------------------> - - - - - -subroutine init_twiddle - implicit none - include 'global.h' - - integer i, j, k, kk, kk2, jj, kj2, ii - double precision ap - - ap = - 4.d0 * alpha * pi *pi - - - -!dvm$ region -!dvm$ parallel (k,j,i) on twiddle(i,j,k), private(kk, kk2, jj, kj2, ii) - do k = 1, nz - do j = 1, ny - do i = 1, nx - - kk = mod(k-1+nz/2, nz) - nz/2 - kk2 = kk*kk - - jj = mod(j-1+ny/2, ny) - ny/2 - kj2 = jj*jj+kk2 - - ii = mod(i-1+nx/2, nx) - nx/2 - twiddle(i,j,k) = dexp(ap*dble(ii*ii+kj2)) - end do - end do - enddo - -!dvm$ end region -! dvm$ get_actual(twiddle) - - - -end - - -subroutine init_scratch - - implicit none - include 'global.h' - - integer i, j,m,ku,ln - double precision t, ti - - m = ilog2(nx) - - - u(1) = m - - - ku = 2 - ln = 1 - - - do j = 1, m - t = pi / ln - -!dvm$ region -!dvm$ parallel (i) on u(i+ku), private (ti), cuda_block(256) - - do i = 0, ln - 1 - ti = i * t - u(i+ku) = dcmplx (cos (ti), sin(ti)) - enddo - -!dvm$ end region -! dvm$ get_actual(u) - ku = ku + ln - ln = 2 * ln - enddo - - - -end - - -!-------------------------------------------------------------------------------------> - -subroutine init_ui - - implicit none - - include 'global.h' - - integer i, j, k - - - do k = 1, nz - do j = 1, ny - do i = 1, nxp - u0(i,j,k) = 0.d0 - u1(i,j,k) = 0.d0 - twiddle(i,j,k) = 0.d0 - end do - end do - end do - - - return -end - -!-------------------------------------------------------------------------------------> - -subroutine init_ui_1 - - implicit none - - include 'global.h' - - integer i, j, k - - - do k = 1, nz - do j = 1, ny - do i = 1, nxp - u0(i,j,k) = 0.d0 - u1(i,j,k) = 0.d0 - end do - end do - end do - - - return -end - - - -subroutine setup - implicit none - include 'global.h' - - - integer j, k - double precision start, an, dummy - - double precision starts_k - - start = seed - - call ipow46(a, 0, an) - dummy = randlc(start, an) - call ipow46(a, 2*nx*ny, an) - - - do k = 1, nz - - starts_k = start - if (k .ge.2 ) dummy = randlc(start, an) - starts_k = start - - do j = 1, ny - call vranlc(2*nx, starts_k, a, u1(1, j, k)) - end do - - - end do - - - return -end -!-----------------------------------------------------------> - - - - - - - -subroutine ipow46(a, exponent, result) -!--------------------------------------------------------------------- -! compute a^exponent mod 2^46 -!--------------------------------------------------------------------- - - implicit none - double precision a, result, dummy, q, r - integer exponent, n, n2 - external randlc - double precision randlc -!--------------------------------------------------------------------- -! Use -! a^n = a^(n/2)*a^(n/2) if n even else -! a^n = a*a^(n-1) if n odd -!--------------------------------------------------------------------- - result = 1 - if (exponent .eq. 0) return - q = a - r = 1 - n = exponent - - do while (n .gt. 1) - n2 = n/2 - if (n2 * 2 .eq. n) then - dummy = randlc(q, q) - n = n2 - else - dummy = randlc(r, q) - n = n-1 - endif - end do - dummy = randlc(r, q) - result = r - return -end - - - - -subroutine info(niter) - implicit none - include 'global.h' - - integer niter - - write(*, 1000) - niter = niter_default - write(*, 1001) nx, ny, nz - write(*, 1002) niter - write(*, *) - -1000 format(//,' NAS Parallel Benchmarks 3.3- DVMH version - FT Benchmark', /) -1001 format(' Size : ', i4, 'x', i4, 'x', i4) -1002 format(' Iterations :', i7) - - - return -end - -subroutine print_timers() - - implicit none - include 'global.h' - - integer i - double precision t, t_m - character*25 tstrings(T_max) - data tstrings / 'total ', 'setup' , 'evolve+fft', 'checksum ', 'all' / - - t_m = timer_read(T_total) - if (t_m .le. 0.0d0) t_m = 1.0d0 - do i = 1, T_max - t = timer_read(i) - write(*, 100) i, tstrings(i), t, t*100.0/t_m - end do -100 format(' timer ', i2, '(', A16, ') :', F9.4, ' (',F6.2,'%)') - return -end - - -! fast fourier transform (positive direction) -subroutine fft_p - implicit none - include 'global.h' - - -!-------cffts1 variables------------------------------------------------------------------ - double complex uu1,x11,x21 - integer logd1 - integer i, j, k, jj, ic,jc ,kc,l,n1,n2,n3,li,lj,lk,ku,i11,i12,i21,i22 -!-------cffts2 variables------------------------------------------------------------------ - integer ii - integer logd2 -!------cffts3 variables------------------------------------------------------------------- - integer logd3 -!-------------------------------------------------------------------------- -!if0 - logd1 = ilog2(nx) - logd2 = ilog2(ny) - logd3 = ilog2(nz) - - n1 = nx / 2 - n2 = ny / 2 - n3 = nz / 2 - - - - -!dvm$ region - -!dvm$ parallel (k,j) on u1(*,j,k), private (y1,y2,i,jj,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(32,1) - - -! fftx - do k = 1, nz - do j = 1, ny -!--------------------------------------------------------------------------------> - - do i = 1, nx - y1(i) = u1(i,j,k) - enddo - - - do l = 1, logd1, 2 - - lk = 2 ** (l - 1) - li = 2 ** (logd1 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - do kc = 0, lk - 1 - - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - - enddo - - enddo - - if (l .eq. logd1) then - - do jj = 1, nx - y1(jj) = y2(jj) - enddo - - else - - lk = 2 ** (l) - li = 2 ** (logd1 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - do kc = 0, lk - 1 - - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - enddo - - enddo - - endif - - enddo - - - do i = 1, nx - u1(i,j,k) = y1(i) - enddo -!---------------------------------------------------------------------------> - - - enddo - enddo - - -! ffty - -!dvm$ parallel (k,ii) on u1(ii,*,k), private (y1,y2,i,j,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(32,1) - do k = 1, nz - do ii = 1, nx -!-------------------------------------------------------------------------------> - - do j = 1, ny - y1(j) = u1(ii,j,k) - enddo - - - do l = 1, logd2, 2 - lk = 2 ** (l - 1) - li = 2 ** (logd2 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - - enddo - enddo - - if (l .eq. logd2) then - - do j = 1, ny - y1(j) = y2(j) - enddo - - else - - lk = 2 ** (l) - li = 2 ** (logd2 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - do kc = 0, lk - 1 - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - enddo - - - enddo - - - endif - - enddo - - - do j = 1, ny - u1(ii,j,k) = y1(j) - enddo - -!-------------------------------------------------------------------------------> - enddo - enddo - - - -! fftz - -!dvm$ parallel (j,ii) on u1(ii,j,*), private (y1,y2,i,k,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(32,1) - - do j = 1, ny - do ii = 1, nx -!----------------------------------------------------------------------------------> - - - do k = 1, nz - y1(k) = u1(ii,j,k) - enddo - - - - do l = 1, logd3, 2 - - lk = 2 ** (l - 1) - li = 2 ** (logd3 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - - enddo - enddo - - - if (l .eq. logd3) then - - do k = 1, nz - y1(k) = y2(k) - enddo - else - - - lk = 2 ** (l) - li = 2 ** (logd3 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = u(ku+i) - - - do kc = 0, lk - 1 - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - - enddo - enddo - endif - - enddo - - - do k = 1, nz - u0(ii,j,k) = y1(k) - enddo - -!----------------------------------------------------------------------------------> - enddo - enddo - -!dvm$ end region -! dvm$ get_actual(u0) - - - return -end - - -!-----------------------------------------------------------------> - - - -! evolde and fast fourier transform (negative direction) -subroutine evolve_and_fft_n - implicit none - include 'global.h' - -!------cfft s1 variables-------------------------------------------------------------- - double complex uu1,x11,x21 - integer logd1 - integer i, j, k, jj, ic,jc ,kc,l,n1,n2,n3,li,lj,lk,ku,i11,i12,i21,i22 - integer CB_x, CB_y -!------------------------------------------------------------------------------------- - -!------cfft2 variables------------------------------------------------------------------------------ - integer ii - integer logd2 -!-------------cfft3 variables----------------- - integer logd3 -!-cfft3--------------------------------- - n1 = nz / 2 - n2 = ny / 2 - n3 = nx / 2 - - logd1 = ilog2(nx) - logd2 = ilog2(ny) - logd3 = ilog2(nz) - CB_x = 256 - CB_y = 1 -!dvm$ region - - !evolve -!dvm$ parallel (k,j,i) on u0(i,j,k),cuda_block(256) - do k = 1, nz - do j = 1, ny - do i = 1, nx - u0(i,j,k) = u0(i,j,k) * twiddle(i,j,k) - u1(i,j,k) = u0(i,j,k) - end do - end do - end do - -! fftz - - -!dvm$ parallel (j,ii) on u1(ii,j,*), private (y1,y2,i,k,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - do j = 1, ny - do ii = 1, nx - -!-------------------------------------------------------------------> - - do k = 1, nz - y1(k) = u1(ii,j,k) - enddo - - - do l = 1, logd3, 2 - - - lk = 2 ** (l - 1) - li = 2 ** (logd3 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - enddo - - - if (l .eq. logd3) then - do k = 1, nz - y1(k) = y2(k) - enddo - else - - lk = 2 ** (l) - li = 2 ** (logd3 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - do k = 0, lk - 1 - x11 = y2(i11+k) - x21 = y2(i12+k) - - y1(i21+k) = x11 + x21 - y1(i22+k) = uu1 * (x11 - x21) - - enddo - enddo - endif - - enddo - - do k = 1, nz - u1(ii,j,k) = y1(k) - enddo - -!-------------------------------------------------------------------> - - enddo - enddo - -! ffty - -!dvm$ parallel (k,ii) on u1(ii,*,k), private (y1,y2,i,j,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - do k = 1, nz - do ii = 1, nx -!-------------------------------------------------------------------------> - - - do j = 1, ny - y1(j) = u1(ii,j,k) - enddo - - - do l = 1, logd2, 2 - - lk = 2 ** (l - 1) - li = 2 ** (logd2 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - enddo - - - if (l .eq. logd2) then - - - do j = 1, ny - y1(j) = y2(j) - enddo - - else - - lk = 2 ** (l) - li = 2 ** (logd2 - l-1) - lj = 2 * lk - ku = li + 1 - - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - enddo - - - enddo - - - endif - - enddo - - - do j = 1, ny - u1(ii,j,k) = y1(j) - enddo - -!-------------------------------------------------------------------> - enddo - enddo - - - -! fftx - - - -!dvm$ parallel (k,j) on u1(*,j,k),private (y1,y2,i,jj,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - - do k = 1, nz - do j = 1, ny -!-----------------------------------------------------> - - - do i = 1, nx - y1(i) = u1(i,j,k) - enddo - - - do l = 1, logd1, 2 - - - lk = 2 ** (l - 1) - li = 2 ** (logd1 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - - enddo - - if (l .eq. logd1) then - - - do jj = 1, nx - y1(jj) = y2(jj) - enddo - else - - lk = 2 ** (l) - li = 2 ** (logd1 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - do kc = 0, lk - 1 - - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - - enddo - enddo - - endif - - enddo - - - do i = 1, nx - u1(i,j,k) = y1(i) - enddo - -!--------------------------------------------------------------> - enddo - enddo - -!dvm$ end region -! dvm$ get_actual(u1) - - return -end - - -! evolde and fast fourier transform (negative direction) -subroutine evolve_and_fft_n_1 - implicit none - include 'global.h' - -!------cfft s1 variables-------------------------------------------------------------- - double complex uu1,x11,x21 - double precision ap - integer logd1 - integer i, j, k, jj, ic,jc ,kc,l,n1,n2,n3,li,lj,lk,ku,i11,i12,i21,i22, kk, kk2, kj2 - integer CB_x, CB_y -!------------------------------------------------------------------------------------- - -!------cfft2 variables------------------------------------------------------------------------------ - integer ii - integer logd2 -!-------------cfft3 variables----------------- - integer logd3 -!-cfft3--------------------------------- - n1 = nz / 2 - n2 = ny / 2 - n3 = nx / 2 - - logd1 = ilog2(nx) - logd2 = ilog2(ny) - logd3 = ilog2(nz) - CB_x = 256 - CB_y = 1 - ap = - 4.d0 * alpha * pi *pi -!dvm$ region - - !evolve -!dvm$ parallel (k,j,i) on u0(i,j,k),private(kk, jj, ii, kk2, kj2), cuda_block(256) - do k = 1, nz - do j = 1, ny - do i = 1, nx - - kk = mod(k-1+nz/2, nz) - nz/2 - kk2 = kk*kk - - jj = mod(j-1+ny/2, ny) - ny/2 - kj2 = jj*jj+kk2 - - ii = mod(i-1+nx/2, nx) - nx/2 - - u0(i,j,k) = u0(i,j,k) * dexp(ap*dble(ii*ii+kj2)) - u1(i,j,k) = u0(i,j,k) - end do - end do - end do - -! fftz - - -!dvm$ parallel (j,ii) on u1(ii,j,*), private (y1,y2,i,k,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - do j = 1, ny - do ii = 1, nx - -!-------------------------------------------------------------------> - - do k = 1, nz - y1(k) = u1(ii,j,k) - enddo - - - do l = 1, logd3, 2 - - - lk = 2 ** (l - 1) - li = 2 ** (logd3 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - enddo - - - if (l .eq. logd3) then - - - do k = 1, nz - y1(k) = y2(k) - enddo - else - - lk = 2 ** (l) - li = 2 ** (logd3 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n1 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - do k = 0, lk - 1 - x11 = y2(i11+k) - x21 = y2(i12+k) - - y1(i21+k) = x11 + x21 - y1(i22+k) = uu1 * (x11 - x21) - - enddo - enddo - endif - - enddo - - do k = 1, nz - u1(ii,j,k) = y1(k) - enddo - -!-------------------------------------------------------------------> - - enddo - enddo - -! ffty - -!dvm$ parallel (k,ii) on u1(ii,*,k), private (y1,y2,i,j,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - do k = 1, nz - do ii = 1, nx -!-------------------------------------------------------------------------> - - - do j = 1, ny - y1(j) = u1(ii,j,k) - enddo - - - do l = 1, logd2, 2 - - lk = 2 ** (l - 1) - li = 2 ** (logd2 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - enddo - - - if (l .eq. logd2) then - - - do j = 1, ny - y1(j) = y2(j) - enddo - - else - - lk = 2 ** (l) - li = 2 ** (logd2 - l-1) - lj = 2 * lk - ku = li + 1 - - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n2 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - enddo - - - enddo - - - endif - - enddo - - - do j = 1, ny - u1(ii,j,k) = y1(j) - enddo - -!-------------------------------------------------------------------> - enddo - enddo - - - -! fftx - - - -!dvm$ parallel (k,j) on u1(*,j,k),private (y1,y2,i,jj,kc,l,li,lj,lk,ku,i11,i12,i21,i22,uu1,x11,x21), cuda_block(CB_x, CB_y) - - - do k = 1, nz - do j = 1, ny -!-----------------------------------------------------> - - - do i = 1, nx - y1(i) = u1(i,j,k) - enddo - - - do l = 1, logd1, 2 - - - lk = 2 ** (l - 1) - li = 2 ** (logd1 - l) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - uu1 = dconjg (u(ku+i)) - - - - do kc = 0, lk - 1 - x11 = y1(i11+kc) - x21 = y1(i12+kc) - - y2(i21+kc) = x11 + x21 - y2(i22+kc) = uu1 * (x11 - x21) - enddo - - enddo - - if (l .eq. logd1) then - - - do jj = 1, nx - y1(jj) = y2(jj) - enddo - else - - lk = 2 ** (l) - li = 2 ** (logd1 - l-1) - lj = 2 * lk - ku = li + 1 - - - do i = 0, li - 1 - i11 = i * lk + 1 - i12 = i11 + n3 - i21 = i * lj + 1 - i22 = i21 + lk - - uu1 = dconjg (u(ku+i)) - - - do kc = 0, lk - 1 - - x11 = y2(i11+kc) - x21 = y2(i12+kc) - - y1(i21+kc) = x11 + x21 - y1(i22+kc) = uu1 * (x11 - x21) - - enddo - enddo - - endif - - enddo - - - do i = 1, nx - u1(i,j,k) = y1(i) - enddo - -!--------------------------------------------------------------> - enddo - enddo - -!dvm$ end region -! dvm$ get_actual(u1) - - return -end - -integer function ilog2(n) - implicit none - integer n, nn, lg - if (n .eq. 1) then - ilog2=0 - return - endif - - lg = 1 - nn = 2 - do while (nn .lt. n) - nn = nn*2 - lg = lg+1 - end do - ilog2 = lg - return -end - -subroutine checksum(i,sums) - implicit none - include 'global.h' - - - - double complex sums(niter_default) - - integer i,j, q,r,s - double complex chk - chk = (0.0,0.0) - - - - -!dvm$ region - -!dvm$ parallel (s) ON u1(s,*,*), reduction (sum(chk)),private(q,j,r) - - - do s = 1, nz - - - do j=1,1024 - if ( s .eq. mod(5*j,nz)+1 ) then - q = mod(j, nx)+1 - r = mod(3*j,ny)+1 - - - chk=chk+u1(q,r,s) - endif - end do - enddo - - -!dvm$ end region - - - - chk = chk/dble(ntotal) - - write (*, 30) i, chk -30 format (' T =',I5,5X,'Checksum =',1P2D22.12) - sums(i) = chk - return -end - - -subroutine verify (nt, verified, class,sums) - implicit none - include 'global.h' - integer nt - character class - logical verified - integer i - double precision err, epsilon - - double complex sums(niter_default) -!--------------------------------------------------------------------- -! Reference checksums -!--------------------------------------------------------------------- - double complex csum_ref(25) - class = 'U' - epsilon = 1.0d-12 - verified = .FALSE. - - if (nx .eq. 64 .and. ny .eq. 64 .and. nz .eq. 64 .and. nt .eq. 6) then -!--------------------------------------------------------------------- -! Sample size reference checksums -!--------------------------------------------------------------------- - class = 'S' - csum_ref(1) = dcmplx(5.546087004964D+02, 4.845363331978D+02) - csum_ref(2) = dcmplx(5.546385409189D+02, 4.865304269511D+02) - csum_ref(3) = dcmplx(5.546148406171D+02, 4.883910722336D+02) - csum_ref(4) = dcmplx(5.545423607415D+02, 4.901273169046D+02) - csum_ref(5) = dcmplx(5.544255039624D+02, 4.917475857993D+02) - csum_ref(6) = dcmplx(5.542683411902D+02, 4.932597244941D+02) - else if (nx .eq. 128 .and. ny .eq. 128 .and. nz .eq. 32 .and. nt .eq. 6) then -!--------------------------------------------------------------------- -! Class W size reference checksums -!--------------------------------------------------------------------- - class = 'W' - csum_ref(1) = dcmplx(5.673612178944D+02, 5.293246849175D+02) - csum_ref(2) = dcmplx(5.631436885271D+02, 5.282149986629D+02) - csum_ref(3) = dcmplx(5.594024089970D+02, 5.270996558037D+02) - csum_ref(4) = dcmplx(5.560698047020D+02, 5.260027904925D+02) - csum_ref(5) = dcmplx(5.530898991250D+02, 5.249400845633D+02) - csum_ref(6) = dcmplx(5.504159734538D+02, 5.239212247086D+02) - else if (nx .eq. 256 .and. ny .eq. 256 .and. nz .eq. 128 .and. nt .eq. 6) then -!--------------------------------------------------------------------- -! Class A size reference checksums -!--------------------------------------------------------------------- - class = 'A' - csum_ref(1) = dcmplx(5.046735008193D+02, 5.114047905510D+02) - csum_ref(2) = dcmplx(5.059412319734D+02, 5.098809666433D+02) - csum_ref(3) = dcmplx(5.069376896287D+02, 5.098144042213D+02) - csum_ref(4) = dcmplx(5.077892868474D+02, 5.101336130759D+02) - csum_ref(5) = dcmplx(5.085233095391D+02, 5.104914655194D+02) - csum_ref(6) = dcmplx(5.091487099959D+02, 5.107917842803D+02) - - else if (nx .eq. 512 .and. ny .eq. 256 .and. nz .eq. 256 .and. nt .eq. 20) then -!--------------------------------------------------------------------- -! Class B size reference checksums -!--------------------------------------------------------------------- - class = 'B' - csum_ref(1) = dcmplx(5.177643571579D+02, 5.077803458597D+02) - csum_ref(2) = dcmplx(5.154521291263D+02, 5.088249431599D+02) - csum_ref(3) = dcmplx(5.146409228649D+02, 5.096208912659D+02) - csum_ref(4) = dcmplx(5.142378756213D+02, 5.101023387619D+02) - csum_ref(5) = dcmplx(5.139626667737D+02, 5.103976610617D+02) - csum_ref(6) = dcmplx(5.137423460082D+02, 5.105948019802D+02) - csum_ref(7) = dcmplx(5.135547056878D+02, 5.107404165783D+02) - csum_ref(8) = dcmplx(5.133910925466D+02, 5.108576573661D+02) - csum_ref(9) = dcmplx(5.132470705390D+02, 5.109577278523D+02) - csum_ref(10) = dcmplx(5.131197729984D+02, 5.110460304483D+02) - csum_ref(11) = dcmplx(5.130070319283D+02, 5.111252433800D+02) - csum_ref(12) = dcmplx(5.129070537032D+02, 5.111968077718D+02) - csum_ref(13) = dcmplx(5.128182883502D+02, 5.112616233064D+02) - csum_ref(14) = dcmplx(5.127393733383D+02, 5.113203605551D+02) - csum_ref(15) = dcmplx(5.126691062020D+02, 5.113735928093D+02) - csum_ref(16) = dcmplx(5.126064276004D+02, 5.114218460548D+02) - csum_ref(17) = dcmplx(5.125504076570D+02, 5.114656139760D+02) - csum_ref(18) = dcmplx(5.125002331720D+02, 5.115053595966D+02) - csum_ref(19) = dcmplx(5.124551951846D+02, 5.115415130407D+02) - csum_ref(20) = dcmplx(5.124146770029D+02, 5.115744692211D+02) - - else if (nx .eq. 512 .and. ny .eq. 512 .and. nz .eq. 512 .and. nt .eq. 20) then -!--------------------------------------------------------------------- -! Class C size reference checksums -!--------------------------------------------------------------------- - class = 'C' - csum_ref(1) = dcmplx(5.195078707457D+02, 5.149019699238D+02) - csum_ref(2) = dcmplx(5.155422171134D+02, 5.127578201997D+02) - csum_ref(3) = dcmplx(5.144678022222D+02, 5.122251847514D+02) - csum_ref(4) = dcmplx(5.140150594328D+02, 5.121090289018D+02) - csum_ref(5) = dcmplx(5.137550426810D+02, 5.121143685824D+02) - csum_ref(6) = dcmplx(5.135811056728D+02, 5.121496764568D+02) - csum_ref(7) = dcmplx(5.134569343165D+02, 5.121870921893D+02) - csum_ref(8) = dcmplx(5.133651975661D+02, 5.122193250322D+02) - csum_ref(9) = dcmplx(5.132955192805D+02, 5.122454735794D+02) - csum_ref(10) = dcmplx(5.132410471738D+02, 5.122663649603D+02) - csum_ref(11) = dcmplx(5.131971141679D+02, 5.122830879827D+02) - csum_ref(12) = dcmplx(5.131605205716D+02, 5.122965869718D+02) - csum_ref(13) = dcmplx(5.131290734194D+02, 5.123075927445D+02) - csum_ref(14) = dcmplx(5.131012720314D+02, 5.123166486553D+02) - csum_ref(15) = dcmplx(5.130760908195D+02, 5.123241541685D+02) - csum_ref(16) = dcmplx(5.130528295923D+02, 5.123304037599D+02) - csum_ref(17) = dcmplx(5.130310107773D+02, 5.123356167976D+02) - csum_ref(18) = dcmplx(5.130103090133D+02, 5.123399592211D+02) - csum_ref(19) = dcmplx(5.129905029333D+02, 5.123435588985D+02) - csum_ref(20) = dcmplx(5.129714421109D+02, 5.123465164008D+02) - - else if (nx .eq. 2048 .and. ny .eq. 1024 .and. nz .eq. 1024 .and. nt .eq. 25) then -!--------------------------------------------------------------------- -! Class D size reference checksums -!--------------------------------------------------------------------- - class = 'D' - csum_ref(1) = dcmplx(5.122230065252D+02, 5.118534037109D+02) - csum_ref(2) = dcmplx(5.120463975765D+02, 5.117061181082D+02) - csum_ref(3) = dcmplx(5.119865766760D+02, 5.117096364601D+02) - csum_ref(4) = dcmplx(5.119518799488D+02, 5.117373863950D+02) - csum_ref(5) = dcmplx(5.119269088223D+02, 5.117680347632D+02) - csum_ref(6) = dcmplx(5.119082416858D+02, 5.117967875532D+02) - csum_ref(7) = dcmplx(5.118943814638D+02, 5.118225281841D+02) - csum_ref(8) = dcmplx(5.118842385057D+02, 5.118451629348D+02) - csum_ref(9) = dcmplx(5.118769435632D+02, 5.118649119387D+02) - csum_ref(10) = dcmplx(5.118718203448D+02, 5.118820803844D+02) - csum_ref(11) = dcmplx(5.118683569061D+02, 5.118969781011D+02) - csum_ref(12) = dcmplx(5.118661708593D+02, 5.119098918835D+02) - csum_ref(13) = dcmplx(5.118649768950D+02, 5.119210777066D+02) - csum_ref(14) = dcmplx(5.118645605626D+02, 5.119307604484D+02) - csum_ref(15) = dcmplx(5.118647586618D+02, 5.119391362671D+02) - csum_ref(16) = dcmplx(5.118654451572D+02, 5.119463757241D+02) - csum_ref(17) = dcmplx(5.118665212451D+02, 5.119526269238D+02) - csum_ref(18) = dcmplx(5.118679083821D+02, 5.119580184108D+02) - csum_ref(19) = dcmplx(5.118695433664D+02, 5.119626617538D+02) - csum_ref(20) = dcmplx(5.118713748264D+02, 5.119666538138D+02) - csum_ref(21) = dcmplx(5.118733606701D+02, 5.119700787219D+02) - csum_ref(22) = dcmplx(5.118754661974D+02, 5.119730095953D+02) - csum_ref(23) = dcmplx(5.118776626738D+02, 5.119755100241D+02) - csum_ref(24) = dcmplx(5.118799262314D+02, 5.119776353561D+02) - csum_ref(25) = dcmplx(5.118822370068D+02, 5.119794338060D+02) - else if (nx .eq. 4096 .and. ny .eq. 2048 .and. nz .eq. 2048 .and. nt .eq. 25) then -!--------------------------------------------------------------------- -! Class E size reference checksums -!--------------------------------------------------------------------- - class = 'E' - csum_ref(1) = dcmplx(5.121601045346D+02, 5.117395998266D+02) - csum_ref(2) = dcmplx(5.120905403678D+02, 5.118614716182D+02) - csum_ref(3) = dcmplx(5.120623229306D+02, 5.119074203747D+02) - csum_ref(4) = dcmplx(5.120438418997D+02, 5.119345900733D+02) - csum_ref(5) = dcmplx(5.120311521872D+02, 5.119551325550D+02) - csum_ref(6) = dcmplx(5.120226088809D+02, 5.119720179919D+02) - csum_ref(7) = dcmplx(5.120169296534D+02, 5.119861371665D+02) - csum_ref(8) = dcmplx(5.120131225172D+02, 5.119979364402D+02) - csum_ref(9) = dcmplx(5.120104767108D+02, 5.120077674092D+02) - csum_ref(10) = dcmplx(5.120085127969D+02, 5.120159443121D+02) - csum_ref(11) = dcmplx(5.120069224127D+02, 5.120227453670D+02) - csum_ref(12) = dcmplx(5.120055158164D+02, 5.120284096041D+02) - csum_ref(13) = dcmplx(5.120041820159D+02, 5.120331373793D+02) - csum_ref(14) = dcmplx(5.120028605402D+02, 5.120370938679D+02) - csum_ref(15) = dcmplx(5.120015223011D+02, 5.120404138831D+02) - csum_ref(16) = dcmplx(5.120001570022D+02, 5.120432068837D+02) - csum_ref(17) = dcmplx(5.119987650555D+02, 5.120455615860D+02) - csum_ref(18) = dcmplx(5.119973525091D+02, 5.120475499442D+02) - csum_ref(19) = dcmplx(5.119959279472D+02, 5.120492304629D+02) - csum_ref(20) = dcmplx(5.119945006558D+02, 5.120506508902D+02) - csum_ref(21) = dcmplx(5.119930795911D+02, 5.120518503782D+02) - csum_ref(22) = dcmplx(5.119916728462D+02, 5.120528612016D+02) - csum_ref(23) = dcmplx(5.119902874185D+02, 5.120537101195D+02) - csum_ref(24) = dcmplx(5.119889291565D+02, 5.120544194514D+02) - csum_ref(25) = dcmplx(5.119876028049D+02, 5.120550079284D+02) - endif - - if (class .ne. 'U') then - do i = 1, nt - err = abs( (sums(i) - csum_ref(i)) / csum_ref(i) ) - if (.not.(err .le. epsilon) .or. isnan(err)) goto 100 - end do - verified = .TRUE. -100 continue - - endif - - - if (class .ne. 'U') then - if (verified) then - write(*,2000) -2000 format(' Result verification successful') - else - write(*,2001) -2001 format(' Result verification failed') - endif - endif - print *, 'class = ', class - - return -end - - -subroutine print_results(name, class, n1, n2, n3, niter, t, mops, optype, verified, npbversion, compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character name*(*) - character class*1 - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*15 - logical verified - character*(*) npbversion, compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7 - integer num_threads, max_threads, i - - max_threads = 1 - num_threads = 1 - - write (*, 2) name - 2 format(//, ' ', A, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -! If this is not a grid-based problem (EP, FT, CG), then -! we only print n1, which contains some measure of the -! problem size. In that case, n2 and n3 are both zero. -! Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f15.0)' ) 2.d0**n1 - j = 15 - if (size(j:j) .eq. '.') j = j - 1 - write (*,42) size(1:j) - 42 format(' Size = ',9x, a15) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',9x, i4,'x',i4,'x',i4) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - - write(*,14) compiletime - 14 format(' Compile date = ', 12x, a12) - - - write (*,121) cs1 - 121 format(/, ' Compile options:', /, ' F77 = ', A) - - write (*,122) cs2 - 122 format(' FLINK = ', A) - - write (*,123) cs3 - 123 format(' F_LIB = ', A) - - write (*,124) cs4 - 124 format(' F_INC = ', A) - - write (*,125) cs5 - 125 format(' FFLAGS = ', A) - - write (*,126) cs6 - 126 format(' FLINKFLAGS = ', A) - - write(*, 127) cs7 - 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send all errors/feedbacks to:'// ' NPB Development Team'/ ' npb@nas.nasa.gov'//) - - - - return - end - - - - double precision function randlc(x, a) - - - implicit none - double precision x, a - integer*8 i246m1, Lx, La - double precision d2m46 - - parameter(d2m46=0.5d0**46) - - save i246m1 - data i246m1/Z'00003FFFFFFFFFFF'/ - - Lx = X - La = A - - Lx = iand(Lx*La,i246m1) - randlc = d2m46*dble(Lx) - x = dble(Lx) - return -end - - -subroutine vranlc (N, X, A, Y) - - implicit none - integer n, i - double precision x, a, y(*) - integer*8 i246m1, Lx, La - double precision d2m46 - - - parameter(d2m46=0.5d0**46) - save i246m1 - data i246m1/Z'00003FFFFFFFFFFF'/ - - Lx = X - La = A - do i = 1, N - Lx = iand(Lx*La,i246m1) - y(i) = d2m46*dble(Lx) - end do - x = dble(Lx) - - return - end - - - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/global.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/global.h deleted file mode 100644 index f94133f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/global.h +++ /dev/null @@ -1,80 +0,0 @@ -include 'npbparams.h' - - -! If processor array is 1x1 -> 0D grid decomposition - - -! Cache blocking params. These values are good for most -! RISC processors. -! FFT parameters: -! fftblock controls how many ffts are done at a time. -! The default is appropriate for most cache-based machines -! On vector machines, the FFT can be vectorized with vector -! length equal to the block size, so the block size should -! be as large as possible. This is the size of the smallest -! dimension of the problem: 128 for class A, 256 for class B and -! 512 for class C. - - -! we need a bunch of logic to keep track of how -! arrays are laid out. - - -! Note: this serial version is the derived from the parallel 0D case -! of the ft NPB. -! The computation proceeds logically as - -! set up initial conditions -! fftx(1) -! transpose (1->2) -! ffty(2) -! transpose (2->3) -! fftz(3) -! time evolution -! fftz(3) -! transpose (3->2) -! ffty(2) -! transpose (2->1) -! fftx(1) -! compute residual(1) - -! for the 0D, 1D, 2D strategies, the layouts look like xxx -! -! 0D 1D 2D -! 1: xyz xyz xyz - - - -integer T_total, T_setup, T_fft, T_evolve, T_checksum, T_fftx, T_ffty, T_fftz, T_max -parameter (T_total = 1, T_setup = 2, T_fft = 3, T_evolve = 4, T_checksum = 5, T_max = 5) - -logical timers_enabled -parameter (timers_enabled = .FALSE.) -logical more_memory -parameter (more_memory = .FALSE.) - -external timer_read -double precision timer_read -external ilog2 -integer ilog2 - -external randlc -double precision randlc - - - -double precision seed, a, pi, alpha -parameter (seed = 314159265.d0, a = 1220703125.d0, pi = 3.141592653589793238d0, alpha=1.0d-6) - -double complex u0(nxp,ny,nz), u1(nxp,ny,nz) -double precision twiddle(nxp,ny,nz) -double complex u(nxp) -double complex y1(maxdim),y2(maxdim) -common /arrays/ u,u0,u1,twiddle,y1,y2 - -!dvm$ distribute (*,*,*) :: twiddle -!dvm$ distribute (*,*,*) :: u0 -!dvm$ distribute (*,*,*) :: u1 -!dvm$ distribute (*) :: u - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/make.bat deleted file mode 100644 index 2bb2118..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/FT/make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams FT %CLASS% -CALL %F77% %OPT% ft 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist ft.exe ( - copy ft.exe %BIN%\ft.%CLASS%.x.exe - del ft.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/Makefile deleted file mode 100644 index 2ebe13d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=lu -BENCHMARKU=LU - -include ../config/make.def -include ../sys/make.common - -OBJS = lu.o read_input.o \ - domain.o setcoeff.o setbv.o exact.o setiv.o \ - erhs.o ssor.o rhs.o l2norm.o error.o \ - pintgr.o verify.o print_results.o timers.o - - - -${PROGRAM}: config - ${MAKE} exec - -exec: $(OBJS) - ${FLINK} flink -shared-dvm ${FLINKFLAGS} -o ${PROGRAM} ${OBJS} ${F_LIB} - -.f.o : - ${F77} f ${FFLAGS} -c -o $@ $< - -lu.o: lu.f applu.incl npbparams.h -erhs.o: erhs.f applu.incl npbparams.h -error.o: error.f applu.incl npbparams.h -exact.o: exact.f applu.incl npbparams.h -l2norm.o: l2norm.f -pintgr.o: pintgr.f applu.incl npbparams.h -read_input.o: read_input.f applu.incl npbparams.h -rhs.o: rhs.f applu.incl npbparams.h -setbv.o: setbv.f applu.incl npbparams.h -setiv.o: setiv.f applu.incl npbparams.h -setcoeff.o: setcoeff.f applu.incl npbparams.h -ssor.o: ssor.f applu.incl npbparams.h -domain.o: domain.f applu.incl npbparams.h -verify.o: verify.f applu.incl npbparams.h -print_results.o: print_results.f -timers.o: timers.f - -clean: - - /bin/rm -f npbparams.h - - /bin/rm -f *.o *DVMH* *~ - - /bin/rm -f *.cu *.cuf diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/applu.incl b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/applu.incl deleted file mode 100644 index d07a663..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/applu.incl +++ /dev/null @@ -1,185 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -c--- applu.incl -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c npbparams.h defines parameters that depend on the class and -c number of nodes -c--------------------------------------------------------------------- - - include 'npbparams.h' - -c--------------------------------------------------------------------- -c parameters which can be overridden in runtime config file -c isiz1,isiz2,isiz3 give the maximum size -c ipr = 1 to print out verbose information -c omega = 2.0 is correct for all classes -c tolrsd is tolerance levels for steady state residuals -c--------------------------------------------------------------------- - integer ipr_default,iS,jS,kS - parameter (ipr_default = 1) - double precision omega_default - parameter (omega_default = 1.2d0) - double precision tolrsd1_def, tolrsd2_def, tolrsd3_def, - > tolrsd4_def, tolrsd5_def - parameter (tolrsd1_def=1.0e-08, - > tolrsd2_def=1.0e-08, tolrsd3_def=1.0e-08, - > tolrsd4_def=1.0e-08, tolrsd5_def=1.0e-08) - - double precision c1, c2, c3, c4, c5 - parameter( c1 = 1.40d+00, c2 = 0.40d+00, - > c3 = 1.00d-01, c4 = 1.00d+00, - > c5 = 1.40d+00, - > iS =isiz1/2*2+1,jS= isiz2/2*2+1, kS=isiz3 ) - -c--------------------------------------------------------------------- -c grid -c--------------------------------------------------------------------- - integer nx, ny, nz - integer nx0, ny0, nz0 - integer ist, iend - integer jst, jend - integer ii1, ii2 - integer ji1, ji2 - integer ki1, ki2 - double precision dxi, deta, dzeta - double precision tx1, tx2, tx3 - double precision ty1, ty2, ty3 - double precision tz1, tz2, tz3 - - common/cgcon/ dxi, deta, dzeta, - > tx1, tx2, tx3, - > ty1, ty2, ty3, - > tz1, tz2, tz3, - > nx, ny, nz, - > nx0, ny0, nz0, - > ist, iend, - > jst, jend, - > ii1, ii2, - > ji1, ji2, - > ki1, ki2 - -c--------------------------------------------------------------------- -c dissipation -c--------------------------------------------------------------------- - double precision dx1, dx2, dx3, dx4, dx5 - double precision dy1, dy2, dy3, dy4, dy5 - double precision dz1, dz2, dz3, dz4, dz5 - double precision dssp - - common/disp/ dx1,dx2,dx3,dx4,dx5, - > dy1,dy2,dy3,dy4,dy5, - > dz1,dz2,dz3,dz4,dz5, - > dssp - -c--------------------------------------------------------------------- -c field variables and residuals -c to improve cache performance, second two dimensions padded by 1 -c for even number sizes only. -c note: corresponding array (called "v") in routines blts, buts, -c and l2norm are similarly padded -c--------------------------------------------------------------------- -!DVM$ ALIGN frct(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX2,iEX3,iE -!DVM$&X4) -!DVM$ ALIGN qs(iEX1,iEX2,iEX3) WITH dvmh_temp0(*,iEX1,iEX2,iEX3) -!DVM$ ALIGN rho_i(iEX1,iEX2,iEX3) WITH dvmh_temp0(*,iEX1,iEX2,iEX3) -!DVM$ ALIGN rsd(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX2,iEX3,iEX -!DVM$&4) -!DVM$ ALIGN u(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX2,iEX3,iEX4) -!DVM$ DYNAMIC u,rsd,frct,qs,rho_i -!DVM$ SHADOW qs(1:1,1:1,1:1) -!DVM$ SHADOW rho_i(1:1,1:1,1:1) -!DVM$ SHADOW rsd(0:0,2:2,2:2,2:2) -!DVM$ SHADOW frct(0:0,2:2,2:2,2:2) -!DVM$ SHADOW u(0:0,2:2,2:2,2:2) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:6,0:iS+1,0:jS+1,0:kS+1) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r1(1:6,0:iS+1,0:jS+1,0:kS+1) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r2(1:6,0:iS+1,0:jS+1,0:kS+1) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r3(1:6,0:iS+1,0:jS+1,0:kS+1) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r0(1:6,0:iS+1,0:jS+1,0:kS+1) -!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,BLOCK,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r1(*,BLOCK,BLOCK,*) -!DVM$ DISTRIBUTE dvmh_temp0_r2(*,BLOCK,*,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r3(*,*,BLOCK,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r0(*,*,*,BLOCK) - -!DVM$ DYNAMIC dvmh_temp0, dvmh_temp0_r1, dvmh_temp0_r2, dvmh_temp0_r3, -!DVM$&dvmh_temp0_r0 - double precision u(5,isiz1/2*2+1, - > isiz2/2*2+1, - > isiz3), - > rsd(5,isiz1/2*2+1, - > isiz2/2*2+1, - > isiz3), - > frct(5,isiz1/2*2+1, - > isiz2/2*2+1, - > isiz3), - > flux(5,isiz1), - > qs(isiz1,isiz2,isiz3), - > rho_i(isiz1/2*2+1,isiz2/2*2+1,isiz3) - - common/cvar/ u, rsd, frct, flux, - > qs, rho_i - - -c--------------------------------------------------------------------- -c output control parameters -c--------------------------------------------------------------------- - integer ipr, inorm - - common/cprcon/ ipr, inorm - -c--------------------------------------------------------------------- -c newton-raphson iteration control parameters -c--------------------------------------------------------------------- - integer itmax, invert - double precision dt, omega, tolrsd(5), - > rsdnm(5), errnm(5), frc, ttotal - - common/ctscon/ dt, omega, tolrsd, - > rsdnm, errnm, frc, ttotal, - > itmax, invert - - double precision a(5,5,isiz1/2*2+1,isiz2), - > b(5,5,isiz1/2*2+1,isiz2), - > c(5,5,isiz1/2*2+1,isiz2), - > d(5,5,isiz1/2*2+1,isiz2) - - common/cjac/ a, b, c, d - -c--------------------------------------------------------------------- -c coefficients of the exact solution -c--------------------------------------------------------------------- - double precision ce(5,13) - - common/cexact/ ce - -c--------------------------------------------------------------------- -c timers -c--------------------------------------------------------------------- - integer t_rhsx,t_rhsy,t_rhsz,t_rhs,t_jacld,t_blts, - > t_jacu,t_buts,t_add,t_l2norm,t_last,t_total - parameter (t_total = 1) - parameter (t_rhsx = 2) - parameter (t_rhsy = 3) - parameter (t_rhsz = 4) - parameter (t_rhs = 5) - parameter (t_jacld = 6) - parameter (t_blts = 7) - parameter (t_jacu = 8) - parameter (t_buts = 9) - parameter (t_add = 10) - parameter (t_l2norm = 11) - parameter (t_last = 11) - logical timeron - double precision maxtime - - common/timer/maxtime,timeron - - -c--------------------------------------------------------------------- -c end of include file -c--------------------------------------------------------------------- diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/domain.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/domain.f deleted file mode 100644 index 7e38f64..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/domain.f +++ /dev/null @@ -1,79 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine domain () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - nx = nx0 - ny = ny0 - nz = nz0 - -!--------------------------------------------------------------------- -! check the sub-domain size -!--------------------------------------------------------------------- - if (nx .lt. 4 .or. ny .lt. 4 .or. nz .lt. 4) then - write (unit = *,fmt = 2001) nx,ny,nz -2001 format (5x,'SUBDOMAIN SIZE IS TOO SMALL - ', /5x,' - &ADJUST PROBLEM SIZE OR NUMBER OF PROCESSORS', /5x,'SO THAT - &NX, NY AND NZ ARE GREATER THAN OR EQUAL', /5x,'TO 4 THEY AR - &E CURRENTLY', 3I3) - stop - endif - if (nx .gt. isiz1 .or. ny .gt. isiz2 .or. nz .gt. isiz3) then - write (unit = *,fmt = 2002) nx,ny,nz -2002 format (5x,'SUBDOMAIN SIZE IS TOO LARGE - ', /5x,' - &ADJUST PROBLEM SIZE OR NUMBER OF PROCESSORS', /5x,'SO THAT - &NX, NY AND NZ ARE LESS THAN OR EQUAL TO ', /5x,'ISIZ1, ISIZ - &2 AND ISIZ3 RESPECTIVELY. THEY ARE', /5x,'CURRENTLY', 3I4) - stop - endif - -!--------------------------------------------------------------------- -! set up the start and end in i and j extents for all processors -!--------------------------------------------------------------------- - ist = 2 - iend = nx - 1 - jst = 2 - jend = ny - 1 - ii1 = 2 - ii2 = nx0 - 1 - ji1 = 2 - ji2 = ny0 - 2 - ki1 = 3 - ki2 = nz0 - 1 - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/erhs.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/erhs.f deleted file mode 100644 index d69a102..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/erhs.f +++ /dev/null @@ -1,369 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine erhs () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! compute the right hand side based on exact solution -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k,m - double precision xi,eta,zeta - double precision q - double precision u21,u31,u41 - double precision tmp - double precision u21i,u31i,u41i,u51i - double precision u21j,u31j,u41j,u51j - double precision u21k,u31k,u41k,u51k - double precision u21im1,u31im1,u41im1,u51im1 - double precision u21jm1,u31jm1,u41jm1,u51jm1 - double precision u21km1,u31km1,u41km1,u51km1 -!DVM$ PARALLEL (k,j,i,m) ON frct(m,i,j,k), PRIVATE (m,i,j,k) - do k = 1,nz - do j = 1,ny - do i = 1,nx - do m = 1,5 - frct(m,i,j,k) = 0.0d+00 - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i) ON rsd(*,i,j,k), PRIVATE (m,i,j,k,xi,zeta,eta) - do k = 1,nz - do j = 1,ny - do i = 1,nx - zeta = dble (k - 1) / (nz - 1) - eta = dble (j - 1) / (ny0 - 1) - xi = dble (i - 1) / (nx0 - 1) - do m = 1,5 - rsd(m,i,j,k) = ce(m,1) + (ce(m,2) + (ce(m,5) + (ce(m,8 - &) + ce(m,11) * xi) * xi) * xi) * xi + (ce(m,3) + (ce(m,6) + (ce(m, - &9) + ce(m,12) * eta) * eta) * eta) * eta + (ce(m,4) + (ce(m,7) + ( - &ce(m,10) + ce(m,13) * zeta) * zeta) * zeta) * zeta - enddo - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! xi-direction flux differences -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r3(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r3(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: frct -!DVM$ PARALLEL (k,j) ON frct(*,*,j,k), PRIVATE (m,i,j,q,tmp,k,flux,u31i, -!DVM$&u41i,u51i,u21i,u21,u31im1,u41im1,u21im1,u51im1) - do k = 2,nz - 1 - do j = jst,jend - do i = 1,nx - flux(1,i) = rsd(2,i,j,k) - u21 = rsd(2,i,j,k) / rsd(1,i,j,k) - q = 0.50d+00 * (rsd(2,i,j,k) * rsd(2,i,j,k) + rsd(3,i,j,k - &) * rsd(3,i,j,k) + rsd(4,i,j,k) * rsd(4,i,j,k)) / rsd(1,i,j,k) - flux(2,i) = rsd(2,i,j,k) * u21 + c2 * (rsd(5,i,j,k) - q) - flux(3,i) = rsd(3,i,j,k) * u21 - flux(4,i) = rsd(4,i,j,k) * u21 - flux(5,i) = (c1 * rsd(5,i,j,k) - c2 * q) * u21 - enddo - do i = ist,iend - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - tx2 * (flux(m,i + 1) - - & flux(m,i - 1)) - enddo - enddo - do i = ist,nx - tmp = 1.0d+00 / rsd(1,i,j,k) - u21i = tmp * rsd(2,i,j,k) - u31i = tmp * rsd(3,i,j,k) - u41i = tmp * rsd(4,i,j,k) - u51i = tmp * rsd(5,i,j,k) - tmp = 1.0d+00 / rsd(1,i - 1,j,k) - u21im1 = tmp * rsd(2,i - 1,j,k) - u31im1 = tmp * rsd(3,i - 1,j,k) - u41im1 = tmp * rsd(4,i - 1,j,k) - u51im1 = tmp * rsd(5,i - 1,j,k) - flux(2,i) = 4.0d+00 / 3.0d+00 * tx3 * (u21i - u21im1) - flux(3,i) = tx3 * (u31i - u31im1) - flux(4,i) = tx3 * (u41i - u41im1) - flux(5,i) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i* - &* 2 + u31i** 2 + u41i** 2 - (u21im1** 2 + u31im1** 2 + u41im1** 2) - &) + 1.0d+00 / 6.0d+00 * tx3 * (u21i** 2 - u21im1** 2) + c1 * c5 * - &tx3 * (u51i - u51im1) - enddo - do i = ist,iend - frct(1,i,j,k) = frct(1,i,j,k) + dx1 * tx1 * (rsd(1,i - 1, - &j,k) - 2.0d+00 * rsd(1,i,j,k) + rsd(1,i + 1,j,k)) - frct(2,i,j,k) = frct(2,i,j,k) + tx3 * c3 * c4 * (flux(2,i - & + 1) - flux(2,i)) + dx2 * tx1 * (rsd(2,i - 1,j,k) - 2.0d+00 * rsd - &(2,i,j,k) + rsd(2,i + 1,j,k)) - frct(3,i,j,k) = frct(3,i,j,k) + tx3 * c3 * c4 * (flux(3,i - & + 1) - flux(3,i)) + dx3 * tx1 * (rsd(3,i - 1,j,k) - 2.0d+00 * rsd - &(3,i,j,k) + rsd(3,i + 1,j,k)) - frct(4,i,j,k) = frct(4,i,j,k) + tx3 * c3 * c4 * (flux(4,i - & + 1) - flux(4,i)) + dx4 * tx1 * (rsd(4,i - 1,j,k) - 2.0d+00 * rsd - &(4,i,j,k) + rsd(4,i + 1,j,k)) - frct(5,i,j,k) = frct(5,i,j,k) + tx3 * c3 * c4 * (flux(5,i - & + 1) - flux(5,i)) + dx5 * tx1 * (rsd(5,i - 1,j,k) - 2.0d+00 * rsd - &(5,i,j,k) + rsd(5,i + 1,j,k)) - enddo - -!--------------------------------------------------------------------- -! Fourth-order dissipation -!--------------------------------------------------------------------- - do m = 1,5 - frct(m,2,j,k) = frct(m,2,j,k) - dssp * ((+(5.0d+00)) * rs - &d(m,2,j,k) - 4.0d+00 * rsd(m,3,j,k) + rsd(m,4,j,k)) - frct(m,3,j,k) = frct(m,3,j,k) - dssp * ((-(4.0d+00)) * rs - &d(m,2,j,k) + 6.0d+00 * rsd(m,3,j,k) - 4.0d+00 * rsd(m,4,j,k) + rsd - &(m,5,j,k)) - enddo - do i = 4,nx - 3 - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - dssp * (rsd(m,i - 2,j, - &k) - 4.0d+00 * rsd(m,i - 1,j,k) + 6.0d+00 * rsd(m,i,j,k) - 4.0d+00 - & * rsd(m,i + 1,j,k) + rsd(m,i + 2,j,k)) - enddo - enddo - do m = 1,5 - frct(m,nx - 2,j,k) = frct(m,nx - 2,j,k) - dssp * (rsd(m,n - &x - 4,j,k) - 4.0d+00 * rsd(m,nx - 3,j,k) + 6.0d+00 * rsd(m,nx - 2, - &j,k) - 4.0d+00 * rsd(m,nx - 1,j,k)) - frct(m,nx - 1,j,k) = frct(m,nx - 1,j,k) - dssp * (rsd(m,n - &x - 3,j,k) - 4.0d+00 * rsd(m,nx - 2,j,k) + 5.0d+00 * rsd(m,nx - 1, - &j,k)) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! eta-direction flux differences -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: frct -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r2(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r2(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: frct -!DVM$ PARALLEL (k,i) ON frct(*,i,*,k), PRIVATE (m,i,u31,j,q,tmp,u31j,u41 -!DVM$&j,u41jm1,u51jm1,u21j,u31jm1,k,u21jm1,u51j,flux) - do k = 2,nz - 1 - do i = ist,iend - do j = 1,ny - flux(1,j) = rsd(3,i,j,k) - u31 = rsd(3,i,j,k) / rsd(1,i,j,k) - q = 0.50d+00 * (rsd(2,i,j,k) * rsd(2,i,j,k) + rsd(3,i,j,k - &) * rsd(3,i,j,k) + rsd(4,i,j,k) * rsd(4,i,j,k)) / rsd(1,i,j,k) - flux(2,j) = rsd(2,i,j,k) * u31 - flux(3,j) = rsd(3,i,j,k) * u31 + c2 * (rsd(5,i,j,k) - q) - flux(4,j) = rsd(4,i,j,k) * u31 - flux(5,j) = (c1 * rsd(5,i,j,k) - c2 * q) * u31 - enddo - do j = jst,jend - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - ty2 * (flux(m,j + 1) - - & flux(m,j - 1)) - enddo - enddo - do j = jst,ny - tmp = 1.0d+00 / rsd(1,i,j,k) - u21j = tmp * rsd(2,i,j,k) - u31j = tmp * rsd(3,i,j,k) - u41j = tmp * rsd(4,i,j,k) - u51j = tmp * rsd(5,i,j,k) - tmp = 1.0d+00 / rsd(1,i,j - 1,k) - u21jm1 = tmp * rsd(2,i,j - 1,k) - u31jm1 = tmp * rsd(3,i,j - 1,k) - u41jm1 = tmp * rsd(4,i,j - 1,k) - u51jm1 = tmp * rsd(5,i,j - 1,k) - flux(2,j) = ty3 * (u21j - u21jm1) - flux(3,j) = 4.0d+00 / 3.0d+00 * ty3 * (u31j - u31jm1) - flux(4,j) = ty3 * (u41j - u41jm1) - flux(5,j) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j* - &* 2 + u31j** 2 + u41j** 2 - (u21jm1** 2 + u31jm1** 2 + u41jm1** 2) - &) + 1.0d+00 / 6.0d+00 * ty3 * (u31j** 2 - u31jm1** 2) + c1 * c5 * - &ty3 * (u51j - u51jm1) - enddo - do j = jst,jend - frct(1,i,j,k) = frct(1,i,j,k) + dy1 * ty1 * (rsd(1,i,j - - &1,k) - 2.0d+00 * rsd(1,i,j,k) + rsd(1,i,j + 1,k)) - frct(2,i,j,k) = frct(2,i,j,k) + ty3 * c3 * c4 * (flux(2,j - & + 1) - flux(2,j)) + dy2 * ty1 * (rsd(2,i,j - 1,k) - 2.0d+00 * rsd - &(2,i,j,k) + rsd(2,i,j + 1,k)) - frct(3,i,j,k) = frct(3,i,j,k) + ty3 * c3 * c4 * (flux(3,j - & + 1) - flux(3,j)) + dy3 * ty1 * (rsd(3,i,j - 1,k) - 2.0d+00 * rsd - &(3,i,j,k) + rsd(3,i,j + 1,k)) - frct(4,i,j,k) = frct(4,i,j,k) + ty3 * c3 * c4 * (flux(4,j - & + 1) - flux(4,j)) + dy4 * ty1 * (rsd(4,i,j - 1,k) - 2.0d+00 * rsd - &(4,i,j,k) + rsd(4,i,j + 1,k)) - frct(5,i,j,k) = frct(5,i,j,k) + ty3 * c3 * c4 * (flux(5,j - & + 1) - flux(5,j)) + dy5 * ty1 * (rsd(5,i,j - 1,k) - 2.0d+00 * rsd - &(5,i,j,k) + rsd(5,i,j + 1,k)) - enddo - -!--------------------------------------------------------------------- -! fourth-order dissipation -!--------------------------------------------------------------------- - do m = 1,5 - frct(m,i,2,k) = frct(m,i,2,k) - dssp * ((+(5.0d+00)) * rs - &d(m,i,2,k) - 4.0d+00 * rsd(m,i,3,k) + rsd(m,i,4,k)) - frct(m,i,3,k) = frct(m,i,3,k) - dssp * ((-(4.0d+00)) * rs - &d(m,i,2,k) + 6.0d+00 * rsd(m,i,3,k) - 4.0d+00 * rsd(m,i,4,k) + rsd - &(m,i,5,k)) - enddo - do j = 4,ny - 3 - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - dssp * (rsd(m,i,j - 2, - &k) - 4.0d+00 * rsd(m,i,j - 1,k) + 6.0d+00 * rsd(m,i,j,k) - 4.0d+00 - & * rsd(m,i,j + 1,k) + rsd(m,i,j + 2,k)) - enddo - enddo - do m = 1,5 - frct(m,i,ny - 2,k) = frct(m,i,ny - 2,k) - dssp * (rsd(m,i - &,ny - 4,k) - 4.0d+00 * rsd(m,i,ny - 3,k) + 6.0d+00 * rsd(m,i,ny - - &2,k) - 4.0d+00 * rsd(m,i,ny - 1,k)) - frct(m,i,ny - 1,k) = frct(m,i,ny - 1,k) - dssp * (rsd(m,i - &,ny - 3,k) - 4.0d+00 * rsd(m,i,ny - 2,k) + 5.0d+00 * rsd(m,i,ny - - &1,k)) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! zeta-direction flux differences -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: frct -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r1(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r1(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: frct -!DVM$ PARALLEL (j,i) ON frct(*,i,j,*), PRIVATE (m,i,j,q,tmp,u41,k,u51k,u -!DVM$&31km1,u21k,u21km1,u41k,u31k,u51km1,u41km1,flux) - do j = jst,jend - do i = ist,iend - do k = 1,nz - flux(1,k) = rsd(4,i,j,k) - u41 = rsd(4,i,j,k) / rsd(1,i,j,k) - q = 0.50d+00 * (rsd(2,i,j,k) * rsd(2,i,j,k) + rsd(3,i,j,k - &) * rsd(3,i,j,k) + rsd(4,i,j,k) * rsd(4,i,j,k)) / rsd(1,i,j,k) - flux(2,k) = rsd(2,i,j,k) * u41 - flux(3,k) = rsd(3,i,j,k) * u41 - flux(4,k) = rsd(4,i,j,k) * u41 + c2 * (rsd(5,i,j,k) - q) - flux(5,k) = (c1 * rsd(5,i,j,k) - c2 * q) * u41 - enddo - do k = 2,nz - 1 - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - tz2 * (flux(m,k + 1) - - & flux(m,k - 1)) - enddo - enddo - do k = 2,nz - tmp = 1.0d+00 / rsd(1,i,j,k) - u21k = tmp * rsd(2,i,j,k) - u31k = tmp * rsd(3,i,j,k) - u41k = tmp * rsd(4,i,j,k) - u51k = tmp * rsd(5,i,j,k) - tmp = 1.0d+00 / rsd(1,i,j,k - 1) - u21km1 = tmp * rsd(2,i,j,k - 1) - u31km1 = tmp * rsd(3,i,j,k - 1) - u41km1 = tmp * rsd(4,i,j,k - 1) - u51km1 = tmp * rsd(5,i,j,k - 1) - flux(2,k) = tz3 * (u21k - u21km1) - flux(3,k) = tz3 * (u31k - u31km1) - flux(4,k) = 4.0d+00 / 3.0d+00 * tz3 * (u41k - u41km1) - flux(5,k) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k* - &* 2 + u31k** 2 + u41k** 2 - (u21km1** 2 + u31km1** 2 + u41km1** 2) - &) + 1.0d+00 / 6.0d+00 * tz3 * (u41k** 2 - u41km1** 2) + c1 * c5 * - &tz3 * (u51k - u51km1) - enddo - do k = 2,nz - 1 - frct(1,i,j,k) = frct(1,i,j,k) + dz1 * tz1 * (rsd(1,i,j,k - &+ 1) - 2.0d+00 * rsd(1,i,j,k) + rsd(1,i,j,k - 1)) - frct(2,i,j,k) = frct(2,i,j,k) + tz3 * c3 * c4 * (flux(2,k - & + 1) - flux(2,k)) + dz2 * tz1 * (rsd(2,i,j,k + 1) - 2.0d+00 * rsd - &(2,i,j,k) + rsd(2,i,j,k - 1)) - frct(3,i,j,k) = frct(3,i,j,k) + tz3 * c3 * c4 * (flux(3,k - & + 1) - flux(3,k)) + dz3 * tz1 * (rsd(3,i,j,k + 1) - 2.0d+00 * rsd - &(3,i,j,k) + rsd(3,i,j,k - 1)) - frct(4,i,j,k) = frct(4,i,j,k) + tz3 * c3 * c4 * (flux(4,k - & + 1) - flux(4,k)) + dz4 * tz1 * (rsd(4,i,j,k + 1) - 2.0d+00 * rsd - &(4,i,j,k) + rsd(4,i,j,k - 1)) - frct(5,i,j,k) = frct(5,i,j,k) + tz3 * c3 * c4 * (flux(5,k - & + 1) - flux(5,k)) + dz5 * tz1 * (rsd(5,i,j,k + 1) - 2.0d+00 * rsd - &(5,i,j,k) + rsd(5,i,j,k - 1)) - enddo - -!--------------------------------------------------------------------- -! fourth-order dissipation -!--------------------------------------------------------------------- - do m = 1,5 - frct(m,i,j,2) = frct(m,i,j,2) - dssp * ((+(5.0d+00)) * rs - &d(m,i,j,2) - 4.0d+00 * rsd(m,i,j,3) + rsd(m,i,j,4)) - frct(m,i,j,3) = frct(m,i,j,3) - dssp * ((-(4.0d+00)) * rs - &d(m,i,j,2) + 6.0d+00 * rsd(m,i,j,3) - 4.0d+00 * rsd(m,i,j,4) + rsd - &(m,i,j,5)) - enddo - do k = 4,nz - 3 - do m = 1,5 - frct(m,i,j,k) = frct(m,i,j,k) - dssp * (rsd(m,i,j,k - - &2) - 4.0d+00 * rsd(m,i,j,k - 1) + 6.0d+00 * rsd(m,i,j,k) - 4.0d+00 - & * rsd(m,i,j,k + 1) + rsd(m,i,j,k + 2)) - enddo - enddo - do m = 1,5 - frct(m,i,j,nz - 2) = frct(m,i,j,nz - 2) - dssp * (rsd(m,i - &,j,nz - 4) - 4.0d+00 * rsd(m,i,j,nz - 3) + 6.0d+00 * rsd(m,i,j,nz - &- 2) - 4.0d+00 * rsd(m,i,j,nz - 1)) - frct(m,i,j,nz - 1) = frct(m,i,j,nz - 1) - dssp * (rsd(m,i - &,j,nz - 3) - 4.0d+00 * rsd(m,i,j,nz - 2) + 5.0d+00 * rsd(m,i,j,nz - &- 1)) - enddo - enddo - enddo -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: rsd -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: frct - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/error.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/error.f deleted file mode 100644 index 98a427a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/error.f +++ /dev/null @@ -1,77 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine error () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! compute the solution error -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k,m - double precision tmp - double precision u000ijk(5) - do m = 1,5 - errnm(m) = 0.0d+00 - enddo -!DVM$ PARALLEL (k,j,i) ON u(*,i,j,k), PRIVATE (tmp,m,k,u000ijk,i,j),REDU -!DVM$&CTION (sum (errnm)) - do k = 2,nz - 1 - do j = jst,jend - do i = ist,iend - call exact(i,j,k,u000ijk) - do m = 1,5 - tmp = u000ijk(m) - u(m,i,j,k) - errnm(m) = errnm(m) + tmp** 2 - enddo - enddo - enddo - enddo - do m = 1,5 - errnm(m) = sqrt (errnm(m) / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2)) - &) - enddo - -! write (*,1002) ( errnm(m), m = 1, 5 ) -1002 format (1x/1x,'RMS-norm of error in soln. to ', 'first pde = ',1p - &e12.5/, 1x,'RMS-norm of error in soln. to ', 'second pde = ',1pe12 - &.5/, 1x,'RMS-norm of error in soln. to ', 'third pde = ',1pe12.5/ - &, 1x,'RMS-norm of error in soln. to ', 'fourth pde = ',1pe12.5/, 1 - &x,'RMS-norm of error in soln. to ', 'fifth pde = ',1pe12.5) - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/exact.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/exact.f deleted file mode 100644 index 6270604..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/exact.f +++ /dev/null @@ -1,64 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine exact (i, j, k, u000ijk) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! compute the exact solution at (i,j,k) -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! input parameters -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k - double precision u000ijk(*) - -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- - integer m - double precision xi,eta,zeta - xi = dble (i - 1) / (nx0 - 1) - eta = dble (j - 1) / (ny0 - 1) - zeta = dble (k - 1) / (nz - 1) - do m = 1,5 - u000ijk(m) = ce(m,1) + (ce(m,2) + (ce(m,5) + (ce(m,8) + ce(m,11 - &) * xi) * xi) * xi) * xi + (ce(m,3) + (ce(m,6) + (ce(m,9) + ce(m,1 - &2) * eta) * eta) * eta) * eta + (ce(m,4) + (ce(m,7) + (ce(m,10) + - &ce(m,13) * zeta) * zeta) * zeta) * zeta - enddo - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/l2norm.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/l2norm.f deleted file mode 100644 index 83a380f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/l2norm.f +++ /dev/null @@ -1,69 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine l2norm (ldx, ldy, ldz, nx0, ny0, nz0, ist, iend, jst, j - &end, v, sum) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! to compute the l2-norm of vector v. -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! input parameters -!--------------------------------------------------------------------- - integer ldx,ldy,ldz - integer nx0,ny0,nz0 - integer ist,iend - integer jst,jend -!DVM$ INHERIT v -!DVM$ DYNAMIC v - -!--------------------------------------------------------------------- -! To improve cache performance, second two dimensions padded by 1 -! for even number sizes only. Only needed in v. -!--------------------------------------------------------------------- -!DVM$ TEMPLATE, COMMON :: dvmh_temp0(1:6,0:163,0:163,-1:163) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r1(1:6,0:163,0:163,-1:163) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r2(1:6,0:163,0:163,-1:163) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r3(1:6,0:163,0:163,-1:163) -!DVM$ TEMPLATE, COMMON :: dvmh_temp0_r0(1:6,0:163,0:163,-1:163) -!DVM$ DISTRIBUTE dvmh_temp0(*,BLOCK,BLOCK,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r1(*,BLOCK,BLOCK,*) -!DVM$ DISTRIBUTE dvmh_temp0_r2(*,BLOCK,*,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r3(*,*,BLOCK,BLOCK) -!DVM$ DISTRIBUTE dvmh_temp0_r0(*,*,*,BLOCK) -!DVM$ DYNAMIC dvmh_temp0, dvmh_temp0_r1, dvmh_temp0_r2, dvmh_temp0_r3, -!DVM$&dvmh_temp0_r0 - double precision v(5,ldx / 2 * 2 + 1,ldy / 2 * 2 + 1,*),sum(5) - -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- - integer i,j,k,m - do m = 1,5 - sum(m) = 0.0d+00 - enddo -!DVM$ region -!DVM$ PARALLEL (k,j,i,m) ON v(m,i,j,k), PRIVATE (m,j,i,k),REDUCTION (sum -!DVM$& (sum)) - do k = 2,nz0 - 1 - do j = jst,jend - do i = ist,iend - do m = 1,5 - sum(m) = sum(m) + v(m,i,j,k) * v(m,i,j,k) - enddo - enddo - enddo - enddo -!DVM$ end region - do m = 1,5 - sum(m) = sqrt (sum(m) / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2))) - enddo - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/lu.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/lu.f deleted file mode 100644 index 6050948..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/lu.f +++ /dev/null @@ -1,212 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! S E R I A L V E R S I O N ! -! ! -! L U ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is a serial version of the NPB LU code. ! -! Refer to NAS Technical Reports 95-020 for details. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! -!--------------------------------------------------------------------- -! -! Authors: S. Weeratunga -! V. Venkatakrishnan -! E. Barszcz -! M. Yarrow -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - program applu - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! driver for the performance evaluation of the solver for -! five coupled parabolic/elliptic partial differential equations. -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - character class - logical verified - double precision mflops - double precision t,tmax,timer_read,trecs(t_last) - external timer_read - integer i,fstatus - character t_names(t_last)*8 - -!--------------------------------------------------------------------- -! Setup info for timers -!--------------------------------------------------------------------- - open (unit = 2,file = 'timer.flag',status = 'old',iostat = fstatus - &) - if (fstatus .eq. 0) then - timeron = .TRUE. - t_names(t_total) = 'total' - t_names(t_rhsx) = 'rhsx' - t_names(t_rhsy) = 'rhsy' - t_names(t_rhsz) = 'rhsz' - t_names(t_rhs) = 'rhs' - t_names(t_jacld) = 'jacld' - t_names(t_blts) = 'blts' - t_names(t_jacu) = 'jacu' - t_names(t_buts) = 'buts' - t_names(t_add) = 'add' - t_names(t_l2norm) = 'l2norm' - close (unit = 2) - else - timeron = .FALSE. - endif - -!--------------------------------------------------------------------- -! read input data -!--------------------------------------------------------------------- - call read_input() - -!--------------------------------------------------------------------- -! set up domain sizes -!--------------------------------------------------------------------- - call domain() - -!--------------------------------------------------------------------- -! set up coefficients -!--------------------------------------------------------------------- - call setcoeff() - -!--------------------------------------------------------------------- -! set the boundary values for dependent variables -!--------------------------------------------------------------------- - call setbv() - -!--------------------------------------------------------------------- -! set the initial values for dependent variables -!--------------------------------------------------------------------- - call setiv() - -!--------------------------------------------------------------------- -! compute the forcing term based on prescribed exact solution -!--------------------------------------------------------------------- - call erhs() - -!--------------------------------------------------------------------- -! perform one SSOR iteration to touch all pages -!--------------------------------------------------------------------- -!DVM$ actual() - call ssor(1) -!DVM$ get_actual() -!--------------------------------------------------------------------- -! reset the boundary and initial values -!--------------------------------------------------------------------- - call setbv() - call setiv() - -!--------------------------------------------------------------------- -! perform the SSOR iterations -!-------------------------------------------------------------------- -!DVM$ interval 1 -!DVM$ actual() - call ssor(itmax) -!DVM$ get_actual() -!DVM$ end interval -!--------------------------------------------------------------------- -! compute the solution error -!--------------------------------------------------------------------- - call error() - -!--------------------------------------------------------------------- -! compute the surface integral -!--------------------------------------------------------------------- - call pintgr() - -!--------------------------------------------------------------------- -! verification test -!--------------------------------------------------------------------- - call verify(rsdnm,errnm,frc,class,verified) - mflops = float (itmax) * (1984.77 * float (nx0) * float (ny0) * fl - &oat (nz0) - 10923.3 * (float (nx0 + ny0 + nz0) / 3.)** 2 + 27770.9 - & * float (nx0 + ny0 + nz0) / 3. - 144010.) / (maxtime * 1000000.) - call print_results('LU',class,nx0,ny0,nz0,itmax,maxtime,mflops,' - & floating point',verified,npbversion,compiletime,cs1,cs2,cs - &3,cs4,cs5,cs6,'(none)') - -!--------------------------------------------------------------------- -! More timers -!--------------------------------------------------------------------- - if (.not.(timeron)) goto 999 - do i = 1,t_last - trecs(i) = timer_read (i) - enddo - tmax = maxtime - if (tmax .eq. 0.) tmax = 1.0 - write (unit = *,fmt = 800) -800 format(' SECTION Time (secs)') - do i = 1,t_last - write (unit = *,fmt = 810) t_names(i),trecs(i),trecs(i) * 100. - &/ tmax - if (i .eq. t_rhs) then - t = trecs(t_rhsx) + trecs(t_rhsy) + trecs(t_rhsz) - write (unit = *,fmt = 820) 'sub-rhs',t,t * 100. / tmax - t = trecs(i) - t - write (unit = *,fmt = 820) 'rest-rhs',t,t * 100. / tmax - endif -810 format(2x,a8,':',f9.3,' (',f6.2,'%)') -820 format(5x,'--> ',a8,':',f9.3,' (',f6.2,'%)') - enddo -999 continue - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/makeTODO.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/makeTODO.bat deleted file mode 100644 index 5e7171a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/makeTODO.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams LU %CLASS% -CALL %F77% %OPT% -f90 lu 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist lu.exe ( - copy lu.exe %BIN%\lu.%CLASS%.x.exe - del lu.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/old/lu.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/old/lu.fdv deleted file mode 100644 index 24b00cc..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/old/lu.fdv +++ /dev/null @@ -1,2993 +0,0 @@ - -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! D V M H V E R S I O N S ! -! ! -! L U ! -! ! -!-------------------------------------------------------------------------! -!-------------------------------------------------------------------------! -!-------------------------------------------------------------------------! -! -! Authors: -! Original: -! S. Weeratunga -! V. Venkatakrishnan -! E. Barszcz -! M. Yarrow -! Optimize for DVMH: -! Kolganov A.S. -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - program ludv2 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - - include 'npbparams.h' - integer ipr_default - parameter (ipr_default = 1) - double precision omega_default - parameter (omega_default = 1.2d0) - double precision tolrsd1_def,tolrsd2_def,tolrsd3_def,tolrsd4_def,tolrsd5_def - parameter (tolrsd1_def = 1.0e-08,tolrsd2_def = 1.0e-08,tolrsd3_def = 1.0e-08,tolrsd4_def = 1.0e-08,tolrsd5_def = 1.0e-08) - double precision c1,c2,c3,c4,c5 - parameter (c1 = 1.40d+00,c2 = 0.40d+00,c3 = 1.00d-01,c4 = 1.00d+00,c5 = 1.40d+00) - -!--------------------------------------------------------------------- -! grid -!--------------------------------------------------------------------- - integer nx,ny,nz - integer nx0,ny0,nz0 - integer ist,iend - integer jst,jend - integer ii1,ii2 - integer ji1,ji2 - integer ki1,ki2 - integer stage_n - double precision dxi,deta,dzeta - double precision tx1,tx2,tx3 - double precision ty1,ty2,ty3 - double precision tz1,tz2,tz3 - common /cgcon/dxi,deta,dzeta,tx1,tx2,tx3,ty1,ty2,ty3,tz1,tz2,tz3,nx,ny,nz,nx0,ny0,nz0,ist,iend,jst,jend,ii1,ii2,ji1,ji2,ki1,ki& - &2 - -!--------------------------------------------------------------------- -! dissipation -!--------------------------------------------------------------------- - double precision dx1,dx2,dx3,dx4,dx5 - double precision dy1,dy2,dy3,dy4,dy5 - double precision dz1,dz2,dz3,dz4,dz5 - double precision dssp - common /disp/dx1,dx2,dx3,dx4,dx5,dy1,dy2,dy3,dy4,dy5,dz1,dz2,dz3,dz4,dz5,dssp - -!--------------------------------------------------------------------- -! field variables and residuals -! to improve cache performance, second two dimensions padded by 1 -! for even number sizes only. -! Note: corresponding array (called "v") in routines blts, buts, -! and l2norm are similarly padded -!--------------------------------------------------------------------- - double precision u(isiz1 / 2 * 2 + 1,isiz2 / 2 * 2 + 1,isiz3,5),rsd(isiz1 / 2 * 2 + 1,isiz2 / 2 * 2 + 1,isiz3,5),frct(isiz1 /& - & 2 * 2 + 1,isiz2 / 2 * 2 + 1,isiz3,5) - common /cvar/u,rsd,frct - -!--------------------------------------------------------------------- -! output control parameters -!--------------------------------------------------------------------- - integer ipr,inorm - common /cprcon/ipr,inorm - -!--------------------------------------------------------------------- -! newton-raphson iteration control parameters -!--------------------------------------------------------------------- - integer itmax,invert - double precision dt,omega,tolrsd(5),rsdnm(5),errnm(5),frc,ttotal - common /ctscon/dt,omega,tolrsd,rsdnm,errnm,frc,ttotal,itmax,invert - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! coefficients of the exact solution -!--------------------------------------------------------------------- - double precision ce(5,13) - common /cexact/ce - -!--------------------------------------------------------------------- -! multi-processor common blocks -!--------------------------------------------------------------------- - integer id,ndim,num,xdim,ydim,row,col - common /dim/id,ndim,num,xdim,ydim,row,col - integer north,south,east,west - common /neigh/north,south,east,west - integer from_s,from_n,from_e,from_w - parameter (from_s = 1,from_n = 2,from_e = 3,from_w = 4) - integer npmax - parameter (npmax = isiz1 + isiz2) - logical icommn(npmax + 1),icomms(npmax + 1),icomme(npmax + 1),icommw(npmax + 1) - -! double precision buf(5,2*isiz2*isiz3), -! > buf1(5,2*isiz2*isiz3) - common /comm/icommn,icomms,icomme,icommw - double precision maxtime - common /timer/maxtime - -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- - character class - logical verified - double precision mflops - character*24 print_results_142_arg9_7 - character*2 print_results_142_arg1_6 - real float_141_5 - real float_141_4 - real float_141_3 - real float_141_2 - real float_141_1 - real float_141_0 - integer fstatus - double precision max_486_8 - double precision dvtime - integer m - integer k - integer j - double precision rsd_(5) - integer i - integer jglob - integer iglob - integer k__9 - integer j__10 - integer i__11 - double precision dble_739_14 - double precision dble_739_13 - double precision dble_739_12 - double precision zeta - double precision eta - double precision xi - integer m__15 - double precision r1,r2,r3,r4,r5 - double precision dble_739_18,flux_(10),flux__(15) - double precision dble_739_17 - double precision dble_739_16 - double precision ue_ijnz(5) - double precision ue_ij1(5) - double precision ue_iny0k(5) - double precision ue_i1k(5) - double precision ue_nx0jk(5) - double precision ue_1jk(5) - double precision pzeta - double precision peta - double precision pxi - double precision zeta__19 - double precision eta__20 - double precision xi__21 - integer jglob__22 - integer iglob__23 - integer m__24 - integer k__25 - integer j__26 - integer i__27 - double precision dble_739_30 - double precision dble_739_29 - double precision dble_739_28 - double precision u51km1 - double precision u41km1 - double precision u31km1 - double precision u21km1 - double precision u51jm1 - double precision u41jm1 - double precision u31jm1 - double precision u21jm1 - double precision u51im1 - double precision u41im1 - double precision u31im1 - double precision u21im1 - double precision u51k - double precision u41k - double precision u31k - double precision u21k - double precision u51j - double precision u41j - double precision u31j - double precision u21j - double precision u51i - double precision u41i - double precision u31i - double precision u21i - double precision tmp - double precision u41 - double precision u31 - double precision u21 - double precision q - double precision zeta__31 - double precision eta__32 - double precision xi__33 - double precision dsspm - integer jend1 - integer jst1 - integer iend1 - integer ist1 - integer l2 - integer l1 - integer jglob__34 - integer iglob__35 - integer m__36 - integer k__37 - integer j__38 - integer i__39 - integer mod_1150_42 - integer mod_1150_41 - integer mod_1150_40 - double precision delunm(5) - double precision tmp__43 - integer istep - integer l - integer m__44 - integer k__45 - integer j__46 - integer i__47 - double precision u51km1__48 - double precision u41km1__49 - double precision u31km1__50 - double precision u21km1__51 - double precision u51jm1__52 - double precision u41jm1__53 - double precision u31jm1__54 - double precision u21jm1__55 - double precision u51im1__56 - double precision u41im1__57 - double precision u31im1__58 - double precision u21im1__59 - double precision u51k__60 - double precision u41k__61 - double precision u31k__62 - double precision u21k__63 - double precision u51j__64 - double precision u41j__65 - double precision u31j__66 - double precision u21j__67 - double precision u51i__68 - double precision u41i__69 - double precision u31i__70 - double precision u21i__71 - double precision tmp__72 - double precision u41__73 - double precision u31__74 - double precision u21__75 - double precision q__76 - integer jend1__77 - integer jst1__78 - integer iend1__79 - integer ist1__80 - integer l2__81 - integer l1__82 - integer m__83 - integer k__84 - integer j__85 - integer i__86 - integer v_1573_88 - integer v_1573_87 - integer m__89 - integer k__90 - integer j__91 - integer i__92 - double precision start(64) - double precision elapsed(64) - common /tt/start,elapsed - double precision t - real tarray(2) - double precision tmat(5,5) - double precision tv(5) - double precision tmp__93 - integer m__94 - integer j__95 - integer i__96 - double precision tmp3 - double precision tmp2 - double precision tmp1 - double precision tmp_3 - double precision tmp_2 - double precision tmp_1 - double precision c34 - double precision c1345 - double precision r43 - integer k__97 - double precision tmat__98(5,5) - double precision tmp__99 - integer m__100 - integer j__101 - integer i__102 - double precision tmp3__103 - double precision tmp2__104 - double precision tmp1__105 - double precision c34__106 - double precision c1345__107 - double precision r43__108 - integer k__109 - double precision now - double precision t__110 - double precision u000ijk(5) - double precision tmp__111 - integer jglob__112 - integer iglob__113 - integer m__114 - integer k__115 - integer j__116 - integer i__117 - double precision s2 - double precision s1 - double precision frc3 - double precision frc2 - double precision frc1 - integer ind2 - integer ind1 - integer jglob2 - integer jglob1 - integer jglob__118 - integer iglob2 - integer iglob1 - integer iglob__119 - integer jfin1 - integer jfin - integer jbeg - integer ifin1 - integer ifin - integer ibeg - integer k__120 - integer j__121 - integer i__122 - double precision dabs_1966_123 - integer m__124 - double precision dtref - double precision epsilon - double precision xcidif - double precision xcedif(5) - double precision xcrdif(5) - double precision xciref - double precision xceref(5) - double precision xcrref(5) - character*13 size - integer j__125 - integer touch -130 format(//' Please send the results of this run to:'// ' NPB Development Team '/ ' Internet: npb@nas.nasa& - &.gov'/ ' '/ ' If email is not available, send this to:'// ' MS T27A-1'/ ' NASA Ame& - &s Research Center'/ ' Moffett Field, CA 94035-1000'// ' Fax: 415-604-3957'//) -13 format(' Version = ', 12x, a12) -12 format(' Verification = ', 12x, a) -11 format(' Operation type = ', a24) -9 format(' Mop/s total = ',12x, f12.2) -6 format(' Time in seconds = ',12x, f12.2) -5 format(' Iterations = ', 12x, i12) -4 format(' Size = ',12x, i3,'x',i3,'x',i3) -44 format(' Size = ',12x, i12) -42 format(' Size = ',12x, a14) -3 format(' Class = ', 12x, a12) -2 format(//, ' ', A2, ' Benchmark Completed.') -2021 format(' Verification failed') -2020 format(' Verification Successful') -2023 format(' No verification performed') -2022 format(' No reference values provided') -2032 format(' ', 4x, E20.13, E20.13, E20.13) -2031 format(' FAILURE: ', 4x, E20.13, E20.13, E20.13) -2030 format(' ', 4x, E20.13) -2026 format(' Surface integral') -2025 format(' Comparison of surface integral') -2015 format(' ', i2, 2x, E20.13) -2011 format(' ', i2, 2x, E20.13, E20.13, E20.13) -2010 format(' FAILURE: ', i2, 2x, E20.13, E20.13, E20.13) -2006 format(' RMS-norms of solution error') -2062 format(' Comparison of RMS-norms of solution error') -2005 format(' RMS-norms of residual') -2061 format(' Comparison of RMS-norms of residual') -1995 format(' Unknown class') -2060 format(' DT does not match the reference value of ', E15.8) -2000 format(' Accuracy setting for epsilon = ', E20.13) -1990 format(/, ' Verification being performed for class ', a) - -! write (*,1001) frc -2058 format (//5x,'surface integral = ',1pe12.5//) - -! write (*,1002) ( errnm(m), m = 1, 5 ) -2056 format (1x/1x,'RMS-norm of error in soln. to ', 'first pde = ',1pe12.5/, 1x,'RMS-norm of error in soln. to ', 'second pde = '& - &,1pe12.5/, 1x,'RMS-norm of error in soln. to ', 'third pde = ',1pe12.5/, 1x,'RMS-norm of error in soln. to ', 'fourth pde = '& - &,1pe12.5/, 1x,'RMS-norm of error in soln. to ', 'fifth pde = ',1pe12.5) -1007 format (1x/1x,'RMS-norm of steady-state residual for ', 'first pde = ',1pe12.5/, 1x,'RMS-norm of steady-state residual for ',& - & 'second pde = ',1pe12.5/, 1x,'RMS-norm of steady-state residual for ', 'third pde = ',1pe12.5/, 1x,'RMS-norm of steady-state& - & residual for ', 'fourth pde = ',1pe12.5/, 1x,'RMS-norm of steady-state residual for ', 'fifth pde = ',1pe12.5) -1006 format (1x/1x,'RMS-norm of SSOR-iteration correction ', 'for first pde = ',1pe12.5/, 1x,'RMS-norm of SSOR-iteration correctio& - &n ', 'for second pde = ',1pe12.5/, 1x,'RMS-norm of SSOR-iteration correction ', 'for third pde = ',1pe12.5/, 1x,'RMS-norm of & - &SSOR-iteration correction ', 'for fourth pde = ',1pe12.5/, 1x,'RMS-norm of SSOR-iteration correction ', 'for fifth pde = ',1p& - &e12.5) -1004 format (1x/1x,'convergence was achieved after ',i4, ' pseudo-time steps' ) -2044 format (1x/5x,'pseudo-time SSOR iteration no.=',i4/) -200 format(' Time step ', i4) -201 format(' stage step ', E20.13, ' stage = ', i4) -2036 format (5x,'SUBDOMAIN SIZE IS TOO LARGE - ', /5x,'ADJUST PROBLEM SIZE OR NUMBER OF PROCESSORS', /5x,'SO THAT NX,& - & NY AND NZ ARE LESS THAN OR EQUAL TO ', /5x,'ISIZ1, ISIZ2 AND ISIZ3 RESPECTIVELY. THEY ARE', /5x,'CURRENTLY', 3& - &I4) -2035 format (5x,'SUBDOMAIN SIZE IS TOO SMALL - ', /5x,'ADJUST PROBLEM SIZE OR NUMBER OF PROCESSORS', /5x,'SO THAT NX,& - & NY AND NZ ARE GREATER THAN OR EQUAL', /5x,'TO 4 THEY ARE CURRENTLY', 3I3) -1003 format(' Number of processes: ', i5, /) -1002 format(' Iterations: ', i3) -1001 format(' Size: ', i3, 'x', i3, 'x', i3) -1000 format(//,' NAS Parallel Benchmarks 3.3- DVMH version', ' - LU Benchmark', /) -2002 format (5x,'PROBLEM SIZE IS TOO LARGE - ', /5x,'NX, NY AND NZ SHOULD BE EQUAL TO ', /5x,'ISIZ1, ISIZ2 AND & - &ISIZ3 RESPECTIVELY') -2001 format (5x,'PROBLEM SIZE IS TOO SMALL - ', /5x,'SET EACH OF NX, NY AND NZ AT LEAST EQUAL TO 5') -!DVM$ DISTRIBUTE ( BLOCK , BLOCK , BLOCK ,*):: rsd -!DVM$ ALIGN (i__96,j__95,k__97,m__36) WITH rsd(i__96,j__95,k__97,m__36) :: frct -!DVM$ ALIGN (i__96,j__95,k__97,m__83) WITH rsd(i__96,j__95,k__97,m__83) :: u -!DVM$ SHADOW rsd( 2:2,2:2,2:2,1:1 ) -!DVM$ SHADOW frct( 2:2,2:2,2:2,1:1 ) -!DVM$ SHADOW u( 2:2,2:2,2:2,1:1 ) - write (unit = *,fmt = 1000) - open (unit = 3,file = 'inputlu.data',status = 'old',access = 'sequential',form = 'formatted',iostat = fstatus) - if (fstatus .eq. 0) then - write (unit = *,fmt = *) ' Reading from input file inputlu.data' - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) ipr,inorm - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) itmax - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) dt - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) omega - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) tolrsd(1),tolrsd(2),tolrsd(3),tolrsd(4),tolrsd(5) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) nx0,ny0,nz0 - close (unit = 3) - else - ipr = ipr_default - inorm = inorm_default - itmax = itmax_default - dt = dt_default - omega = omega_default - tolrsd(1) = tolrsd1_def - tolrsd(2) = tolrsd2_def - tolrsd(3) = tolrsd3_def - tolrsd(4) = tolrsd4_def - tolrsd(5) = tolrsd5_def - nx0 = isiz1 - ny0 = isiz2 - nz0 = isiz3 - endif - if (nx0 .lt. 4 .or. ny0 .lt. 4 .or. nz0 .lt. 4) then - write (unit = *,fmt = 2001) - stop - endif - if (nx0 .gt. isiz1 .or. ny0 .gt. isiz2 .or. nz0 .gt. isiz3) then - write (unit = *,fmt = 2002) - stop - endif - write (unit = *,fmt = 1001) nx0,ny0,nz0 - write (unit = *,fmt = 1002) itmax - nx = nx0 - ny = ny0 - nz = nz0 - if (nx .lt. 4 .or. ny .lt. 4 .or. nz .lt. 4) then - write (unit = *,fmt = 2035) nx,ny,nz - stop - endif - if (nx .gt. isiz1 .or. ny .gt. isiz2 .or. nz .gt. isiz3) then - write (unit = *,fmt = 2036) nx,ny,nz - stop - endif - touch = 1 - ist = 2 - iend = nx - 1 - jst = 2 - jend = ny - 1 - dxi = 1.0d+00 / (nx0 - 1) - deta = 1.0d+00 / (ny0 - 1) - dzeta = 1.0d+00 / (nz0 - 1) - tx1 = 1.0d+00 / (dxi * dxi) - tx2 = 1.0d+00 / (2.0d+00 * dxi) - tx3 = 1.0d+00 / dxi - ty1 = 1.0d+00 / (deta * deta) - ty2 = 1.0d+00 / (2.0d+00 * deta) - ty3 = 1.0d+00 / deta - tz1 = 1.0d+00 / (dzeta * dzeta) - tz2 = 1.0d+00 / (2.0d+00 * dzeta) - tz3 = 1.0d+00 / dzeta - ii1 = 2 - ii2 = nx0 - 1 - ji1 = 2 - ji2 = ny0 - 2 - ki1 = 3 - ki2 = nz0 - 1 - dx1 = 0.75d+00 - dx2 = dx1 - dx3 = dx1 - dx4 = dx1 - dx5 = dx1 - dy1 = 0.75d+00 - dy2 = dy1 - dy3 = dy1 - dy4 = dy1 - dy5 = dy1 - dz1 = 1.00d+00 - dz2 = dz1 - dz3 = dz1 - dz4 = dz1 - dz5 = dz1 - max_486_8 = max (dx1,dy1,dz1) - dssp = max_486_8 / 4.0d+00 -10001 ce(1,1) = 2.0d+00 - ce(1,2) = 0.0d+00 - ce(1,3) = 0.0d+00 - ce(1,4) = 4.0d+00 - ce(1,5) = 5.0d+00 - ce(1,6) = 3.0d+00 - ce(1,7) = 5.0d-01 - ce(1,8) = 2.0d-02 - ce(1,9) = 1.0d-02 - ce(1,10) = 3.0d-02 - ce(1,11) = 5.0d-01 - ce(1,12) = 4.0d-01 - ce(1,13) = 3.0d-01 - ce(2,1) = 1.0d+00 - ce(2,2) = 0.0d+00 - ce(2,3) = 0.0d+00 - ce(2,4) = 0.0d+00 - ce(2,5) = 1.0d+00 - ce(2,6) = 2.0d+00 - ce(2,7) = 3.0d+00 - ce(2,8) = 1.0d-02 - ce(2,9) = 3.0d-02 - ce(2,10) = 2.0d-02 - ce(2,11) = 4.0d-01 - ce(2,12) = 3.0d-01 - ce(2,13) = 5.0d-01 - ce(3,1) = 2.0d+00 - ce(3,2) = 2.0d+00 - ce(3,3) = 0.0d+00 - ce(3,4) = 0.0d+00 - ce(3,5) = 0.0d+00 - ce(3,6) = 2.0d+00 - ce(3,7) = 3.0d+00 - ce(3,8) = 4.0d-02 - ce(3,9) = 3.0d-02 - ce(3,10) = 5.0d-02 - ce(3,11) = 3.0d-01 - ce(3,12) = 5.0d-01 - ce(3,13) = 4.0d-01 - ce(4,1) = 2.0d+00 - ce(4,2) = 2.0d+00 - ce(4,3) = 0.0d+00 - ce(4,4) = 0.0d+00 - ce(4,5) = 0.0d+00 - ce(4,6) = 2.0d+00 - ce(4,7) = 3.0d+00 - ce(4,8) = 3.0d-02 - ce(4,9) = 5.0d-02 - ce(4,10) = 4.0d-02 - ce(4,11) = 2.0d-01 - ce(4,12) = 1.0d-01 - ce(4,13) = 3.0d-01 - ce(5,1) = 5.0d+00 - ce(5,2) = 4.0d+00 - ce(5,3) = 3.0d+00 - ce(5,4) = 2.0d+00 - ce(5,5) = 1.0d-01 - ce(5,6) = 4.0d-01 - ce(5,7) = 3.0d-01 - ce(5,8) = 5.0d-02 - ce(5,9) = 4.0d-02 - ce(5,10) = 3.0d-02 - ce(5,11) = 1.0d-01 - ce(5,12) = 3.0d-01 - ce(5,13) = 2.0d-01 -!DVM$ REGION -!DVM$ PARALLEL (k,j,i) ON u(i,j,k,*),PRIVATE (m) - do k = 1,isiz3 - do j = 1,isiz2 / 2 * 2 + 1 - do i = 1,isiz1 / 2 * 2 + 1 - do m = 1,5 - u(i,j,k,m) = 0.d0 - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,jglob,iglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zet& -!DVM$&a) - do k__9 = 1,1 - do j__10 = 1,ny - do i__11 = 1,nx - jglob = j__10 - iglob = i__11 - dble_739_12 = dble (iglob - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (1 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,jglob,iglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zet& -!DVM$&a) - do k__9 = nz,nz - do j__10 = 1,ny - do i__11 = 1,nx - jglob = j__10 - iglob = i__11 - dble_739_12 = dble (iglob - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (nz - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,iglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zeta) - do k__9 = 1,nz - do j__10 = 1,1 - do i__11 = 1,nx - iglob = i__11 - dble_739_12 = dble (iglob - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (1 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__9 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,iglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zeta) - do k__9 = 1,nz - do j__10 = ny,ny - do i__11 = 1,nx - iglob = i__11 - dble_739_12 = dble (iglob - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (ny0 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__9 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,jglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zeta) - do k__9 = 1,nz - do j__10 = 1,ny - do i__11 = 1,1 - jglob = j__10 - dble_739_12 = dble (1 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__9 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__9,j__10,i__11) ON u(i__11,j__10,k__9,*),PRIVATE (m__15,jglob,dble_739_12,dble_739_13,dble_739_14,xi,eta,zeta) - do k__9 = 1,nz - do j__10 = 1,ny - do i__11 = nx,nx - jglob = j__10 - dble_739_12 = dble (nx0 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__9 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u(i__11,j__10,k__9,m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) & - &* xi * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta +& - & ce(m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * & - &zeta * zeta * zeta * zeta - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__25,j__26,i__27) ON u(i__27,j__26,k__25,*),PRIVATE (m__24,m__15,ue_ij1,ue_iny0k,ue_i1k,ue_nx0jk,ue_1jk,ue_ijnz,eta& -!DVM$&__20,pxi,peta,pzeta,xi__21,zeta__19,iglob__23,jglob__22,dble_739_16,dble_739_17,dble_739_18,dble_739_12,dble_739_13,dble_739_1& -!DVM$&4,xi,eta,zeta) - do k__25 = 2,nz - 1 - do j__26 = 1,ny - do i__27 = 1,nx - jglob__22 = j__26 - dble_739_16 = dble (k__25 - 1) - zeta__19 = dble_739_16 / (nz - 1) - if (jglob__22 .ne. 1 .and. jglob__22 .ne. ny0) then - dble_739_17 = dble (jglob__22 - 1) - eta__20 = dble_739_17 / (ny0 - 1) - iglob__23 = i__27 - if (iglob__23 .ne. 1 .and. iglob__23 .ne. nx0) then - dble_739_18 = dble (iglob__23 - 1) - xi__21 = dble_739_18 / (nx0 - 1) - dble_739_12 = dble (1 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob__22 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__25 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_1jk(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi *& - & xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(m_& - &_15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta *& - & zeta * zeta * zeta - enddo - dble_739_12 = dble (nx0 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob__22 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__25 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_nx0jk(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi& - & * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(& - &m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta& - & * zeta * zeta * zeta - enddo - dble_739_12 = dble (iglob__23 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (1 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__25 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_i1k(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi *& - & xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(m_& - &_15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta *& - & zeta * zeta * zeta - enddo - dble_739_12 = dble (iglob__23 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (ny0 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__25 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_iny0k(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi& - & * xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(& - &m__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta& - & * zeta * zeta * zeta - enddo - dble_739_12 = dble (iglob__23 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob__22 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (1 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_ij1(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi *& - & xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(m_& - &_15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta *& - & zeta * zeta * zeta - enddo - dble_739_12 = dble (iglob__23 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob__22 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (nz - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - ue_ijnz(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi & - &* xi + ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(m& - &__15,10) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta & - &* zeta * zeta * zeta - enddo - do m__24 = 1,5 - pxi = (1.0d+00 - xi__21) * ue_1jk(m__24) + xi__21 * ue_nx0jk(m__24) - peta = (1.0d+00 - eta__20) * ue_i1k(m__24) + eta__20 * ue_iny0k(m__24) - pzeta = (1.0d+00 - zeta__19) * ue_ij1(m__24) + zeta__19 * ue_ijnz(m__24) - u(i__27,j__26,k__25,m__24) = pxi + peta + pzeta - pxi * peta - peta * pzeta - pzeta * pxi + pxi * peta * pze& - &ta - enddo - endif - endif - enddo - enddo - enddo -!DVM$ END REGION - dsspm = dssp -!DVM$ REGION -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 1,nz - do j__38 = 1,ny - do i__39 = 1,nx - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = 0.0d+00 - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON rsd(i__39,j__38,k__37,*),PRIVATE (jglob__34,iglob__35,dble_739_28,dble_739_29,dble_739_30,eta_& -!DVM$&_32,zeta__31,xi__33,m__36) - do k__37 = 1,nz - do j__38 = 1,ny - do i__39 = 1,nx - jglob__34 = j__38 - dble_739_28 = dble (jglob__34 - 1) - eta__32 = dble_739_28 / (ny0 - 1) - dble_739_29 = dble (k__37 - 1) - zeta__31 = dble_739_29 / (nz - 1) - iglob__35 = i__39 - dble_739_30 = dble (iglob__35 - 1) - xi__33 = dble_739_30 / (nx0 - 1) - do m__36 = 1,5 - rsd(i__39,j__38,k__37,m__36) = ce(m__36,1) + ce(m__36,2) * xi__33 + ce(m__36,3) * eta__32 + ce(m__36,4) * zeta__31& - & + ce(m__36,5) * xi__33 * xi__33 + ce(m__36,6) * eta__32 * eta__32 + ce(m__36,7) * zeta__31 * zeta__31 + ce(m__36,8) * xi__33 & - &* xi__33 * xi__33 + ce(m__36,9) * eta__32 * eta__32 * eta__32 + ce(m__36,10) * zeta__31 * zeta__31 * zeta__31 + ce(m__36,11) *& - & xi__33 * xi__33 * xi__33 * xi__33 + ce(m__36,12) * eta__32 * eta__32 * eta__32 * eta__32 + ce(m__36,13) * zeta__31 * zeta__31& - & * zeta__31 * zeta__31 - enddo - enddo - enddo - enddo -!DVM$ END REGION - l1 = 1 - l2 = nx -!DVM$ REGION -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36,flux_,u21,q),SHADOW_RENEW (rsd(1:1,0:0,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - flux_(1) = rsd(i__39 + 1,j__38,k__37,2) - u21 = rsd(i__39 + 1,j__38,k__37,2) / rsd(i__39 + 1,j__38,k__37,1) - q = 0.50d+00 * (rsd(i__39 + 1,j__38,k__37,2) * rsd(i__39 + 1,j__38,k__37,2) + rsd(i__39 + 1,j__38,k__37,3) * rsd(i__3& - &9 + 1,j__38,k__37,3) + rsd(i__39 + 1,j__38,k__37,4) * rsd(i__39 + 1,j__38,k__37,4)) / rsd(i__39 + 1,j__38,k__37,1) - flux_(2) = rsd(i__39 + 1,j__38,k__37,2) * u21 + c2 * (rsd(i__39 + 1,j__38,k__37,5) - q) - flux_(3) = rsd(i__39 + 1,j__38,k__37,3) * u21 - flux_(4) = rsd(i__39 + 1,j__38,k__37,4) * u21 - flux_(5) = (c1 * rsd(i__39 + 1,j__38,k__37,5) - c2 * q) * u21 - flux_(6) = rsd(i__39 - 1,j__38,k__37,2) - u21 = rsd(i__39 - 1,j__38,k__37,2) / rsd(i__39 - 1,j__38,k__37,1) - q = 0.50d+00 * (rsd(i__39 - 1,j__38,k__37,2) * rsd(i__39 - 1,j__38,k__37,2) + rsd(i__39 - 1,j__38,k__37,3) * rsd(i__3& - &9 - 1,j__38,k__37,3) + rsd(i__39 - 1,j__38,k__37,4) * rsd(i__39 - 1,j__38,k__37,4)) / rsd(i__39 - 1,j__38,k__37,1) - flux_(7) = rsd(i__39 - 1,j__38,k__37,2) * u21 + c2 * (rsd(i__39 - 1,j__38,k__37,5) - q) - flux_(8) = rsd(i__39 - 1,j__38,k__37,3) * u21 - flux_(9) = rsd(i__39 - 1,j__38,k__37,4) * u21 - flux_(10) = (c1 * rsd(i__39 - 1,j__38,k__37,5) - c2 * q) * u21 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - tx2 * (flux_(m__36) - flux_(m__36 + 5)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (tmp,u21i,u31i,u41i,u51i,u21im1,u31im1,u41im1,u51im1,flux_),& -!DVM$&SHADOW_RENEW (rsd(2:2,0:0,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21i = tmp * rsd(i__39,j__38,k__37,2) - u31i = tmp * rsd(i__39,j__38,k__37,3) - u41i = tmp * rsd(i__39,j__38,k__37,4) - u51i = tmp * rsd(i__39,j__38,k__37,5) - tmp = 1.0d+00 / rsd(i__39 - 1,j__38,k__37,1) - u21im1 = tmp * rsd(i__39 - 1,j__38,k__37,2) - u31im1 = tmp * rsd(i__39 - 1,j__38,k__37,3) - u41im1 = tmp * rsd(i__39 - 1,j__38,k__37,4) - u51im1 = tmp * rsd(i__39 - 1,j__38,k__37,5) - flux_(2) = 4.0d+00 / 3.0d+00 * tx3 * (u21i - u21im1) - flux_(3) = tx3 * (u31i - u31im1) - flux_(4) = tx3 * (u41i - u41im1) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i** 2 + u31i** 2 + u41i** 2 - (u21im1** 2 + u31im1** 2 + u41im1& - &** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i** 2 - u21im1** 2) + c1 * c5 * tx3 * (u51i - u51im1) - tmp = 1.0d+00 / rsd(i__39 + 1,j__38,k__37,1) - u21i = tmp * rsd(i__39 + 1,j__38,k__37,2) - u31i = tmp * rsd(i__39 + 1,j__38,k__37,3) - u41i = tmp * rsd(i__39 + 1,j__38,k__37,4) - u51i = tmp * rsd(i__39 + 1,j__38,k__37,5) - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21im1 = tmp * rsd(i__39,j__38,k__37,2) - u31im1 = tmp * rsd(i__39,j__38,k__37,3) - u41im1 = tmp * rsd(i__39,j__38,k__37,4) - u51im1 = tmp * rsd(i__39,j__38,k__37,5) - flux_(5 + 2) = 4.0d+00 / 3.0d+00 * tx3 * (u21i - u21im1) - flux_(5 + 3) = tx3 * (u31i - u31im1) - flux_(5 + 4) = tx3 * (u41i - u41im1) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i** 2 + u31i** 2 + u41i** 2 - (u21im1** 2 + u31im1** 2 + u4& - &1im1** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i** 2 - u21im1** 2) + c1 * c5 * tx3 * (u51i - u51im1) - frct(i__39,j__38,k__37,1) = frct(i__39,j__38,k__37,1) + dx1 * tx1 * (rsd(i__39 - 1,j__38,k__37,1) - 2.0d+00 * rsd(i__& - &39,j__38,k__37,1) + rsd(i__39 + 1,j__38,k__37,1)) - frct(i__39,j__38,k__37,2) = frct(i__39,j__38,k__37,2) + tx3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dx2 * tx1 * (rsd(& - &i__39 - 1,j__38,k__37,2) - 2.0d+00 * rsd(i__39,j__38,k__37,2) + rsd(i__39 + 1,j__38,k__37,2)) - frct(i__39,j__38,k__37,3) = frct(i__39,j__38,k__37,3) + tx3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dx3 * tx1 * (rsd(& - &i__39 - 1,j__38,k__37,3) - 2.0d+00 * rsd(i__39,j__38,k__37,3) + rsd(i__39 + 1,j__38,k__37,3)) - frct(i__39,j__38,k__37,4) = frct(i__39,j__38,k__37,4) + tx3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dx4 * tx1 * (rsd(& - &i__39 - 1,j__38,k__37,4) - 2.0d+00 * rsd(i__39,j__38,k__37,4) + rsd(i__39 + 1,j__38,k__37,4)) - frct(i__39,j__38,k__37,5) = frct(i__39,j__38,k__37,5) + tx3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dx5 * tx1 * (rsd(& - &i__39 - 1,j__38,k__37,5) - 2.0d+00 * rsd(i__39,j__38,k__37,5) + rsd(i__39 + 1,j__38,k__37,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = 2,2 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((+(5.0d+00)) * rsd(i__39,j__38,k__37,m__3& - &6) - 4.0d+00 * rsd(i__39 + 1,j__38,k__37,m__36) + rsd(i__39 + 2,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = 3,3 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((-(4.0d+00)) * rsd(i__39 - 1,j__38,k__37,& - &m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39 + 1,j__38,k__37,m__36) + rsd(i__39 + 2,j__38,k__37,m__36& - &)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - ist1 = 4 - iend1 = nx - 3 -!DVM$ REGION -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist1,iend1 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39 - 2,j__38,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39 - 1,j__38,k__37,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39 + 1,j__38,k__37,m__36) + r& - &sd(i__39 + 2,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = nx - 2,nx - 2 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39 - 2,j__38,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39 - 1,j__38,k__37,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39 + 1,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = nx - 1,nx - 1 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39 - 2,j__38,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39 - 1,j__38,k__37,m__36) + 5.0d+00 * rsd(i__39,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - l1 = 1 - l2 = ny -!DVM$ REGION -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),SHADOW_RENEW (rsd(0:0,1:1,0:0,0:0)),PRIVATE (m__36,u31,q,flux_) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - flux_(1) = rsd(i__39,j__38 + 1,k__37,3) - u31 = rsd(i__39,j__38 + 1,k__37,3) / rsd(i__39,j__38 + 1,k__37,1) - q = 0.50d+00 * (rsd(i__39,j__38 + 1,k__37,2) * rsd(i__39,j__38 + 1,k__37,2) + rsd(i__39,j__38 + 1,k__37,3) * rsd(i__3& - &9,j__38 + 1,k__37,3) + rsd(i__39,j__38 + 1,k__37,4) * rsd(i__39,j__38 + 1,k__37,4)) / rsd(i__39,j__38 + 1,k__37,1) - flux_(2) = rsd(i__39,j__38 + 1,k__37,2) * u31 - flux_(3) = rsd(i__39,j__38 + 1,k__37,3) * u31 + c2 * (rsd(i__39,j__38 + 1,k__37,5) - q) - flux_(4) = rsd(i__39,j__38 + 1,k__37,4) * u31 - flux_(5) = (c1 * rsd(i__39,j__38 + 1,k__37,5) - c2 * q) * u31 - flux_(6) = rsd(i__39,j__38 - 1,k__37,3) - u31 = rsd(i__39,j__38 - 1,k__37,3) / rsd(i__39,j__38 - 1,k__37,1) - q = 0.50d+00 * (rsd(i__39,j__38 - 1,k__37,2) * rsd(i__39,j__38 - 1,k__37,2) + rsd(i__39,j__38 - 1,k__37,3) * rsd(i__3& - &9,j__38 - 1,k__37,3) + rsd(i__39,j__38 - 1,k__37,4) * rsd(i__39,j__38 - 1,k__37,4)) / rsd(i__39,j__38 - 1,k__37,1) - flux_(7) = rsd(i__39,j__38 - 1,k__37,2) * u31 - flux_(8) = rsd(i__39,j__38 - 1,k__37,3) * u31 + c2 * (rsd(i__39,j__38 - 1,k__37,5) - q) - flux_(9) = rsd(i__39,j__38 - 1,k__37,4) * u31 - flux_(10) = (c1 * rsd(i__39,j__38 - 1,k__37,5) - c2 * q) * u31 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - ty2 * (flux_(m__36) - flux_(5 + m__36)) - enddo - enddo - enddo - enddo - -!shadow renew all dimentions of rsd -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (tmp,u21j,u31j,u41j,u51j,u21jm1,u31jm1,u41jm1,u51jm1,flux_),& -!DVM$&SHADOW_RENEW (rsd(0:0,2:2,2:2,0:0)) - -!SHADOW_RENEW (rsd(0:0,1:1,0:0,0:0) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21j = tmp * rsd(i__39,j__38,k__37,2) - u31j = tmp * rsd(i__39,j__38,k__37,3) - u41j = tmp * rsd(i__39,j__38,k__37,4) - u51j = tmp * rsd(i__39,j__38,k__37,5) - tmp = 1.0d+00 / rsd(i__39,j__38 - 1,k__37,1) - u21jm1 = tmp * rsd(i__39,j__38 - 1,k__37,2) - u31jm1 = tmp * rsd(i__39,j__38 - 1,k__37,3) - u41jm1 = tmp * rsd(i__39,j__38 - 1,k__37,4) - u51jm1 = tmp * rsd(i__39,j__38 - 1,k__37,5) - flux_(2) = ty3 * (u21j - u21jm1) - flux_(3) = 4.0d+00 / 3.0d+00 * ty3 * (u31j - u31jm1) - flux_(4) = ty3 * (u41j - u41jm1) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j** 2 + u31j** 2 + u41j** 2 - (u21jm1** 2 + u31jm1** 2 + u41jm1& - &** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j** 2 - u31jm1** 2) + c1 * c5 * ty3 * (u51j - u51jm1) - tmp = 1.0d+00 / rsd(i__39,j__38 + 1,k__37,1) - u21j = tmp * rsd(i__39,j__38 + 1,k__37,2) - u31j = tmp * rsd(i__39,j__38 + 1,k__37,3) - u41j = tmp * rsd(i__39,j__38 + 1,k__37,4) - u51j = tmp * rsd(i__39,j__38 + 1,k__37,5) - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21jm1 = tmp * rsd(i__39,j__38,k__37,2) - u31jm1 = tmp * rsd(i__39,j__38,k__37,3) - u41jm1 = tmp * rsd(i__39,j__38,k__37,4) - u51jm1 = tmp * rsd(i__39,j__38,k__37,5) - flux_(5 + 2) = ty3 * (u21j - u21jm1) - flux_(5 + 3) = 4.0d+00 / 3.0d+00 * ty3 * (u31j - u31jm1) - flux_(5 + 4) = ty3 * (u41j - u41jm1) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j** 2 + u31j** 2 + u41j** 2 - (u21jm1** 2 + u31jm1** 2 + u4& - &1jm1** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j** 2 - u31jm1** 2) + c1 * c5 * ty3 * (u51j - u51jm1) - frct(i__39,j__38,k__37,1) = frct(i__39,j__38,k__37,1) + dy1 * ty1 * (rsd(i__39,j__38 - 1,k__37,1) - 2.0d+00 * rsd(i__& - &39,j__38,k__37,1) + rsd(i__39,j__38 + 1,k__37,1)) - frct(i__39,j__38,k__37,2) = frct(i__39,j__38,k__37,2) + ty3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dy2 * ty1 * (rsd(& - &i__39,j__38 - 1,k__37,2) - 2.0d+00 * rsd(i__39,j__38,k__37,2) + rsd(i__39,j__38 + 1,k__37,2)) - frct(i__39,j__38,k__37,3) = frct(i__39,j__38,k__37,3) + ty3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dy3 * ty1 * (rsd(& - &i__39,j__38 - 1,k__37,3) - 2.0d+00 * rsd(i__39,j__38,k__37,3) + rsd(i__39,j__38 + 1,k__37,3)) - frct(i__39,j__38,k__37,4) = frct(i__39,j__38,k__37,4) + ty3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dy4 * ty1 * (rsd(& - &i__39,j__38 - 1,k__37,4) - 2.0d+00 * rsd(i__39,j__38,k__37,4) + rsd(i__39,j__38 + 1,k__37,4)) - frct(i__39,j__38,k__37,5) = frct(i__39,j__38,k__37,5) + ty3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dy5 * ty1 * (rsd(& - &i__39,j__38 - 1,k__37,5) - 2.0d+00 * rsd(i__39,j__38,k__37,5) + rsd(i__39,j__38 + 1,k__37,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!SHADOW_RENEW (rsd(0:0,0:2,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = 2,2 - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((+(5.0d+00)) * rsd(i__39,j__38,k__37,m__3& - &6) - 4.0d+00 * rsd(i__39,j__38 + 1,k__37,m__36) + rsd(i__39,j__38 + 2,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!SHADOW_RENEW (rsd(0:0,1:2,0:0,0:0)), - do k__37 = 2,nz - 1 - do j__38 = 3,3 - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((-(4.0d+00)) * rsd(i__39,j__38 - 1,k__37,& - &m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38 + 1,k__37,m__36) + rsd(i__39,j__38 + 2,k__37,m__36& - &)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - jst1 = 4 - jend1 = ny - 3 -!DVM$ REGION -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!SHADOW_RENEW (rsd(0:0,2:2,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = jst1,jend1 - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38 - 2,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38 - 1,k__37,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38 + 1,k__37,m__36) + r& - &sd(i__39,j__38 + 2,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!SHADOW_RENEW (rsd(0:0,2:1,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = ny - 2,ny - 2 - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38 - 2,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38 - 1,k__37,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38 + 1,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!SHADOW_RENEW (rsd(0:0,2:0,0:0,0:0)) - do k__37 = 2,nz - 1 - do j__38 = ny - 1,ny - 1 - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38 - 2,k__37,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38 - 1,k__37,m__36) + 5.0d+00 * rsd(i__39,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36,u41,q,flux_) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - flux_(1) = rsd(i__39,j__38,k__37 + 1,4) - u41 = rsd(i__39,j__38,k__37 + 1,4) / rsd(i__39,j__38,k__37 + 1,1) - q = 0.50d+00 * (rsd(i__39,j__38,k__37 + 1,2) * rsd(i__39,j__38,k__37 + 1,2) + rsd(i__39,j__38,k__37 + 1,3) * rsd(i__3& - &9,j__38,k__37 + 1,3) + rsd(i__39,j__38,k__37 + 1,4) * rsd(i__39,j__38,k__37 + 1,4)) / rsd(i__39,j__38,k__37 + 1,1) - flux_(2) = rsd(i__39,j__38,k__37 + 1,2) * u41 - flux_(3) = rsd(i__39,j__38,k__37 + 1,3) * u41 - flux_(4) = rsd(i__39,j__38,k__37 + 1,4) * u41 + c2 * (rsd(i__39,j__38,k__37 + 1,5) - q) - flux_(5) = (c1 * rsd(i__39,j__38,k__37 + 1,5) - c2 * q) * u41 - flux_(6) = rsd(i__39,j__38,k__37 - 1,4) - u41 = rsd(i__39,j__38,k__37 - 1,4) / rsd(i__39,j__38,k__37 - 1,1) - q = 0.50d+00 * (rsd(i__39,j__38,k__37 - 1,2) * rsd(i__39,j__38,k__37 - 1,2) + rsd(i__39,j__38,k__37 - 1,3) * rsd(i__3& - &9,j__38,k__37 - 1,3) + rsd(i__39,j__38,k__37 - 1,4) * rsd(i__39,j__38,k__37 - 1,4)) / rsd(i__39,j__38,k__37 - 1,1) - flux_(7) = rsd(i__39,j__38,k__37 - 1,2) * u41 - flux_(8) = rsd(i__39,j__38,k__37 - 1,3) * u41 - flux_(9) = rsd(i__39,j__38,k__37 - 1,4) * u41 + c2 * (rsd(i__39,j__38,k__37 - 1,5) - q) - flux_(10) = (c1 * rsd(i__39,j__38,k__37 - 1,5) - c2 * q) * u41 - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - tz2 * (flux_(m__36) - flux_(5 + m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (tmp,u21k,u31k,u41k,u51k,u21km1,u31km1,u41km1,u51km1,flux_) - -!SHADOW_RENEW (rsd(0:0,0:0,1:1,0:0)) - do k__37 = 2,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21k = tmp * rsd(i__39,j__38,k__37,2) - u31k = tmp * rsd(i__39,j__38,k__37,3) - u41k = tmp * rsd(i__39,j__38,k__37,4) - u51k = tmp * rsd(i__39,j__38,k__37,5) - tmp = 1.0d+00 / rsd(i__39,j__38,k__37 - 1,1) - u21km1 = tmp * rsd(i__39,j__38,k__37 - 1,2) - u31km1 = tmp * rsd(i__39,j__38,k__37 - 1,3) - u41km1 = tmp * rsd(i__39,j__38,k__37 - 1,4) - u51km1 = tmp * rsd(i__39,j__38,k__37 - 1,5) - flux_(2) = tz3 * (u21k - u21km1) - flux_(3) = tz3 * (u31k - u31km1) - flux_(4) = 4.0d+00 / 3.0d+00 * tz3 * (u41k - u41km1) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k** 2 + u31k** 2 + u41k** 2 - (u21km1** 2 + u31km1** 2 + u41km1& - &** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k** 2 - u41km1** 2) + c1 * c5 * tz3 * (u51k - u51km1) - tmp = 1.0d+00 / rsd(i__39,j__38,k__37 + 1,1) - u21k = tmp * rsd(i__39,j__38,k__37 + 1,2) - u31k = tmp * rsd(i__39,j__38,k__37 + 1,3) - u41k = tmp * rsd(i__39,j__38,k__37 + 1,4) - u51k = tmp * rsd(i__39,j__38,k__37 + 1,5) - tmp = 1.0d+00 / rsd(i__39,j__38,k__37,1) - u21km1 = tmp * rsd(i__39,j__38,k__37,2) - u31km1 = tmp * rsd(i__39,j__38,k__37,3) - u41km1 = tmp * rsd(i__39,j__38,k__37,4) - u51km1 = tmp * rsd(i__39,j__38,k__37,5) - flux_(5 + 2) = tz3 * (u21k - u21km1) - flux_(5 + 3) = tz3 * (u31k - u31km1) - flux_(5 + 4) = 4.0d+00 / 3.0d+00 * tz3 * (u41k - u41km1) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k** 2 + u31k** 2 + u41k** 2 - (u21km1** 2 + u31km1** 2 + u4& - &1km1** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k** 2 - u41km1** 2) + c1 * c5 * tz3 * (u51k - u51km1) - frct(i__39,j__38,k__37,1) = frct(i__39,j__38,k__37,1) + dz1 * tz1 * (rsd(i__39,j__38,k__37 + 1,1) - 2.0d+00 * rsd(i__& - &39,j__38,k__37,1) + rsd(i__39,j__38,k__37 - 1,1)) - frct(i__39,j__38,k__37,2) = frct(i__39,j__38,k__37,2) + tz3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dz2 * tz1 * (rsd(& - &i__39,j__38,k__37 + 1,2) - 2.0d+00 * rsd(i__39,j__38,k__37,2) + rsd(i__39,j__38,k__37 - 1,2)) - frct(i__39,j__38,k__37,3) = frct(i__39,j__38,k__37,3) + tz3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dz3 * tz1 * (rsd(& - &i__39,j__38,k__37 + 1,3) - 2.0d+00 * rsd(i__39,j__38,k__37,3) + rsd(i__39,j__38,k__37 - 1,3)) - frct(i__39,j__38,k__37,4) = frct(i__39,j__38,k__37,4) + tz3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dz4 * tz1 * (rsd(& - &i__39,j__38,k__37 + 1,4) - 2.0d+00 * rsd(i__39,j__38,k__37,4) + rsd(i__39,j__38,k__37 - 1,4)) - frct(i__39,j__38,k__37,5) = frct(i__39,j__38,k__37,5) + tz3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dz5 * tz1 * (rsd(& - &i__39,j__38,k__37 + 1,5) - 2.0d+00 * rsd(i__39,j__38,k__37,5) + rsd(i__39,j__38,k__37 - 1,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!, SHADOW_RENEW (rsd(0:0,0:0,0:2,0:0)) - do k__37 = 2,2 - do j__38 = jst,jend - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((+(5.0d+00)) * rsd(i__39,j__38,k__37,m__3& - &6) - 4.0d+00 * rsd(i__39,j__38,k__37 + 1,m__36) + rsd(i__39,j__38,k__37 + 2,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!, SHADOW_RENEW (rsd(0:0,0:0,1:2,0:0)) - do k__37 = 3,3 - do j__38 = jst,jend - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * ((-(4.0d+00)) * rsd(i__39,j__38,k__37 - 1,& - &m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38,k__37 + 1,m__36) + rsd(i__39,j__38,k__37 + 2,m__36& - &)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!, SHADOW_RENEW (rsd(0:0,0:0,2:2,0:0)) - do k__37 = 4,nz - 3 - do j__38 = jst,jend - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38,k__37 - 2,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38,k__37 - 1,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38,k__37 + 1,m__36) + r& - &sd(i__39,j__38,k__37 + 2,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!, SHADOW_RENEW (rsd(0:0,0:0,2:1,0:0)) - do k__37 = nz - 2,nz - 2 - do j__38 = jst,jend - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38,k__37 - 2,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38,k__37 - 1,m__36) + 6.0d+00 * rsd(i__39,j__38,k__37,m__36) - 4.0d+00 * rsd(i__39,j__38,k__37 + 1,m__36)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__37,j__38,i__39) ON frct(i__39,j__38,k__37,*),PRIVATE (m__36) - -!, SHADOW_RENEW (rsd(0:0,0:0,2:0,0:0)) - do k__37 = nz - 1,nz - 1 - do j__38 = jst,jend - do i__39 = ist,iend - do m__36 = 1,5 - frct(i__39,j__38,k__37,m__36) = frct(i__39,j__38,k__37,m__36) - dsspm * (rsd(i__39,j__38,k__37 - 2,m__36) - 4.0d+0& - &0 * rsd(i__39,j__38,k__37 - 1,m__36) + 5.0d+00 * rsd(i__39,j__38,k__37,m__36)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - tmp__43 = 1.0d+00 / (omega * (2.0d+00 - omega)) -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 1,nz - do j__85 = 1,ny - do i__86 = 1,nx - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = (-(frct(i__86,j__85,k__84,m__83))) - enddo - enddo - enddo - enddo -!DVM$ END REGION - l1__82 = 1 - l2__81 = nx -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83,u21__75,q__76,flux_),SHADOW_RENEW (u(1:1,0:0,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - flux_(1) = u(i__86 + 1,j__85,k__84,2) - u21__75 = u(i__86 + 1,j__85,k__84,2) / u(i__86 + 1,j__85,k__84,1) - q__76 = 0.50d+00 * (u(i__86 + 1,j__85,k__84,2) * u(i__86 + 1,j__85,k__84,2) + u(i__86 + 1,j__85,k__84,3) * u(i__86 + & - &1,j__85,k__84,3) + u(i__86 + 1,j__85,k__84,4) * u(i__86 + 1,j__85,k__84,4)) / u(i__86 + 1,j__85,k__84,1) - flux_(2) = u(i__86 + 1,j__85,k__84,2) * u21__75 + c2 * (u(i__86 + 1,j__85,k__84,5) - q__76) - flux_(3) = u(i__86 + 1,j__85,k__84,3) * u21__75 - flux_(4) = u(i__86 + 1,j__85,k__84,4) * u21__75 - flux_(5) = (c1 * u(i__86 + 1,j__85,k__84,5) - c2 * q__76) * u21__75 - flux_(6) = u(i__86 - 1,j__85,k__84,2) - u21__75 = u(i__86 - 1,j__85,k__84,2) / u(i__86 - 1,j__85,k__84,1) - q__76 = 0.50d+00 * (u(i__86 - 1,j__85,k__84,2) * u(i__86 - 1,j__85,k__84,2) + u(i__86 - 1,j__85,k__84,3) * u(i__86 - & - &1,j__85,k__84,3) + u(i__86 - 1,j__85,k__84,4) * u(i__86 - 1,j__85,k__84,4)) / u(i__86 - 1,j__85,k__84,1) - flux_(7) = u(i__86 - 1,j__85,k__84,2) * u21__75 + c2 * (u(i__86 - 1,j__85,k__84,5) - q__76) - flux_(8) = u(i__86 - 1,j__85,k__84,3) * u21__75 - flux_(9) = u(i__86 - 1,j__85,k__84,4) * u21__75 - flux_(10) = (c1 * u(i__86 - 1,j__85,k__84,5) - c2 * q__76) * u21__75 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - tx2 * (flux_(m__83) - flux_(5 + m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (u21i__71,u31i__70,u41i__69,u51i__68,tmp__72,u21im1__59,u31im& -!DVM$&1__58,u41im1__57,u51im1__56,flux_),SHADOW_RENEW (u(2:2,0:0,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21i__71 = tmp__72 * u(i__86,j__85,k__84,2) - u31i__70 = tmp__72 * u(i__86,j__85,k__84,3) - u41i__69 = tmp__72 * u(i__86,j__85,k__84,4) - u51i__68 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86 - 1,j__85,k__84,1) - u21im1__59 = tmp__72 * u(i__86 - 1,j__85,k__84,2) - u31im1__58 = tmp__72 * u(i__86 - 1,j__85,k__84,3) - u41im1__57 = tmp__72 * u(i__86 - 1,j__85,k__84,4) - u51im1__56 = tmp__72 * u(i__86 - 1,j__85,k__84,5) - flux_(2) = 4.0d+00 / 3.0d+00 * tx3 * (u21i__71 - u21im1__59) - flux_(3) = tx3 * (u31i__70 - u31im1__58) - flux_(4) = tx3 * (u41i__69 - u41im1__57) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i__71** 2 + u31i__70** 2 + u41i__69** 2 - (u21im1__59** 2 + u31& - &im1__58** 2 + u41im1__57** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i__71** 2 - u21im1__59** 2) + c1 * c5 * tx3 * (u51i__68 - u51im& - &1__56) - tmp__72 = 1.0d+00 / u(i__86 + 1,j__85,k__84,1) - u21i__71 = tmp__72 * u(i__86 + 1,j__85,k__84,2) - u31i__70 = tmp__72 * u(i__86 + 1,j__85,k__84,3) - u41i__69 = tmp__72 * u(i__86 + 1,j__85,k__84,4) - u51i__68 = tmp__72 * u(i__86 + 1,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21im1__59 = tmp__72 * u(i__86,j__85,k__84,2) - u31im1__58 = tmp__72 * u(i__86,j__85,k__84,3) - u41im1__57 = tmp__72 * u(i__86,j__85,k__84,4) - u51im1__56 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(5 + 2) = 4.0d+00 / 3.0d+00 * tx3 * (u21i__71 - u21im1__59) - flux_(5 + 3) = tx3 * (u31i__70 - u31im1__58) - flux_(5 + 4) = tx3 * (u41i__69 - u41im1__57) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i__71** 2 + u31i__70** 2 + u41i__69** 2 - (u21im1__59** 2 +& - & u31im1__58** 2 + u41im1__57** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i__71** 2 - u21im1__59** 2) + c1 * c5 * tx3 * (u51i__68 - u& - &51im1__56) - rsd(i__86,j__85,k__84,1) = rsd(i__86,j__85,k__84,1) + dx1 * tx1 * (u(i__86 - 1,j__85,k__84,1) - 2.0d+00 * u(i__86,j__& - &85,k__84,1) + u(i__86 + 1,j__85,k__84,1)) - rsd(i__86,j__85,k__84,2) = rsd(i__86,j__85,k__84,2) + tx3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dx2 * tx1 * (u(i__8& - &6 - 1,j__85,k__84,2) - 2.0d+00 * u(i__86,j__85,k__84,2) + u(i__86 + 1,j__85,k__84,2)) - rsd(i__86,j__85,k__84,3) = rsd(i__86,j__85,k__84,3) + tx3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dx3 * tx1 * (u(i__8& - &6 - 1,j__85,k__84,3) - 2.0d+00 * u(i__86,j__85,k__84,3) + u(i__86 + 1,j__85,k__84,3)) - rsd(i__86,j__85,k__84,4) = rsd(i__86,j__85,k__84,4) + tx3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dx4 * tx1 * (u(i__8& - &6 - 1,j__85,k__84,4) - 2.0d+00 * u(i__86,j__85,k__84,4) + u(i__86 + 1,j__85,k__84,4)) - rsd(i__86,j__85,k__84,5) = rsd(i__86,j__85,k__84,5) + tx3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dx5 * tx1 * (u(i__8& - &6 - 1,j__85,k__84,5) - 2.0d+00 * u(i__86,j__85,k__84,5) + u(i__86 + 1,j__85,k__84,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = 2,2 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - & - &4.0d+00 * u(i__86 + 1,j__85,k__84,m__83) + u(i__86 + 2,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = 3,3 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((-(4.0d+00)) * u(i__86 - 1,j__85,k__84,m__83& - &) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83) + u(i__86 + 2,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - ist1__80 = 4 - iend1__79 = nx - 3 -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist1__80,iend1__79 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u& - &(i__86 - 1,j__85,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83) + u(i__86 + 2,& - &j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = nx - 2,nx - 2 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u& - &(i__86 - 1,j__85,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = nx - 1,nx - 1 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u& - &(i__86 - 1,j__85,k__84,m__83) + 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - l1__82 = 1 - l2__81 = ny -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83,u31__74,q__76,flux_),SHADOW_RENEW (u(0:0,1:1,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - flux_(1) = u(i__86,j__85 + 1,k__84,3) - u31__74 = u(i__86,j__85 + 1,k__84,3) / u(i__86,j__85 + 1,k__84,1) - q__76 = 0.50d+00 * (u(i__86,j__85 + 1,k__84,2) * u(i__86,j__85 + 1,k__84,2) + u(i__86,j__85 + 1,k__84,3) * u(i__86,j_& - &_85 + 1,k__84,3) + u(i__86,j__85 + 1,k__84,4) * u(i__86,j__85 + 1,k__84,4)) / u(i__86,j__85 + 1,k__84,1) - flux_(2) = u(i__86,j__85 + 1,k__84,2) * u31__74 - flux_(3) = u(i__86,j__85 + 1,k__84,3) * u31__74 + c2 * (u(i__86,j__85 + 1,k__84,5) - q__76) - flux_(4) = u(i__86,j__85 + 1,k__84,4) * u31__74 - flux_(5) = (c1 * u(i__86,j__85 + 1,k__84,5) - c2 * q__76) * u31__74 - flux_(6) = u(i__86,j__85 - 1,k__84,3) - u31__74 = u(i__86,j__85 - 1,k__84,3) / u(i__86,j__85 - 1,k__84,1) - q__76 = 0.50d+00 * (u(i__86,j__85 - 1,k__84,2) * u(i__86,j__85 - 1,k__84,2) + u(i__86,j__85 - 1,k__84,3) * u(i__86,j_& - &_85 - 1,k__84,3) + u(i__86,j__85 - 1,k__84,4) * u(i__86,j__85 - 1,k__84,4)) / u(i__86,j__85 - 1,k__84,1) - flux_(7) = u(i__86,j__85 - 1,k__84,2) * u31__74 - flux_(8) = u(i__86,j__85 - 1,k__84,3) * u31__74 + c2 * (u(i__86,j__85 - 1,k__84,5) - q__76) - flux_(9) = u(i__86,j__85 - 1,k__84,4) * u31__74 - flux_(10) = (c1 * u(i__86,j__85 - 1,k__84,5) - c2 * q__76) * u31__74 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - ty2 * (flux_(m__83) - flux_(5 + m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (tmp__72,u21j__67,u31j__66,u41j__65,u51j__64,u21jm1__55,u31jm& -!DVM$&1__54,u41jm1__53,u51jm1__52,flux_),SHADOW_RENEW (u(0:0,2:2,2:2,0:0)) - -!SHADOW_RENEW (u(0:0,1:1,0:0,0:0) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21j__67 = tmp__72 * u(i__86,j__85,k__84,2) - u31j__66 = tmp__72 * u(i__86,j__85,k__84,3) - u41j__65 = tmp__72 * u(i__86,j__85,k__84,4) - u51j__64 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85 - 1,k__84,1) - u21jm1__55 = tmp__72 * u(i__86,j__85 - 1,k__84,2) - u31jm1__54 = tmp__72 * u(i__86,j__85 - 1,k__84,3) - u41jm1__53 = tmp__72 * u(i__86,j__85 - 1,k__84,4) - u51jm1__52 = tmp__72 * u(i__86,j__85 - 1,k__84,5) - flux_(2) = ty3 * (u21j__67 - u21jm1__55) - flux_(3) = 4.0d+00 / 3.0d+00 * ty3 * (u31j__66 - u31jm1__54) - flux_(4) = ty3 * (u41j__65 - u41jm1__53) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j__67** 2 + u31j__66** 2 + u41j__65** 2 - (u21jm1__55** 2 + u31& - &jm1__54** 2 + u41jm1__53** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j__66** 2 - u31jm1__54** 2) + c1 * c5 * ty3 * (u51j__64 - u51jm& - &1__52) - tmp__72 = 1.0d+00 / u(i__86,j__85 + 1,k__84,1) - u21j__67 = tmp__72 * u(i__86,j__85 + 1,k__84,2) - u31j__66 = tmp__72 * u(i__86,j__85 + 1,k__84,3) - u41j__65 = tmp__72 * u(i__86,j__85 + 1,k__84,4) - u51j__64 = tmp__72 * u(i__86,j__85 + 1,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21jm1__55 = tmp__72 * u(i__86,j__85,k__84,2) - u31jm1__54 = tmp__72 * u(i__86,j__85,k__84,3) - u41jm1__53 = tmp__72 * u(i__86,j__85,k__84,4) - u51jm1__52 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(5 + 2) = ty3 * (u21j__67 - u21jm1__55) - flux_(5 + 3) = 4.0d+00 / 3.0d+00 * ty3 * (u31j__66 - u31jm1__54) - flux_(5 + 4) = ty3 * (u41j__65 - u41jm1__53) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j__67** 2 + u31j__66** 2 + u41j__65** 2 - (u21jm1__55** 2 +& - & u31jm1__54** 2 + u41jm1__53** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j__66** 2 - u31jm1__54** 2) + c1 * c5 * ty3 * (u51j__64 - u& - &51jm1__52) - rsd(i__86,j__85,k__84,1) = rsd(i__86,j__85,k__84,1) + dy1 * ty1 * (u(i__86,j__85 - 1,k__84,1) - 2.0d+00 * u(i__86,j__& - &85,k__84,1) + u(i__86,j__85 + 1,k__84,1)) - rsd(i__86,j__85,k__84,2) = rsd(i__86,j__85,k__84,2) + ty3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dy2 * ty1 * (u(i__8& - &6,j__85 - 1,k__84,2) - 2.0d+00 * u(i__86,j__85,k__84,2) + u(i__86,j__85 + 1,k__84,2)) - rsd(i__86,j__85,k__84,3) = rsd(i__86,j__85,k__84,3) + ty3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dy3 * ty1 * (u(i__8& - &6,j__85 - 1,k__84,3) - 2.0d+00 * u(i__86,j__85,k__84,3) + u(i__86,j__85 + 1,k__84,3)) - rsd(i__86,j__85,k__84,4) = rsd(i__86,j__85,k__84,4) + ty3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dy4 * ty1 * (u(i__8& - &6,j__85 - 1,k__84,4) - 2.0d+00 * u(i__86,j__85,k__84,4) + u(i__86,j__85 + 1,k__84,4)) - rsd(i__86,j__85,k__84,5) = rsd(i__86,j__85,k__84,5) + ty3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dy5 * ty1 * (u(i__8& - &6,j__85 - 1,k__84,5) - 2.0d+00 * u(i__86,j__85,k__84,5) + u(i__86,j__85 + 1,k__84,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!SHADOW_RENEW (u(0:0,0:2,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = 2,2 - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - & - &4.0d+00 * u(i__86,j__85 + 1,k__84,m__83) + u(i__86,j__85 + 2,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!SHADOW_RENEW (u(0:0,1:2,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = 3,3 - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((-(4.0d+00)) * u(i__86,j__85 - 1,k__84,m__83& - &) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83) + u(i__86,j__85 + 2,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - jst1__78 = 4 - jend1__77 = ny - 3 -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!SHADOW_RENEW (u(0:0,2:2,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = jst1__78,jend1__77 - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u& - &(i__86,j__85 - 1,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83) + u(i__86,j__8& - &5 + 2,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!SHADOW_RENEW (u(0:0,2:1,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = ny - 2,ny - 2 - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u& - &(i__86,j__85 - 1,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!SHADOW_RENEW (u(0:0,2:0,0:0,0:0)) - do k__84 = 2,nz - 1 - do j__85 = ny - 1,ny - 1 - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u& - &(i__86,j__85 - 1,k__84,m__83) + 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83,u41__73,q__76,flux_),SHADOW_RENEW (u(0:0,0:0,1:1,0:0)) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - flux_(1) = u(i__86,j__85,k__84 + 1,4) - u41__73 = u(i__86,j__85,k__84 + 1,4) / u(i__86,j__85,k__84 + 1,1) - q__76 = 0.50d+00 * (u(i__86,j__85,k__84 + 1,2) * u(i__86,j__85,k__84 + 1,2) + u(i__86,j__85,k__84 + 1,3) * u(i__86,j_& - &_85,k__84 + 1,3) + u(i__86,j__85,k__84 + 1,4) * u(i__86,j__85,k__84 + 1,4)) / u(i__86,j__85,k__84 + 1,1) - flux_(2) = u(i__86,j__85,k__84 + 1,2) * u41__73 - flux_(3) = u(i__86,j__85,k__84 + 1,3) * u41__73 - flux_(4) = u(i__86,j__85,k__84 + 1,4) * u41__73 + c2 * (u(i__86,j__85,k__84 + 1,5) - q__76) - flux_(5) = (c1 * u(i__86,j__85,k__84 + 1,5) - c2 * q__76) * u41__73 - flux_(6) = u(i__86,j__85,k__84 - 1,4) - u41__73 = u(i__86,j__85,k__84 - 1,4) / u(i__86,j__85,k__84 - 1,1) - q__76 = 0.50d+00 * (u(i__86,j__85,k__84 - 1,2) * u(i__86,j__85,k__84 - 1,2) + u(i__86,j__85,k__84 - 1,3) * u(i__86,j_& - &_85,k__84 - 1,3) + u(i__86,j__85,k__84 - 1,4) * u(i__86,j__85,k__84 - 1,4)) / u(i__86,j__85,k__84 - 1,1) - flux_(7) = u(i__86,j__85,k__84 - 1,2) * u41__73 - flux_(8) = u(i__86,j__85,k__84 - 1,3) * u41__73 - flux_(9) = u(i__86,j__85,k__84 - 1,4) * u41__73 + c2 * (u(i__86,j__85,k__84 - 1,5) - q__76) - flux_(10) = (c1 * u(i__86,j__85,k__84 - 1,5) - c2 * q__76) * u41__73 - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - tz2 * (flux_(m__83) - flux_(5 + m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (tmp__72,u21k__63,u31k__62,u41k__61,u51k__60,u21km1__51,u31km& -!DVM$&1__50,u41km1__49,u51km1__48,flux_) - -!SHADOW_RENEW (u(0:0,0:0,1:1,0:0) - do k__84 = 2,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21k__63 = tmp__72 * u(i__86,j__85,k__84,2) - u31k__62 = tmp__72 * u(i__86,j__85,k__84,3) - u41k__61 = tmp__72 * u(i__86,j__85,k__84,4) - u51k__60 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84 - 1,1) - u21km1__51 = tmp__72 * u(i__86,j__85,k__84 - 1,2) - u31km1__50 = tmp__72 * u(i__86,j__85,k__84 - 1,3) - u41km1__49 = tmp__72 * u(i__86,j__85,k__84 - 1,4) - u51km1__48 = tmp__72 * u(i__86,j__85,k__84 - 1,5) - flux_(2) = tz3 * (u21k__63 - u21km1__51) - flux_(3) = tz3 * (u31k__62 - u31km1__50) - flux_(4) = 4.0d+00 / 3.0d+00 * tz3 * (u41k__61 - u41km1__49) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k__63** 2 + u31k__62** 2 + u41k__61** 2 - (u21km1__51** 2 + u31& - &km1__50** 2 + u41km1__49** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k__61** 2 - u41km1__49** 2) + c1 * c5 * tz3 * (u51k__60 - u51km& - &1__48) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84 + 1,1) - u21k__63 = tmp__72 * u(i__86,j__85,k__84 + 1,2) - u31k__62 = tmp__72 * u(i__86,j__85,k__84 + 1,3) - u41k__61 = tmp__72 * u(i__86,j__85,k__84 + 1,4) - u51k__60 = tmp__72 * u(i__86,j__85,k__84 + 1,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21km1__51 = tmp__72 * u(i__86,j__85,k__84,2) - u31km1__50 = tmp__72 * u(i__86,j__85,k__84,3) - u41km1__49 = tmp__72 * u(i__86,j__85,k__84,4) - u51km1__48 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(5 + 2) = tz3 * (u21k__63 - u21km1__51) - flux_(5 + 3) = tz3 * (u31k__62 - u31km1__50) - flux_(5 + 4) = 4.0d+00 / 3.0d+00 * tz3 * (u41k__61 - u41km1__49) - flux_(5 + 5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k__63** 2 + u31k__62** 2 + u41k__61** 2 - (u21km1__51** 2 +& - & u31km1__50** 2 + u41km1__49** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k__61** 2 - u41km1__49** 2) + c1 * c5 * tz3 * (u51k__60 - u& - &51km1__48) - rsd(i__86,j__85,k__84,1) = rsd(i__86,j__85,k__84,1) + dz1 * tz1 * (u(i__86,j__85,k__84 - 1,1) - 2.0d+00 * u(i__86,j__& - &85,k__84,1) + u(i__86,j__85,k__84 + 1,1)) - rsd(i__86,j__85,k__84,2) = rsd(i__86,j__85,k__84,2) + tz3 * c3 * c4 * (flux_(5 + 2) - flux_(2)) + dz2 * tz1 * (u(i__8& - &6,j__85,k__84 - 1,2) - 2.0d+00 * u(i__86,j__85,k__84,2) + u(i__86,j__85,k__84 + 1,2)) - rsd(i__86,j__85,k__84,3) = rsd(i__86,j__85,k__84,3) + tz3 * c3 * c4 * (flux_(5 + 3) - flux_(3)) + dz3 * tz1 * (u(i__8& - &6,j__85,k__84 - 1,3) - 2.0d+00 * u(i__86,j__85,k__84,3) + u(i__86,j__85,k__84 + 1,3)) - rsd(i__86,j__85,k__84,4) = rsd(i__86,j__85,k__84,4) + tz3 * c3 * c4 * (flux_(5 + 4) - flux_(4)) + dz4 * tz1 * (u(i__8& - &6,j__85,k__84 - 1,4) - 2.0d+00 * u(i__86,j__85,k__84,4) + u(i__86,j__85,k__84 + 1,4)) - rsd(i__86,j__85,k__84,5) = rsd(i__86,j__85,k__84,5) + tz3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dz5 * tz1 * (u(i__8& - &6,j__85,k__84 - 1,5) - 2.0d+00 * u(i__86,j__85,k__84,5) + u(i__86,j__85,k__84 + 1,5)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!, SHADOW_RENEW (u(0:0,0:0,0:2,0:0)) - do k__84 = 2,2 - do j__85 = jst,jend - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - & - &4.0d+00 * u(i__86,j__85,k__84 + 1,m__83) + u(i__86,j__85,k__84 + 2,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!, SHADOW_RENEW (u(0:0,0:0,1:2,0:0)) - do k__84 = 3,3 - do j__85 = jst,jend - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * ((-(4.0d+00)) * u(i__86,j__85,k__84 - 1,m__83& - &) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83) + u(i__86,j__85,k__84 + 2,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!, SHADOW_RENEW (u(0:0,0:0,2:2,0:0)) - do k__84 = 4,nz - 3 - do j__85 = jst,jend - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u& - &(i__86,j__85,k__84 - 1,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83) + u(i__86,j__8& - &5,k__84 + 2,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!, SHADOW_RENEW (u(0:0,0:0,2:1,0:0)) - do k__84 = nz - 2,nz - 2 - do j__85 = jst,jend - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u& - &(i__86,j__85,k__84 - 1,m__83) + 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83) - -!, SHADOW_RENEW (u(0:0,0:0,2:0,0:0)) - do k__84 = nz - 1,nz - 1 - do j__85 = jst,jend - do i__86 = ist,iend - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd(i__86,j__85,k__84,m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u& - &(i__86,j__85,k__84 - 1,m__83) + 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - enddo - enddo - enddo -!DVM$ END REGION - v_1573_88 = isiz1 / 2 * 2 + 1 - v_1573_87 = isiz2 / 2 * 2 + 1 - do m__89 = 1,5 - rsdnm(m__89) = 0.0d+00 - enddo - r1 = 0.0d0 - r2 = 0.0d0 - r3 = 0.0d0 - r4 = 0.0d0 - r5 = 0.0d0 -!DVM$ REGION -!DVM$ PARALLEL (k__90,j__91,i__92) ON rsd(i__92,j__91,k__90,*),REDUCTION (sum(r1),sum(r2),sum(r3),sum(r4),sum(r5)),CUDA_BLOCK (32,4) - do k__90 = 2,nz0 - 1 - do j__91 = jst,jend - do i__92 = ist,iend - r1 = r1 + rsd(i__92,j__91,k__90,1) * rsd(i__92,j__91,k__90,1) - r2 = r2 + rsd(i__92,j__91,k__90,2) * rsd(i__92,j__91,k__90,2) - r3 = r3 + rsd(i__92,j__91,k__90,3) * rsd(i__92,j__91,k__90,3) - r4 = r4 + rsd(i__92,j__91,k__90,4) * rsd(i__92,j__91,k__90,4) - r5 = r5 + rsd(i__92,j__91,k__90,5) * rsd(i__92,j__91,k__90,5) - enddo - enddo - enddo -!DVM$ END REGION - rsdnm(1) = r1 - rsdnm(2) = r2 - rsdnm(3) = r3 - rsdnm(4) = r4 - rsdnm(5) = r5 - do m__89 = 1,5 - rsdnm(m__89) = sqrt (rsdnm(m__89) / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2))) - enddo - elapsed(1) = 0.0 - -! call etime(tarray) - t = dvtime () - start(1) = t - if (touch .eq. 1) then - istep = 2 - else - istep = 1 - endif -2045 mod_1150_40 = mod (istep,20) - if (mod_1150_40 .eq. 0 .or. istep .eq. itmax .or. istep .eq. 1) then - write (unit = *,fmt = 200) istep - endif - r43 = 4.0d+00 / 3.0d+00 - c1345 = c1 * c3 * c4 * c5 - c34 = c3 * c4 -!DVM$ REGION -!DVM$ PARALLEL (k__97,j__95,i__96) ON rsd(i__96,j__95,k__97,*),PRIVATE (rsd_,tmat,tmp1,tmp__93,tmp2,tmp3,tmp_1,tmp_2,tmp_3),ACROSS (& -!DVM$&rsd(1:0,1:0,1:0,0:0)),CUDA_BLOCK (16,16) - do k__97 = 2,nz - 1 - do j__95 = jst,jend - do i__96 = ist,iend - tmp1 = 1.0d+00 / u(i__96,j__95,k__97 - 1,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - tmp_1 = 1.0d+00 / u(i__96 - 1,j__95,k__97,1) - tmp_2 = tmp_1 * tmp_1 - tmp_3 = tmp_1 * tmp_2 - rsd_(1) = rsd(i__96,j__95,k__97,1) * dt - rsd_(2) = rsd(i__96,j__95,k__97,2) * dt - rsd_(3) = rsd(i__96,j__95,k__97,3) * dt - rsd_(4) = rsd(i__96,j__95,k__97,4) * dt - rsd_(5) = rsd(i__96,j__95,k__97,5) * dt - rsd_(1) = rsd_(1) - omega * ((-(dt)) * tz1 * dz1 * rsd(i__96,j__95,k__97 - 1,1) + (-(dt)) * tz2 * rsd(i__96,j__95,k__& - &97 - 1,4)) - rsd_(2) = rsd_(2) - omega * (((-(dt)) * tz2 * ((-(u(i__96,j__95,k__97 - 1,2) * u(i__96,j__95,k__97 - 1,4))) * tmp2) -& - & dt * tz1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97 - 1,2))) * rsd(i__96,j__95,k__97 - 1,1) + ((-(dt)) * tz2 * (u(i__96,j__95,k& - &__97 - 1,4) * tmp1) - dt * tz1 * c34 * tmp1 - dt * tz1 * dz2) * rsd(i__96,j__95,k__97 - 1,2) + (-(dt)) * tz2 * (u(i__96,j__95,& - &k__97 - 1,2) * tmp1) * rsd(i__96,j__95,k__97 - 1,4)) - rsd_(3) = rsd_(3) - omega * (((-(dt)) * tz2 * ((-(u(i__96,j__95,k__97 - 1,3) * u(i__96,j__95,k__97 - 1,4))) * tmp2) -& - & dt * tz1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97 - 1,3))) * rsd(i__96,j__95,k__97 - 1,1) + ((-(dt)) * tz2 * (u(i__96,j__95,k& - &__97 - 1,4) * tmp1) - dt * tz1 * (c34 * tmp1) - dt * tz1 * dz3) * rsd(i__96,j__95,k__97 - 1,3) + (-(dt)) * tz2 * (u(i__96,j__9& - &5,k__97 - 1,3) * tmp1) * rsd(i__96,j__95,k__97 - 1,4)) - rsd_(4) = rsd_(4) - omega * (((-(dt)) * tz2 * ((-((u(i__96,j__95,k__97 - 1,4) * tmp1)** 2)) + 0.50d+00 * c2 * ((u(i__& - &96,j__95,k__97 - 1,2) * u(i__96,j__95,k__97 - 1,2) + u(i__96,j__95,k__97 - 1,3) * u(i__96,j__95,k__97 - 1,3) + u(i__96,j__95,k& - &__97 - 1,4) * u(i__96,j__95,k__97 - 1,4)) * tmp2)) - dt * tz1 * ((-(r43)) * c34 * tmp2 * u(i__96,j__95,k__97 - 1,4))) * rsd(i_& - &_96,j__95,k__97 - 1,1) + (-(dt)) * tz2 * ((-(c2)) * (u(i__96,j__95,k__97 - 1,2) * tmp1)) * rsd(i__96,j__95,k__97 - 1,2) + (-(d& - &t)) * tz2 * ((-(c2)) * (u(i__96,j__95,k__97 - 1,3) * tmp1)) * rsd(i__96,j__95,k__97 - 1,3) + ((-(dt)) * tz2 * (2.0d+00 - c2) *& - & (u(i__96,j__95,k__97 - 1,4) * tmp1) - dt * tz1 * (r43 * c34 * tmp1) - dt * tz1 * dz4) * rsd(i__96,j__95,k__97 - 1,4) + (-(dt)& - &) * tz2 * c2 * rsd(i__96,j__95,k__97 - 1,5)) - rsd_(5) = rsd_(5) - omega * (((-(dt)) * tz2 * ((c2 * (u(i__96,j__95,k__97 - 1,2) * u(i__96,j__95,k__97 - 1,2) + u(i__& - &96,j__95,k__97 - 1,3) * u(i__96,j__95,k__97 - 1,3) + u(i__96,j__95,k__97 - 1,4) * u(i__96,j__95,k__97 - 1,4)) * tmp2 - c1 * (u& - &(i__96,j__95,k__97 - 1,5) * tmp1)) * (u(i__96,j__95,k__97 - 1,4) * tmp1)) - dt * tz1 * ((-(c34 - c1345)) * tmp3 * u(i__96,j__9& - &5,k__97 - 1,2)** 2 - (c34 - c1345) * tmp3 * u(i__96,j__95,k__97 - 1,3)** 2 - (r43 * c34 - c1345) * tmp3 * u(i__96,j__95,k__97 & - &- 1,4)** 2 - c1345 * tmp2 * u(i__96,j__95,k__97 - 1,5))) * rsd(i__96,j__95,k__97 - 1,1) + ((-(dt)) * tz2 * ((-(c2)) * (u(i__96& - &,j__95,k__97 - 1,2) * u(i__96,j__95,k__97 - 1,4)) * tmp2) - dt * tz1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97 - 1,2)) * rs& - &d(i__96,j__95,k__97 - 1,2) + ((-(dt)) * tz2 * ((-(c2)) * (u(i__96,j__95,k__97 - 1,3) * u(i__96,j__95,k__97 - 1,4)) * tmp2) - d& - &t * tz1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97 - 1,3)) * rsd(i__96,j__95,k__97 - 1,3) + ((-(dt)) * tz2 * (c1 * (u(i__96,& - &j__95,k__97 - 1,5) * tmp1) - 0.50d+00 * c2 * ((u(i__96,j__95,k__97 - 1,2) * u(i__96,j__95,k__97 - 1,2) + u(i__96,j__95,k__97 -& - & 1,3) * u(i__96,j__95,k__97 - 1,3) + 3.0d+00 * u(i__96,j__95,k__97 - 1,4) * u(i__96,j__95,k__97 - 1,4)) * tmp2)) - dt * tz1 * & - &(r43 * c34 - c1345) * tmp2 * u(i__96,j__95,k__97 - 1,4)) * rsd(i__96,j__95,k__97 - 1,4) + ((-(dt)) * tz2 * (c1 * (u(i__96,j__9& - &5,k__97 - 1,4) * tmp1)) - dt * tz1 * c1345 * tmp1 - dt * tz1 * dz5) * rsd(i__96,j__95,k__97 - 1,5)) - tmp1 = 1.0d+00 / u(i__96,j__95 - 1,k__97,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - rsd_(1) = rsd_(1) - omega * ((-(dt)) * ty1 * dy1 * rsd(i__96,j__95 - 1,k__97,1) + (-(dt)) * tx1 * dx1 * rsd(i__96 - 1& - &,j__95,k__97,1) + (-(dt)) * tx2 * rsd(i__96 - 1,j__95,k__97,2) + (-(dt)) * ty2 * rsd(i__96,j__95 - 1,k__97,3)) - rsd_(2) = rsd_(2) - omega * (((-(dt)) * ty2 * ((-(u(i__96,j__95 - 1,k__97,2) * u(i__96,j__95 - 1,k__97,3))) * tmp2) -& - & dt * ty1 * ((-(c34)) * tmp2 * u(i__96,j__95 - 1,k__97,2))) * rsd(i__96,j__95 - 1,k__97,1) + ((-(dt)) * tx2 * ((-((u(i__96 - 1& - &,j__95,k__97,2) * tmp_1)** 2)) + c2 * 0.50d+00 * (u(i__96 - 1,j__95,k__97,2) * u(i__96 - 1,j__95,k__97,2) + u(i__96 - 1,j__95,& - &k__97,3) * u(i__96 - 1,j__95,k__97,3) + u(i__96 - 1,j__95,k__97,4) * u(i__96 - 1,j__95,k__97,4)) * tmp_2) - dt * tx1 * ((-(r43& - &)) * c34 * tmp_2 * u(i__96 - 1,j__95,k__97,2))) * rsd(i__96 - 1,j__95,k__97,1) + ((-(dt)) * ty2 * (u(i__96,j__95 - 1,k__97,3) & - &* tmp1) - dt * ty1 * (c34 * tmp1) - dt * ty1 * dy2) * rsd(i__96,j__95 - 1,k__97,2) + ((-(dt)) * tx2 * ((2.0d+00 - c2) * (u(i__& - &96 - 1,j__95,k__97,2) * tmp_1)) - dt * tx1 * (r43 * c34 * tmp_1) - dt * tx1 * dx2) * rsd(i__96 - 1,j__95,k__97,2) + (-(dt)) * & - &ty2 * (u(i__96,j__95 - 1,k__97,2) * tmp1) * rsd(i__96,j__95 - 1,k__97,3) + (-(dt)) * tx2 * ((-(c2)) * (u(i__96 - 1,j__95,k__97& - &,3) * tmp_1)) * rsd(i__96 - 1,j__95,k__97,3) + (-(dt)) * tx2 * ((-(c2)) * (u(i__96 - 1,j__95,k__97,4) * tmp_1)) * rsd(i__96 - & - &1,j__95,k__97,4) + (-(dt)) * tx2 * c2 * rsd(i__96 - 1,j__95,k__97,5)) - rsd_(3) = rsd_(3) - omega * (((-(dt)) * ty2 * ((-((u(i__96,j__95 - 1,k__97,3) * tmp1)** 2)) + 0.50d+00 * c2 * ((u(i__& - &96,j__95 - 1,k__97,2) * u(i__96,j__95 - 1,k__97,2) + u(i__96,j__95 - 1,k__97,3) * u(i__96,j__95 - 1,k__97,3) + u(i__96,j__95 -& - & 1,k__97,4) * u(i__96,j__95 - 1,k__97,4)) * tmp2)) - dt * ty1 * ((-(r43)) * c34 * tmp2 * u(i__96,j__95 - 1,k__97,3))) * rsd(i_& - &_96,j__95 - 1,k__97,1) + ((-(dt)) * tx2 * ((-(u(i__96 - 1,j__95,k__97,2) * u(i__96 - 1,j__95,k__97,3))) * tmp_2) - dt * tx1 * & - &((-(c34)) * tmp_2 * u(i__96 - 1,j__95,k__97,3))) * rsd(i__96 - 1,j__95,k__97,1) + (-(dt)) * ty2 * ((-(c2)) * (u(i__96,j__95 - & - &1,k__97,2) * tmp1)) * rsd(i__96,j__95 - 1,k__97,2) + (-(dt)) * tx2 * (u(i__96 - 1,j__95,k__97,3) * tmp_1) * rsd(i__96 - 1,j__9& - &5,k__97,2) + ((-(dt)) * ty2 * ((2.0d+00 - c2) * (u(i__96,j__95 - 1,k__97,3) * tmp1)) - dt * ty1 * (r43 * c34 * tmp1) - dt * ty& - &1 * dy3) * rsd(i__96,j__95 - 1,k__97,3) + ((-(dt)) * tx2 * (u(i__96 - 1,j__95,k__97,2) * tmp_1) - dt * tx1 * (c34 * tmp_1) - d& - &t * tx1 * dx3) * rsd(i__96 - 1,j__95,k__97,3) + (-(dt)) * ty2 * ((-(c2)) * (u(i__96,j__95 - 1,k__97,4) * tmp1)) * rsd(i__96,j_& - &_95 - 1,k__97,4) + (-(dt)) * ty2 * c2 * rsd(i__96,j__95 - 1,k__97,5)) - rsd_(4) = rsd_(4) - omega * (((-(dt)) * ty2 * ((-(u(i__96,j__95 - 1,k__97,3) * u(i__96,j__95 - 1,k__97,4))) * tmp2) -& - & dt * ty1 * ((-(c34)) * tmp2 * u(i__96,j__95 - 1,k__97,4))) * rsd(i__96,j__95 - 1,k__97,1) + ((-(dt)) * tx2 * ((-(u(i__96 - 1,& - &j__95,k__97,2) * u(i__96 - 1,j__95,k__97,4))) * tmp_2) - dt * tx1 * ((-(c34)) * tmp_2 * u(i__96 - 1,j__95,k__97,4))) * rsd(i__& - &96 - 1,j__95,k__97,1) + (-(dt)) * tx2 * (u(i__96 - 1,j__95,k__97,4) * tmp_1) * rsd(i__96 - 1,j__95,k__97,2) + (-(dt)) * ty2 * & - &(u(i__96,j__95 - 1,k__97,4) * tmp1) * rsd(i__96,j__95 - 1,k__97,3) + ((-(dt)) * ty2 * (u(i__96,j__95 - 1,k__97,3) * tmp1) - dt& - & * ty1 * (c34 * tmp1) - dt * ty1 * dy4) * rsd(i__96,j__95 - 1,k__97,4) + ((-(dt)) * tx2 * (u(i__96 - 1,j__95,k__97,2) * tmp_1)& - & - dt * tx1 * (c34 * tmp_1) - dt * tx1 * dx4) * rsd(i__96 - 1,j__95,k__97,4)) - rsd_(5) = rsd_(5) - omega * (((-(dt)) * ty2 * ((c2 * (u(i__96,j__95 - 1,k__97,2) * u(i__96,j__95 - 1,k__97,2) + u(i__& - &96,j__95 - 1,k__97,3) * u(i__96,j__95 - 1,k__97,3) + u(i__96,j__95 - 1,k__97,4) * u(i__96,j__95 - 1,k__97,4)) * tmp2 - c1 * (u& - &(i__96,j__95 - 1,k__97,5) * tmp1)) * (u(i__96,j__95 - 1,k__97,3) * tmp1)) - dt * ty1 * ((-(c34 - c1345)) * tmp3 * u(i__96,j__9& - &5 - 1,k__97,2)** 2 - (r43 * c34 - c1345) * tmp3 * u(i__96,j__95 - 1,k__97,3)** 2 - (c34 - c1345) * tmp3 * u(i__96,j__95 - 1,k_& - &_97,4)** 2 - c1345 * tmp2 * u(i__96,j__95 - 1,k__97,5))) * rsd(i__96,j__95 - 1,k__97,1) + ((-(dt)) * tx2 * ((c2 * (u(i__96 - 1& - &,j__95,k__97,2) * u(i__96 - 1,j__95,k__97,2) + u(i__96 - 1,j__95,k__97,3) * u(i__96 - 1,j__95,k__97,3) + u(i__96 - 1,j__95,k__& - &97,4) * u(i__96 - 1,j__95,k__97,4)) * tmp_2 - c1 * (u(i__96 - 1,j__95,k__97,5) * tmp_1)) * (u(i__96 - 1,j__95,k__97,2) * tmp_1& - &)) - dt * tx1 * ((-(r43 * c34 - c1345)) * tmp_3 * u(i__96 - 1,j__95,k__97,2)** 2 - (c34 - c1345) * tmp_3 * u(i__96 - 1,j__95,k& - &__97,3)** 2 - (c34 - c1345) * tmp_3 * u(i__96 - 1,j__95,k__97,4)** 2 - c1345 * tmp_2 * u(i__96 - 1,j__95,k__97,5))) * rsd(i__9& - &6 - 1,j__95,k__97,1) + ((-(dt)) * ty2 * ((-(c2)) * (u(i__96,j__95 - 1,k__97,2) * u(i__96,j__95 - 1,k__97,3)) * tmp2) - dt * ty& - &1 * (c34 - c1345) * tmp2 * u(i__96,j__95 - 1,k__97,2)) * rsd(i__96,j__95 - 1,k__97,2) + ((-(dt)) * tx2 * (c1 * (u(i__96 - 1,j_& - &_95,k__97,5) * tmp_1) - 0.50d+00 * c2 * ((3.0d+00 * u(i__96 - 1,j__95,k__97,2) * u(i__96 - 1,j__95,k__97,2) + u(i__96 - 1,j__9& - &5,k__97,3) * u(i__96 - 1,j__95,k__97,3) + u(i__96 - 1,j__95,k__97,4) * u(i__96 - 1,j__95,k__97,4)) * tmp_2)) - dt * tx1 * (r43& - & * c34 - c1345) * tmp_2 * u(i__96 - 1,j__95,k__97,2)) * rsd(i__96 - 1,j__95,k__97,2) + ((-(dt)) * ty2 * (c1 * (u(i__96,j__95 -& - & 1,k__97,5) * tmp1) - 0.50d+00 * c2 * ((u(i__96,j__95 - 1,k__97,2) * u(i__96,j__95 - 1,k__97,2) + 3.0d+00 * u(i__96,j__95 - 1,& - &k__97,3) * u(i__96,j__95 - 1,k__97,3) + u(i__96,j__95 - 1,k__97,4) * u(i__96,j__95 - 1,k__97,4)) * tmp2)) - dt * ty1 * (r43 * & - &c34 - c1345) * tmp2 * u(i__96,j__95 - 1,k__97,3)) * rsd(i__96,j__95 - 1,k__97,3) + ((-(dt)) * tx2 * ((-(c2)) * (u(i__96 - 1,j_& - &_95,k__97,3) * u(i__96 - 1,j__95,k__97,2)) * tmp_2) - dt * tx1 * (c34 - c1345) * tmp_2 * u(i__96 - 1,j__95,k__97,3)) * rsd(i__& - &96 - 1,j__95,k__97,3) + ((-(dt)) * ty2 * ((-(c2)) * (u(i__96,j__95 - 1,k__97,3) * u(i__96,j__95 - 1,k__97,4)) * tmp2) - dt * t& - &y1 * (c34 - c1345) * tmp2 * u(i__96,j__95 - 1,k__97,4)) * rsd(i__96,j__95 - 1,k__97,4) + ((-(dt)) * tx2 * ((-(c2)) * (u(i__96 & - &- 1,j__95,k__97,4) * u(i__96 - 1,j__95,k__97,2)) * tmp_2) - dt * tx1 * (c34 - c1345) * tmp_2 * u(i__96 - 1,j__95,k__97,4)) * r& - &sd(i__96 - 1,j__95,k__97,4) + ((-(dt)) * ty2 * (c1 * (u(i__96,j__95 - 1,k__97,3) * tmp1)) - dt * ty1 * c1345 * tmp1 - dt * ty1& - & * dy5) * rsd(i__96,j__95 - 1,k__97,5) + ((-(dt)) * tx2 * (c1 * (u(i__96 - 1,j__95,k__97,2) * tmp_1)) - dt * tx1 * c1345 * tmp& - &_1 - dt * tx1 * dx5) * rsd(i__96 - 1,j__95,k__97,5)) - tmp1 = 1.0d+00 / u(i__96,j__95,k__97,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - tmat(1,1) = 1.0d+00 + dt * 2.0d+00 * (tx1 * dx1 + ty1 * dy1 + tz1 * dz1) - tmat(1,2) = 0.0d+00 - tmat(1,3) = 0.0d+00 - tmat(1,4) = 0.0d+00 - tmat(1,5) = 0.0d+00 - tmat(2,1) = dt * 2.0d+00 * (tx1 * ((-(r43)) * c34 * tmp2 * u(i__96,j__95,k__97,2)) + ty1 * ((-(c34)) * tmp2 * u(i__96& - &,j__95,k__97,2)) + tz1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97,2))) - tmat(2,2) = 1.0d+00 + dt * 2.0d+00 * (tx1 * r43 * c34 * tmp1 + ty1 * c34 * tmp1 + tz1 * c34 * tmp1) + dt * 2.0d+00 * & - &(tx1 * dx2 + ty1 * dy2 + tz1 * dz2) - tmat(2,3) = 0.0d+00 - tmat(2,4) = 0.0d+00 - tmat(2,5) = 0.0d+00 - tmat(3,1) = dt * 2.0d+00 * (tx1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97,3)) + ty1 * ((-(r43)) * c34 * tmp2 * u(i__96& - &,j__95,k__97,3)) + tz1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97,3))) - tmat(3,2) = 0.0d+00 - tmat(3,3) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c34 * tmp1 + ty1 * r43 * c34 * tmp1 + tz1 * c34 * tmp1) + dt * 2.0d+00 * & - &(tx1 * dx3 + ty1 * dy3 + tz1 * dz3) - tmat(3,4) = 0.0d+00 - tmat(3,5) = 0.0d+00 - tmat(4,1) = dt * 2.0d+00 * (tx1 * ((-(c34)) * tmp2 * u(i__96,j__95,k__97,4)) + ty1 * ((-(c34)) * tmp2 * u(i__96,j__95& - &,k__97,4)) + tz1 * ((-(r43)) * c34 * tmp2 * u(i__96,j__95,k__97,4))) - tmat(4,2) = 0.0d+00 - tmat(4,3) = 0.0d+00 - tmat(4,4) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c34 * tmp1 + ty1 * c34 * tmp1 + tz1 * r43 * c34 * tmp1) + dt * 2.0d+00 * & - &(tx1 * dx4 + ty1 * dy4 + tz1 * dz4) - tmat(4,5) = 0.0d+00 - tmat(5,1) = dt * 2.0d+00 * (tx1 * ((-(r43 * c34 - c1345)) * tmp3 * u(i__96,j__95,k__97,2)** 2 - (c34 - c1345) * tmp3 & - &* u(i__96,j__95,k__97,3)** 2 - (c34 - c1345) * tmp3 * u(i__96,j__95,k__97,4)** 2 - c1345 * tmp2 * u(i__96,j__95,k__97,5)) + ty& - &1 * ((-(c34 - c1345)) * tmp3 * u(i__96,j__95,k__97,2)** 2 - (r43 * c34 - c1345) * tmp3 * u(i__96,j__95,k__97,3)** 2 - (c34 - c& - &1345) * tmp3 * u(i__96,j__95,k__97,4)** 2 - c1345 * tmp2 * u(i__96,j__95,k__97,5)) + tz1 * ((-(c34 - c1345)) * tmp3 * u(i__96,& - &j__95,k__97,2)** 2 - (c34 - c1345) * tmp3 * u(i__96,j__95,k__97,3)** 2 - (r43 * c34 - c1345) * tmp3 * u(i__96,j__95,k__97,4)**& - & 2 - c1345 * tmp2 * u(i__96,j__95,k__97,5))) - tmat(5,2) = dt * 2.0d+00 * (tx1 * (r43 * c34 - c1345) * tmp2 * u(i__96,j__95,k__97,2) + ty1 * (c34 - c1345) * tmp2 * & - &u(i__96,j__95,k__97,2) + tz1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97,2)) - tmat(5,3) = dt * 2.0d+00 * (tx1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97,3) + ty1 * (r43 * c34 - c1345) * tmp2 * & - &u(i__96,j__95,k__97,3) + tz1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97,3)) - tmat(5,4) = dt * 2.0d+00 * (tx1 * (c34 - c1345) * tmp2 * u(i__96,j__95,k__97,4) + ty1 * (c34 - c1345) * tmp2 * u(i__9& - &6,j__95,k__97,4) + tz1 * (r43 * c34 - c1345) * tmp2 * u(i__96,j__95,k__97,4)) - tmat(5,5) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c1345 * tmp1 + ty1 * c1345 * tmp1 + tz1 * c1345 * tmp1) + dt * 2.0d+00 * & - &(tx1 * dx5 + ty1 * dy5 + tz1 * dz5) - tmp1 = 1.0d+00 / tmat(1,1) - tmp__93 = tmp1 * tmat(2,1) - tmat(2,2) = tmat(2,2) - tmp__93 * tmat(1,2) - tmat(2,3) = tmat(2,3) - tmp__93 * tmat(1,3) - tmat(2,4) = tmat(2,4) - tmp__93 * tmat(1,4) - tmat(2,5) = tmat(2,5) - tmp__93 * tmat(1,5) - rsd_(2) = rsd_(2) - rsd_(1) * tmp__93 - tmp__93 = tmp1 * tmat(3,1) - tmat(3,2) = tmat(3,2) - tmp__93 * tmat(1,2) - tmat(3,3) = tmat(3,3) - tmp__93 * tmat(1,3) - tmat(3,4) = tmat(3,4) - tmp__93 * tmat(1,4) - tmat(3,5) = tmat(3,5) - tmp__93 * tmat(1,5) - rsd_(3) = rsd_(3) - rsd_(1) * tmp__93 - tmp__93 = tmp1 * tmat(4,1) - tmat(4,2) = tmat(4,2) - tmp__93 * tmat(1,2) - tmat(4,3) = tmat(4,3) - tmp__93 * tmat(1,3) - tmat(4,4) = tmat(4,4) - tmp__93 * tmat(1,4) - tmat(4,5) = tmat(4,5) - tmp__93 * tmat(1,5) - rsd_(4) = rsd_(4) - rsd_(1) * tmp__93 - tmp__93 = tmp1 * tmat(5,1) - tmat(5,2) = tmat(5,2) - tmp__93 * tmat(1,2) - tmat(5,3) = tmat(5,3) - tmp__93 * tmat(1,3) - tmat(5,4) = tmat(5,4) - tmp__93 * tmat(1,4) - tmat(5,5) = tmat(5,5) - tmp__93 * tmat(1,5) - rsd_(5) = rsd_(5) - rsd_(1) * tmp__93 - tmp1 = 1.0d+00 / tmat(2,2) - tmp__93 = tmp1 * tmat(3,2) - tmat(3,3) = tmat(3,3) - tmp__93 * tmat(2,3) - tmat(3,4) = tmat(3,4) - tmp__93 * tmat(2,4) - tmat(3,5) = tmat(3,5) - tmp__93 * tmat(2,5) - rsd_(3) = rsd_(3) - rsd_(2) * tmp__93 - tmp__93 = tmp1 * tmat(4,2) - tmat(4,3) = tmat(4,3) - tmp__93 * tmat(2,3) - tmat(4,4) = tmat(4,4) - tmp__93 * tmat(2,4) - tmat(4,5) = tmat(4,5) - tmp__93 * tmat(2,5) - rsd_(4) = rsd_(4) - rsd_(2) * tmp__93 - tmp__93 = tmp1 * tmat(5,2) - tmat(5,3) = tmat(5,3) - tmp__93 * tmat(2,3) - tmat(5,4) = tmat(5,4) - tmp__93 * tmat(2,4) - tmat(5,5) = tmat(5,5) - tmp__93 * tmat(2,5) - rsd_(5) = rsd_(5) - rsd_(2) * tmp__93 - tmp1 = 1.0d+00 / tmat(3,3) - tmp__93 = tmp1 * tmat(4,3) - tmat(4,4) = tmat(4,4) - tmp__93 * tmat(3,4) - tmat(4,5) = tmat(4,5) - tmp__93 * tmat(3,5) - rsd_(4) = rsd_(4) - rsd_(3) * tmp__93 - tmp__93 = tmp1 * tmat(5,3) - tmat(5,4) = tmat(5,4) - tmp__93 * tmat(3,4) - tmat(5,5) = tmat(5,5) - tmp__93 * tmat(3,5) - rsd_(5) = rsd_(5) - rsd_(3) * tmp__93 - tmp1 = 1.0d+00 / tmat(4,4) - tmp__93 = tmp1 * tmat(5,4) - tmat(5,5) = tmat(5,5) - tmp__93 * tmat(4,5) - rsd_(5) = rsd_(5) - rsd_(4) * tmp__93 - rsd_(5) = rsd_(5) / tmat(5,5) - rsd_(4) = rsd_(4) - tmat(4,5) * rsd_(5) - rsd_(4) = rsd_(4) / tmat(4,4) - rsd_(3) = rsd_(3) - tmat(3,4) * rsd_(4) - tmat(3,5) * rsd_(5) - rsd_(3) = rsd_(3) / tmat(3,3) - rsd_(2) = rsd_(2) - tmat(2,3) * rsd_(3) - tmat(2,4) * rsd_(4) - tmat(2,5) * rsd_(5) - rsd_(2) = rsd_(2) / tmat(2,2) - rsd_(1) = rsd_(1) - tmat(1,2) * rsd_(2) - tmat(1,3) * rsd_(3) - tmat(1,4) * rsd_(4) - tmat(1,5) * rsd_(5) - rsd_(1) = rsd_(1) / tmat(1,1) - rsd(i__96,j__95,k__97,1) = rsd_(1) - rsd(i__96,j__95,k__97,2) = rsd_(2) - rsd(i__96,j__95,k__97,3) = rsd_(3) - rsd(i__96,j__95,k__97,4) = rsd_(4) - rsd(i__96,j__95,k__97,5) = rsd_(5) - enddo - enddo - enddo -!DVM$ END REGION - r43__108 = 4.0d+00 / 3.0d+00 - c1345__107 = c1 * c3 * c4 * c5 - c34__106 = c3 * c4 -!DVM$ REGION -!DVM$ PARALLEL (k__109,j__101,i__102) ON rsd(i__102,j__101,k__109,*),PRIVATE (tmat__98,tmp1__105,tmp__99,tmp2__104,tmp3__103,tmp1,tm& -!DVM$&p2,tmp3,tv),ACROSS (rsd(0:1,0:1,0:1,0:0)),CUDA_BLOCK (16,16) - do k__109 = nz - 1,2,(-(1)) - do j__101 = jend,jst,(-(1)) - do i__102 = iend,ist,(-(1)) - tmp1__105 = 1.0d+00 / u(i__102,j__101,k__109 + 1,1) - tmp2__104 = tmp1__105 * tmp1__105 - tmp3__103 = tmp1__105 * tmp2__104 - tv(1) = omega * ((-(dt)) * tz1 * dz1 * rsd(i__102,j__101,k__109 + 1,1) + dt * tz2 * rsd(i__102,j__101,k__109 + 1,4)) - tv(2) = omega * ((dt * tz2 * ((-(u(i__102,j__101,k__109 + 1,2) * u(i__102,j__101,k__109 + 1,4))) * tmp2__104) - dt * & - &tz1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109 + 1,2))) * rsd(i__102,j__101,k__109 + 1,1) + (dt * tz2 * (u(i__102,j& - &__101,k__109 + 1,4) * tmp1__105) - dt * tz1 * c34__106 * tmp1__105 - dt * tz1 * dz2) * rsd(i__102,j__101,k__109 + 1,2) + dt * & - &tz2 * (u(i__102,j__101,k__109 + 1,2) * tmp1__105) * rsd(i__102,j__101,k__109 + 1,4)) - tv(3) = omega * ((dt * tz2 * ((-(u(i__102,j__101,k__109 + 1,3) * u(i__102,j__101,k__109 + 1,4))) * tmp2__104) - dt * & - &tz1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109 + 1,3))) * rsd(i__102,j__101,k__109 + 1,1) + (dt * tz2 * (u(i__102,j& - &__101,k__109 + 1,4) * tmp1__105) - dt * tz1 * (c34__106 * tmp1__105) - dt * tz1 * dz3) * rsd(i__102,j__101,k__109 + 1,3) + dt & - &* tz2 * (u(i__102,j__101,k__109 + 1,3) * tmp1__105) * rsd(i__102,j__101,k__109 + 1,4)) - tv(4) = omega * ((dt * tz2 * ((-((u(i__102,j__101,k__109 + 1,4) * tmp1__105)** 2)) + 0.50d+00 * c2 * ((u(i__102,j__10& - &1,k__109 + 1,2) * u(i__102,j__101,k__109 + 1,2) + u(i__102,j__101,k__109 + 1,3) * u(i__102,j__101,k__109 + 1,3) + u(i__102,j__& - &101,k__109 + 1,4) * u(i__102,j__101,k__109 + 1,4)) * tmp2__104)) - dt * tz1 * ((-(r43__108)) * c34__106 * tmp2__104 * u(i__102& - &,j__101,k__109 + 1,4))) * rsd(i__102,j__101,k__109 + 1,1) + dt * tz2 * ((-(c2)) * (u(i__102,j__101,k__109 + 1,2) * tmp1__105))& - & * rsd(i__102,j__101,k__109 + 1,2) + dt * tz2 * ((-(c2)) * (u(i__102,j__101,k__109 + 1,3) * tmp1__105)) * rsd(i__102,j__101,k_& - &_109 + 1,3) + (dt * tz2 * (2.0d+00 - c2) * (u(i__102,j__101,k__109 + 1,4) * tmp1__105) - dt * tz1 * (r43__108 * c34__106 * tmp& - &1__105) - dt * tz1 * dz4) * rsd(i__102,j__101,k__109 + 1,4) + dt * tz2 * c2 * rsd(i__102,j__101,k__109 + 1,5)) - tv(5) = omega * ((dt * tz2 * ((c2 * (u(i__102,j__101,k__109 + 1,2) * u(i__102,j__101,k__109 + 1,2) + u(i__102,j__101,& - &k__109 + 1,3) * u(i__102,j__101,k__109 + 1,3) + u(i__102,j__101,k__109 + 1,4) * u(i__102,j__101,k__109 + 1,4)) * tmp2__104 - c& - &1 * (u(i__102,j__101,k__109 + 1,5) * tmp1__105)) * (u(i__102,j__101,k__109 + 1,4) * tmp1__105)) - dt * tz1 * ((-(c34__106 - c1& - &345__107)) * tmp3__103 * u(i__102,j__101,k__109 + 1,2)** 2 - (c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109 + 1,& - &3)** 2 - (r43__108 * c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109 + 1,4)** 2 - c1345__107 * tmp2__104 * u(i__10& - &2,j__101,k__109 + 1,5))) * rsd(i__102,j__101,k__109 + 1,1) + (dt * tz2 * ((-(c2)) * (u(i__102,j__101,k__109 + 1,2) * u(i__102,& - &j__101,k__109 + 1,4)) * tmp2__104) - dt * tz1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109 + 1,2)) * rsd(i__& - &102,j__101,k__109 + 1,2) + (dt * tz2 * ((-(c2)) * (u(i__102,j__101,k__109 + 1,3) * u(i__102,j__101,k__109 + 1,4)) * tmp2__104)& - & - dt * tz1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109 + 1,3)) * rsd(i__102,j__101,k__109 + 1,3) + (dt * t& - &z2 * (c1 * (u(i__102,j__101,k__109 + 1,5) * tmp1__105) - 0.50d+00 * c2 * ((u(i__102,j__101,k__109 + 1,2) * u(i__102,j__101,k__& - &109 + 1,2) + u(i__102,j__101,k__109 + 1,3) * u(i__102,j__101,k__109 + 1,3) + 3.0d+00 * u(i__102,j__101,k__109 + 1,4) * u(i__10& - &2,j__101,k__109 + 1,4)) * tmp2__104)) - dt * tz1 * (r43__108 * c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109 + 1& - &,4)) * rsd(i__102,j__101,k__109 + 1,4) + (dt * tz2 * (c1 * (u(i__102,j__101,k__109 + 1,4) * tmp1__105)) - dt * tz1 * c1345__10& - &7 * tmp1__105 - dt * tz1 * dz5) * rsd(i__102,j__101,k__109 + 1,5)) - tmp1 = 1.0d+00 / u(i__102 + 1,j__101,k__109,1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - tmp1__105 = 1.0d+00 / u(i__102,j__101 + 1,k__109,1) - tmp2__104 = tmp1__105 * tmp1__105 - tmp3__103 = tmp1__105 * tmp2__104 - tv(1) = tv(1) + omega * ((-(dt)) * ty1 * dy1 * rsd(i__102,j__101 + 1,k__109,1) + (-(dt)) * tx1 * dx1 * rsd(i__102 + 1& - &,j__101,k__109,1) + dt * tx2 * rsd(i__102 + 1,j__101,k__109,2) + dt * ty2 * rsd(i__102,j__101 + 1,k__109,3)) - tv(2) = tv(2) + omega * ((dt * ty2 * ((-(u(i__102,j__101 + 1,k__109,2) * u(i__102,j__101 + 1,k__109,3))) * tmp2__104)& - & - dt * ty1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101 + 1,k__109,2))) * rsd(i__102,j__101 + 1,k__109,1) + (dt * tx2 * ((-& - &((u(i__102 + 1,j__101,k__109,2) * tmp1)** 2)) + c2 * 0.50d+00 * (u(i__102 + 1,j__101,k__109,2) * u(i__102 + 1,j__101,k__109,2)& - & + u(i__102 + 1,j__101,k__109,3) * u(i__102 + 1,j__101,k__109,3) + u(i__102 + 1,j__101,k__109,4) * u(i__102 + 1,j__101,k__109,& - &4)) * tmp2) - dt * tx1 * ((-(r43__108)) * c34__106 * tmp2 * u(i__102 + 1,j__101,k__109,2))) * rsd(i__102 + 1,j__101,k__109,1) & - &+ (dt * ty2 * (u(i__102,j__101 + 1,k__109,3) * tmp1__105) - dt * ty1 * (c34__106 * tmp1__105) - dt * ty1 * dy2) * rsd(i__102,j& - &__101 + 1,k__109,2) + (dt * tx2 * ((2.0d+00 - c2) * (u(i__102 + 1,j__101,k__109,2) * tmp1)) - dt * tx1 * (r43__108 * c34__106 & - &* tmp1) - dt * tx1 * dx2) * rsd(i__102 + 1,j__101,k__109,2) + dt * ty2 * (u(i__102,j__101 + 1,k__109,2) * tmp1__105) * rsd(i__& - &102,j__101 + 1,k__109,3) + dt * tx2 * ((-(c2)) * (u(i__102 + 1,j__101,k__109,3) * tmp1)) * rsd(i__102 + 1,j__101,k__109,3) + d& - &t * tx2 * ((-(c2)) * (u(i__102 + 1,j__101,k__109,4) * tmp1)) * rsd(i__102 + 1,j__101,k__109,4) + dt * tx2 * c2 * rsd(i__102 + & - &1,j__101,k__109,5)) - tv(3) = tv(3) + omega * ((dt * ty2 * ((-((u(i__102,j__101 + 1,k__109,3) * tmp1__105)** 2)) + 0.50d+00 * c2 * ((u(i__1& - &02,j__101 + 1,k__109,2) * u(i__102,j__101 + 1,k__109,2) + u(i__102,j__101 + 1,k__109,3) * u(i__102,j__101 + 1,k__109,3) + u(i_& - &_102,j__101 + 1,k__109,4) * u(i__102,j__101 + 1,k__109,4)) * tmp2__104)) - dt * ty1 * ((-(r43__108)) * c34__106 * tmp2__104 * & - &u(i__102,j__101 + 1,k__109,3))) * rsd(i__102,j__101 + 1,k__109,1) + (dt * tx2 * ((-(u(i__102 + 1,j__101,k__109,2) * u(i__102 +& - & 1,j__101,k__109,3))) * tmp2) - dt * tx1 * ((-(c34__106)) * tmp2 * u(i__102 + 1,j__101,k__109,3))) * rsd(i__102 + 1,j__101,k__& - &109,1) + dt * ty2 * ((-(c2)) * (u(i__102,j__101 + 1,k__109,2) * tmp1__105)) * rsd(i__102,j__101 + 1,k__109,2) + dt * tx2 * (u(& - &i__102 + 1,j__101,k__109,3) * tmp1) * rsd(i__102 + 1,j__101,k__109,2) + (dt * ty2 * ((2.0d+00 - c2) * (u(i__102,j__101 + 1,k__& - &109,3) * tmp1__105)) - dt * ty1 * (r43__108 * c34__106 * tmp1__105) - dt * ty1 * dy3) * rsd(i__102,j__101 + 1,k__109,3) + (dt & - &* tx2 * (u(i__102 + 1,j__101,k__109,2) * tmp1) - dt * tx1 * (c34__106 * tmp1) - dt * tx1 * dx3) * rsd(i__102 + 1,j__101,k__109& - &,3) + dt * ty2 * ((-(c2)) * (u(i__102,j__101 + 1,k__109,4) * tmp1__105)) * rsd(i__102,j__101 + 1,k__109,4) + dt * ty2 * c2 * r& - &sd(i__102,j__101 + 1,k__109,5)) - tv(4) = tv(4) + omega * ((dt * ty2 * ((-(u(i__102,j__101 + 1,k__109,3) * u(i__102,j__101 + 1,k__109,4))) * tmp2__104)& - & - dt * ty1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101 + 1,k__109,4))) * rsd(i__102,j__101 + 1,k__109,1) + (dt * tx2 * ((-& - &(u(i__102 + 1,j__101,k__109,2) * u(i__102 + 1,j__101,k__109,4))) * tmp2) - dt * tx1 * ((-(c34__106)) * tmp2 * u(i__102 + 1,j__& - &101,k__109,4))) * rsd(i__102 + 1,j__101,k__109,1) + dt * tx2 * (u(i__102 + 1,j__101,k__109,4) * tmp1) * rsd(i__102 + 1,j__101,& - &k__109,2) + dt * ty2 * (u(i__102,j__101 + 1,k__109,4) * tmp1__105) * rsd(i__102,j__101 + 1,k__109,3) + (dt * ty2 * (u(i__102,j& - &__101 + 1,k__109,3) * tmp1__105) - dt * ty1 * (c34__106 * tmp1__105) - dt * ty1 * dy4) * rsd(i__102,j__101 + 1,k__109,4) + (dt& - & * tx2 * (u(i__102 + 1,j__101,k__109,2) * tmp1) - dt * tx1 * (c34__106 * tmp1) - dt * tx1 * dx4) * rsd(i__102 + 1,j__101,k__10& - &9,4)) - tv(5) = tv(5) + omega * ((dt * ty2 * ((c2 * (u(i__102,j__101 + 1,k__109,2) * u(i__102,j__101 + 1,k__109,2) + u(i__102& - &,j__101 + 1,k__109,3) * u(i__102,j__101 + 1,k__109,3) + u(i__102,j__101 + 1,k__109,4) * u(i__102,j__101 + 1,k__109,4)) * tmp2_& - &_104 - c1 * (u(i__102,j__101 + 1,k__109,5) * tmp1__105)) * (u(i__102,j__101 + 1,k__109,3) * tmp1__105)) - dt * ty1 * ((-(c34__& - &106 - c1345__107)) * tmp3__103 * u(i__102,j__101 + 1,k__109,2)** 2 - (r43__108 * c34__106 - c1345__107) * tmp3__103 * u(i__102& - &,j__101 + 1,k__109,3)** 2 - (c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101 + 1,k__109,4)** 2 - c1345__107 * tmp2__104 *& - & u(i__102,j__101 + 1,k__109,5))) * rsd(i__102,j__101 + 1,k__109,1) + (dt * tx2 * ((c2 * (u(i__102 + 1,j__101,k__109,2) * u(i__& - &102 + 1,j__101,k__109,2) + u(i__102 + 1,j__101,k__109,3) * u(i__102 + 1,j__101,k__109,3) + u(i__102 + 1,j__101,k__109,4) * u(i& - &__102 + 1,j__101,k__109,4)) * tmp2 - c1 * (u(i__102 + 1,j__101,k__109,5) * tmp1)) * (u(i__102 + 1,j__101,k__109,2) * tmp1)) - & - &dt * tx1 * ((-(r43__108 * c34__106 - c1345__107)) * tmp3 * u(i__102 + 1,j__101,k__109,2)** 2 - (c34__106 - c1345__107) * tmp3 & - &* u(i__102 + 1,j__101,k__109,3)** 2 - (c34__106 - c1345__107) * tmp3 * u(i__102 + 1,j__101,k__109,4)** 2 - c1345__107 * tmp2 *& - & u(i__102 + 1,j__101,k__109,5))) * rsd(i__102 + 1,j__101,k__109,1) + (dt * ty2 * ((-(c2)) * (u(i__102,j__101 + 1,k__109,2) * u& - &(i__102,j__101 + 1,k__109,3)) * tmp2__104) - dt * ty1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101 + 1,k__109,2)) *& - & rsd(i__102,j__101 + 1,k__109,2) + (dt * tx2 * (c1 * (u(i__102 + 1,j__101,k__109,5) * tmp1) - 0.50d+00 * c2 * ((3.0d+00 * u(i_& - &_102 + 1,j__101,k__109,2) * u(i__102 + 1,j__101,k__109,2) + u(i__102 + 1,j__101,k__109,3) * u(i__102 + 1,j__101,k__109,3) + u(& - &i__102 + 1,j__101,k__109,4) * u(i__102 + 1,j__101,k__109,4)) * tmp2)) - dt * tx1 * (r43__108 * c34__106 - c1345__107) * tmp2 *& - & u(i__102 + 1,j__101,k__109,2)) * rsd(i__102 + 1,j__101,k__109,2) + (dt * ty2 * (c1 * (u(i__102,j__101 + 1,k__109,5) * tmp1__1& - &05) - 0.50d+00 * c2 * ((u(i__102,j__101 + 1,k__109,2) * u(i__102,j__101 + 1,k__109,2) + 3.0d+00 * u(i__102,j__101 + 1,k__109,3& - &) * u(i__102,j__101 + 1,k__109,3) + u(i__102,j__101 + 1,k__109,4) * u(i__102,j__101 + 1,k__109,4)) * tmp2__104)) - dt * ty1 * & - &(r43__108 * c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101 + 1,k__109,3)) * rsd(i__102,j__101 + 1,k__109,3) + (dt * tx2 & - &* ((-(c2)) * (u(i__102 + 1,j__101,k__109,3) * u(i__102 + 1,j__101,k__109,2)) * tmp2) - dt * tx1 * (c34__106 - c1345__107) * tm& - &p2 * u(i__102 + 1,j__101,k__109,3)) * rsd(i__102 + 1,j__101,k__109,3) + (dt * ty2 * ((-(c2)) * (u(i__102,j__101 + 1,k__109,3) & - &* u(i__102,j__101 + 1,k__109,4)) * tmp2__104) - dt * ty1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101 + 1,k__109,4)& - &) * rsd(i__102,j__101 + 1,k__109,4) + (dt * tx2 * ((-(c2)) * (u(i__102 + 1,j__101,k__109,4) * u(i__102 + 1,j__101,k__109,2)) *& - & tmp2) - dt * tx1 * (c34__106 - c1345__107) * tmp2 * u(i__102 + 1,j__101,k__109,4)) * rsd(i__102 + 1,j__101,k__109,4) + (dt * & - &ty2 * (c1 * (u(i__102,j__101 + 1,k__109,3) * tmp1__105)) - dt * ty1 * c1345__107 * tmp1__105 - dt * ty1 * dy5) * rsd(i__102,j_& - &_101 + 1,k__109,5) + (dt * tx2 * (c1 * (u(i__102 + 1,j__101,k__109,2) * tmp1)) - dt * tx1 * c1345__107 * tmp1 - dt * tx1 * dx5& - &) * rsd(i__102 + 1,j__101,k__109,5)) - tmp1__105 = 1.0d+00 / u(i__102,j__101,k__109,1) - tmp2__104 = tmp1__105 * tmp1__105 - tmp3__103 = tmp1__105 * tmp2__104 - tmat__98(1,1) = 1.0d+00 + dt * 2.0d+00 * (tx1 * dx1 + ty1 * dy1 + tz1 * dz1) - tmat__98(1,2) = 0.0d+00 - tmat__98(1,3) = 0.0d+00 - tmat__98(1,4) = 0.0d+00 - tmat__98(1,5) = 0.0d+00 - tmat__98(2,1) = dt * 2.0d+00 * (tx1 * ((-(r43__108)) * c34__106 * tmp2__104 * u(i__102,j__101,k__109,2)) + ty1 * ((-(& - &c34__106)) * tmp2__104 * u(i__102,j__101,k__109,2)) + tz1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109,2))) - tmat__98(2,2) = 1.0d+00 + dt * 2.0d+00 * (tx1 * r43__108 * c34__106 * tmp1__105 + ty1 * c34__106 * tmp1__105 + tz1 * & - &c34__106 * tmp1__105) + dt * 2.0d+00 * (tx1 * dx2 + ty1 * dy2 + tz1 * dz2) - tmat__98(2,3) = 0.0d+00 - tmat__98(2,4) = 0.0d+00 - tmat__98(2,5) = 0.0d+00 - tmat__98(3,1) = dt * 2.0d+00 * (tx1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109,3)) + ty1 * ((-(r43__108)) & - &* c34__106 * tmp2__104 * u(i__102,j__101,k__109,3)) + tz1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109,3))) - tmat__98(3,2) = 0.0d+00 - tmat__98(3,3) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c34__106 * tmp1__105 + ty1 * r43__108 * c34__106 * tmp1__105 + tz1 * & - &c34__106 * tmp1__105) + dt * 2.0d+00 * (tx1 * dx3 + ty1 * dy3 + tz1 * dz3) - tmat__98(3,4) = 0.0d+00 - tmat__98(3,5) = 0.0d+00 - tmat__98(4,1) = dt * 2.0d+00 * (tx1 * ((-(c34__106)) * tmp2__104 * u(i__102,j__101,k__109,4)) + ty1 * ((-(c34__106)) & - &* tmp2__104 * u(i__102,j__101,k__109,4)) + tz1 * ((-(r43__108)) * c34__106 * tmp2__104 * u(i__102,j__101,k__109,4))) - tmat__98(4,2) = 0.0d+00 - tmat__98(4,3) = 0.0d+00 - tmat__98(4,4) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c34__106 * tmp1__105 + ty1 * c34__106 * tmp1__105 + tz1 * r43__108 * & - &c34__106 * tmp1__105) + dt * 2.0d+00 * (tx1 * dx4 + ty1 * dy4 + tz1 * dz4) - tmat__98(4,5) = 0.0d+00 - tmat__98(5,1) = dt * 2.0d+00 * (tx1 * ((-(r43__108 * c34__106 - c1345__107)) * tmp3__103 * u(i__102,j__101,k__109,2)*& - &* 2 - (c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109,3)** 2 - (c34__106 - c1345__107) * tmp3__103 * u(i__102,j__& - &101,k__109,4)** 2 - c1345__107 * tmp2__104 * u(i__102,j__101,k__109,5)) + ty1 * ((-(c34__106 - c1345__107)) * tmp3__103 * u(i_& - &_102,j__101,k__109,2)** 2 - (r43__108 * c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109,3)** 2 - (c34__106 - c1345& - &__107) * tmp3__103 * u(i__102,j__101,k__109,4)** 2 - c1345__107 * tmp2__104 * u(i__102,j__101,k__109,5)) + tz1 * ((-(c34__106 & - &- c1345__107)) * tmp3__103 * u(i__102,j__101,k__109,2)** 2 - (c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109,3)**& - & 2 - (r43__108 * c34__106 - c1345__107) * tmp3__103 * u(i__102,j__101,k__109,4)** 2 - c1345__107 * tmp2__104 * u(i__102,j__101& - &,k__109,5))) - tmat__98(5,2) = dt * 2.0d+00 * (tx1 * (r43__108 * c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,2) + ty& - &1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,2) + tz1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__& - &101,k__109,2)) - tmat__98(5,3) = dt * 2.0d+00 * (tx1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,3) + ty1 * (r43__1& - &08 * c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,3) + tz1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__& - &101,k__109,3)) - tmat__98(5,4) = dt * 2.0d+00 * (tx1 * (c34__106 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,4) + ty1 * (c34__1& - &06 - c1345__107) * tmp2__104 * u(i__102,j__101,k__109,4) + tz1 * (r43__108 * c34__106 - c1345__107) * tmp2__104 * u(i__102,j__& - &101,k__109,4)) - tmat__98(5,5) = 1.0d+00 + dt * 2.0d+00 * (tx1 * c1345__107 * tmp1__105 + ty1 * c1345__107 * tmp1__105 + tz1 * c1345__& - &107 * tmp1__105) + dt * 2.0d+00 * (tx1 * dx5 + ty1 * dy5 + tz1 * dz5) - tmp1__105 = 1.0d+00 / tmat__98(1,1) - tmp__99 = tmp1__105 * tmat__98(2,1) - tmat__98(2,2) = tmat__98(2,2) - tmp__99 * tmat__98(1,2) - tmat__98(2,3) = tmat__98(2,3) - tmp__99 * tmat__98(1,3) - tmat__98(2,4) = tmat__98(2,4) - tmp__99 * tmat__98(1,4) - tmat__98(2,5) = tmat__98(2,5) - tmp__99 * tmat__98(1,5) - tv(2) = tv(2) - tv(1) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(3,1) - tmat__98(3,2) = tmat__98(3,2) - tmp__99 * tmat__98(1,2) - tmat__98(3,3) = tmat__98(3,3) - tmp__99 * tmat__98(1,3) - tmat__98(3,4) = tmat__98(3,4) - tmp__99 * tmat__98(1,4) - tmat__98(3,5) = tmat__98(3,5) - tmp__99 * tmat__98(1,5) - tv(3) = tv(3) - tv(1) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(4,1) - tmat__98(4,2) = tmat__98(4,2) - tmp__99 * tmat__98(1,2) - tmat__98(4,3) = tmat__98(4,3) - tmp__99 * tmat__98(1,3) - tmat__98(4,4) = tmat__98(4,4) - tmp__99 * tmat__98(1,4) - tmat__98(4,5) = tmat__98(4,5) - tmp__99 * tmat__98(1,5) - tv(4) = tv(4) - tv(1) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(5,1) - tmat__98(5,2) = tmat__98(5,2) - tmp__99 * tmat__98(1,2) - tmat__98(5,3) = tmat__98(5,3) - tmp__99 * tmat__98(1,3) - tmat__98(5,4) = tmat__98(5,4) - tmp__99 * tmat__98(1,4) - tmat__98(5,5) = tmat__98(5,5) - tmp__99 * tmat__98(1,5) - tv(5) = tv(5) - tv(1) * tmp__99 - tmp1__105 = 1.0d+00 / tmat__98(2,2) - tmp__99 = tmp1__105 * tmat__98(3,2) - tmat__98(3,3) = tmat__98(3,3) - tmp__99 * tmat__98(2,3) - tmat__98(3,4) = tmat__98(3,4) - tmp__99 * tmat__98(2,4) - tmat__98(3,5) = tmat__98(3,5) - tmp__99 * tmat__98(2,5) - tv(3) = tv(3) - tv(2) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(4,2) - tmat__98(4,3) = tmat__98(4,3) - tmp__99 * tmat__98(2,3) - tmat__98(4,4) = tmat__98(4,4) - tmp__99 * tmat__98(2,4) - tmat__98(4,5) = tmat__98(4,5) - tmp__99 * tmat__98(2,5) - tv(4) = tv(4) - tv(2) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(5,2) - tmat__98(5,3) = tmat__98(5,3) - tmp__99 * tmat__98(2,3) - tmat__98(5,4) = tmat__98(5,4) - tmp__99 * tmat__98(2,4) - tmat__98(5,5) = tmat__98(5,5) - tmp__99 * tmat__98(2,5) - tv(5) = tv(5) - tv(2) * tmp__99 - tmp1__105 = 1.0d+00 / tmat__98(3,3) - tmp__99 = tmp1__105 * tmat__98(4,3) - tmat__98(4,4) = tmat__98(4,4) - tmp__99 * tmat__98(3,4) - tmat__98(4,5) = tmat__98(4,5) - tmp__99 * tmat__98(3,5) - tv(4) = tv(4) - tv(3) * tmp__99 - tmp__99 = tmp1__105 * tmat__98(5,3) - tmat__98(5,4) = tmat__98(5,4) - tmp__99 * tmat__98(3,4) - tmat__98(5,5) = tmat__98(5,5) - tmp__99 * tmat__98(3,5) - tv(5) = tv(5) - tv(3) * tmp__99 - tmp1__105 = 1.0d+00 / tmat__98(4,4) - tmp__99 = tmp1__105 * tmat__98(5,4) - tmat__98(5,5) = tmat__98(5,5) - tmp__99 * tmat__98(4,5) - tv(5) = tv(5) - tv(4) * tmp__99 - tv(5) = tv(5) / tmat__98(5,5) - tv(4) = tv(4) - tmat__98(4,5) * tv(5) - tv(4) = tv(4) / tmat__98(4,4) - tv(3) = tv(3) - tmat__98(3,4) * tv(4) - tmat__98(3,5) * tv(5) - tv(3) = tv(3) / tmat__98(3,3) - tv(2) = tv(2) - tmat__98(2,3) * tv(3) - tmat__98(2,4) * tv(4) - tmat__98(2,5) * tv(5) - tv(2) = tv(2) / tmat__98(2,2) - tv(1) = tv(1) - tmat__98(1,2) * tv(2) - tmat__98(1,3) * tv(3) - tmat__98(1,4) * tv(4) - tmat__98(1,5) * tv(5) - tv(1) = tv(1) / tmat__98(1,1) - rsd(i__102,j__101,k__109,1) = rsd(i__102,j__101,k__109,1) - tv(1) - rsd(i__102,j__101,k__109,2) = rsd(i__102,j__101,k__109,2) - tv(2) - rsd(i__102,j__101,k__109,3) = rsd(i__102,j__101,k__109,3) - tv(3) - rsd(i__102,j__101,k__109,4) = rsd(i__102,j__101,k__109,4) - tv(4) - rsd(i__102,j__101,k__109,5) = rsd(i__102,j__101,k__109,5) - tv(5) - enddo - enddo - enddo -!DVM$ END REGION -!DVM$ REGION -!DVM$ PARALLEL (k__45,j__46,i__47) ON u(i__47,j__46,k__45,*),PRIVATE (m__44) - do k__45 = 2,nz - 1 - do j__46 = jst,jend - do i__47 = ist,iend - do m__44 = 1,5 - u(i__47,j__46,k__45,m__44) = u(i__47,j__46,k__45,m__44) + tmp__43 * rsd(i__47,j__46,k__45,m__44) - enddo - enddo - enddo - enddo -!DVM$ END REGION -!DVM$ REGION -!DVM$ PARALLEL (k__84,j__85,i__86) ON rsd(i__86,j__85,k__84,*),PRIVATE (m__83,rsd_,flux_,u21__75,q__76,tmp__72,u21i__71,u31i__70,u41& -!DVM$&i__69,u51i__68,u21im1__59,u31im1__58,u41im1__57,u51im1__56,u31__74,u21j__67,u31j__66,u41j__65,u51j__64,u21jm1__55,u31jm1__54,u& -!DVM$&41jm1__53,u51jm1__52,u41__73,u21k__63,u31k__62,u41k__61,u51k__60,u21km1__51,u31km1__50,u41km1__49,u51km1__48),SHADOW_RENEW (u) - do k__84 = 2,nz - 1 - do j__85 = 2,ny - 1 - do i__86 = 2,nx - 1 - flux_(1) = u(i__86 - 1,j__85,k__84,2) - u21__75 = u(i__86 - 1,j__85,k__84,2) / u(i__86 - 1,j__85,k__84,1) - q__76 = 0.50d+00 * (u(i__86 - 1,j__85,k__84,2) * u(i__86 - 1,j__85,k__84,2) + u(i__86 - 1,j__85,k__84,3) * u(i__86 - & - &1,j__85,k__84,3) + u(i__86 - 1,j__85,k__84,4) * u(i__86 - 1,j__85,k__84,4)) / u(i__86 - 1,j__85,k__84,1) - flux_(2) = u(i__86 - 1,j__85,k__84,2) * u21__75 + c2 * (u(i__86 - 1,j__85,k__84,5) - q__76) - flux_(3) = u(i__86 - 1,j__85,k__84,3) * u21__75 - flux_(4) = u(i__86 - 1,j__85,k__84,4) * u21__75 - flux_(5) = (c1 * u(i__86 - 1,j__85,k__84,5) - c2 * q__76) * u21__75 - flux_(6) = u(i__86 + 1,j__85,k__84,2) - u21__75 = u(i__86 + 1,j__85,k__84,2) / u(i__86 + 1,j__85,k__84,1) - q__76 = 0.50d+00 * (u(i__86 + 1,j__85,k__84,2) * u(i__86 + 1,j__85,k__84,2) + u(i__86 + 1,j__85,k__84,3) * u(i__86 + & - &1,j__85,k__84,3) + u(i__86 + 1,j__85,k__84,4) * u(i__86 + 1,j__85,k__84,4)) / u(i__86 + 1,j__85,k__84,1) - flux_(7) = u(i__86 + 1,j__85,k__84,2) * u21__75 + c2 * (u(i__86 + 1,j__85,k__84,5) - q__76) - flux_(8) = u(i__86 + 1,j__85,k__84,3) * u21__75 - flux_(9) = u(i__86 + 1,j__85,k__84,4) * u21__75 - flux_(10) = (c1 * u(i__86 + 1,j__85,k__84,5) - c2 * q__76) * u21__75 - do m__83 = 1,5 - rsd_(m__83) = (-(frct(i__86,j__85,k__84,m__83))) - tx2 * (flux_(m__83 + 5) - flux_(m__83)) - enddo - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21i__71 = tmp__72 * u(i__86,j__85,k__84,2) - u31i__70 = tmp__72 * u(i__86,j__85,k__84,3) - u41i__69 = tmp__72 * u(i__86,j__85,k__84,4) - u51i__68 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86 - 1,j__85,k__84,1) - u21im1__59 = tmp__72 * u(i__86 - 1,j__85,k__84,2) - u31im1__58 = tmp__72 * u(i__86 - 1,j__85,k__84,3) - u41im1__57 = tmp__72 * u(i__86 - 1,j__85,k__84,4) - u51im1__56 = tmp__72 * u(i__86 - 1,j__85,k__84,5) - flux_(2) = 4.0d+00 / 3.0d+00 * tx3 * (u21i__71 - u21im1__59) - flux_(3) = tx3 * (u31i__70 - u31im1__58) - flux_(4) = tx3 * (u41i__69 - u41im1__57) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i__71** 2 + u31i__70** 2 + u41i__69** 2 - (u21im1__59** 2 + u31& - &im1__58** 2 + u41im1__57** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i__71** 2 - u21im1__59** 2) + c1 * c5 * tx3 * (u51i__68 - u51im& - &1__56) - tmp__72 = 1.0d+00 / u(i__86 + 1,j__85,k__84,1) - u21i__71 = tmp__72 * u(i__86 + 1,j__85,k__84,2) - u31i__70 = tmp__72 * u(i__86 + 1,j__85,k__84,3) - u41i__69 = tmp__72 * u(i__86 + 1,j__85,k__84,4) - u51i__68 = tmp__72 * u(i__86 + 1,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21im1__59 = tmp__72 * u(i__86,j__85,k__84,2) - u31im1__58 = tmp__72 * u(i__86,j__85,k__84,3) - u41im1__57 = tmp__72 * u(i__86,j__85,k__84,4) - u51im1__56 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(7) = 4.0d+00 / 3.0d+00 * tx3 * (u21i__71 - u21im1__59) - flux_(8) = tx3 * (u31i__70 - u31im1__58) - flux_(9) = tx3 * (u41i__69 - u41im1__57) - flux_(10) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 * (u21i__71** 2 + u31i__70** 2 + u41i__69** 2 - (u21im1__59** 2 + u3& - &1im1__58** 2 + u41im1__57** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i__71** 2 - u21im1__59** 2) + c1 * c5 * tx3 * (u51i__68 - u51i& - &m1__56) - rsd_(1) = rsd_(1) + dx1 * tx1 * (u(i__86 - 1,j__85,k__84,1) - 2.0d+00 * u(i__86,j__85,k__84,1) + u(i__86 + 1,j__85,k_& - &_84,1)) - rsd_(2) = rsd_(2) + tx3 * c3 * c4 * (flux_(2 + 5) - flux_(2)) + dx2 * tx1 * (u(i__86 - 1,j__85,k__84,2) - 2.0d+00 * u& - &(i__86,j__85,k__84,2) + u(i__86 + 1,j__85,k__84,2)) - rsd_(3) = rsd_(3) + tx3 * c3 * c4 * (flux_(3 + 5) - flux_(3)) + dx3 * tx1 * (u(i__86 - 1,j__85,k__84,3) - 2.0d+00 * u& - &(i__86,j__85,k__84,3) + u(i__86 + 1,j__85,k__84,3)) - rsd_(4) = rsd_(4) + tx3 * c3 * c4 * (flux_(4 + 5) - flux_(4)) + dx4 * tx1 * (u(i__86 - 1,j__85,k__84,4) - 2.0d+00 * u& - &(i__86,j__85,k__84,4) + u(i__86 + 1,j__85,k__84,4)) - rsd_(5) = rsd_(5) + tx3 * c3 * c4 * (flux_(5 + 5) - flux_(5)) + dx5 * tx1 * (u(i__86 - 1,j__85,k__84,5) - 2.0d+00 * u& - &(i__86,j__85,k__84,5) + u(i__86 + 1,j__85,k__84,5)) - if (i__86 .eq. 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__& - &84,m__83) + u(i__86 + 2,j__85,k__84,m__83)) - enddo - else if (i__86 .eq. 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((-(4.0d+00)) * u(i__86 - 1,j__85,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__& - &84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83) + u(i__86 + 2,j__85,k__84,m__83)) - enddo - else if (i__86 .ge. 4 .and. i__86 .le. nx - 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u(i__86 - 1,j__85,k__84,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83) + u(i__86 + 2,j__85,k__84,m__83)) - enddo - else if (i__86 .eq. nx - 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u(i__86 - 1,j__85,k__84,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86 + 1,j__85,k__84,m__83)) - enddo - else if (i__86 .eq. nx - 1) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86 - 2,j__85,k__84,m__83) - 4.0d+00 * u(i__86 - 1,j__85,k__84,m__83) +& - & 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - endif - flux_(1) = u(i__86,j__85 - 1,k__84,3) - u31__74 = u(i__86,j__85 - 1,k__84,3) / u(i__86,j__85 - 1,k__84,1) - q__76 = 0.50d+00 * (u(i__86,j__85 - 1,k__84,2) * u(i__86,j__85 - 1,k__84,2) + u(i__86,j__85 - 1,k__84,3) * u(i__86,j_& - &_85 - 1,k__84,3) + u(i__86,j__85 - 1,k__84,4) * u(i__86,j__85 - 1,k__84,4)) / u(i__86,j__85 - 1,k__84,1) - flux_(2) = u(i__86,j__85 - 1,k__84,2) * u31__74 - flux_(3) = u(i__86,j__85 - 1,k__84,3) * u31__74 + c2 * (u(i__86,j__85 - 1,k__84,5) - q__76) - flux_(4) = u(i__86,j__85 - 1,k__84,4) * u31__74 - flux_(5) = (c1 * u(i__86,j__85 - 1,k__84,5) - c2 * q__76) * u31__74 - flux_(6) = u(i__86,j__85 + 1,k__84,3) - u31__74 = u(i__86,j__85 + 1,k__84,3) / u(i__86,j__85 + 1,k__84,1) - q__76 = 0.50d+00 * (u(i__86,j__85 + 1,k__84,2) * u(i__86,j__85 + 1,k__84,2) + u(i__86,j__85 + 1,k__84,3) * u(i__86,j_& - &_85 + 1,k__84,3) + u(i__86,j__85 + 1,k__84,4) * u(i__86,j__85 + 1,k__84,4)) / u(i__86,j__85 + 1,k__84,1) - flux_(7) = u(i__86,j__85 + 1,k__84,2) * u31__74 - flux_(8) = u(i__86,j__85 + 1,k__84,3) * u31__74 + c2 * (u(i__86,j__85 + 1,k__84,5) - q__76) - flux_(9) = u(i__86,j__85 + 1,k__84,4) * u31__74 - flux_(10) = (c1 * u(i__86,j__85 + 1,k__84,5) - c2 * q__76) * u31__74 - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - ty2 * (flux_(m__83 + 5) - flux_(m__83)) - enddo - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21j__67 = tmp__72 * u(i__86,j__85,k__84,2) - u31j__66 = tmp__72 * u(i__86,j__85,k__84,3) - u41j__65 = tmp__72 * u(i__86,j__85,k__84,4) - u51j__64 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85 - 1,k__84,1) - u21jm1__55 = tmp__72 * u(i__86,j__85 - 1,k__84,2) - u31jm1__54 = tmp__72 * u(i__86,j__85 - 1,k__84,3) - u41jm1__53 = tmp__72 * u(i__86,j__85 - 1,k__84,4) - u51jm1__52 = tmp__72 * u(i__86,j__85 - 1,k__84,5) - flux_(2) = ty3 * (u21j__67 - u21jm1__55) - flux_(3) = 4.0d+00 / 3.0d+00 * ty3 * (u31j__66 - u31jm1__54) - flux_(4) = ty3 * (u41j__65 - u41jm1__53) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j__67** 2 + u31j__66** 2 + u41j__65** 2 - (u21jm1__55** 2 + u31& - &jm1__54** 2 + u41jm1__53** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j__66** 2 - u31jm1__54** 2) + c1 * c5 * ty3 * (u51j__64 - u51jm& - &1__52) - tmp__72 = 1.0d+00 / u(i__86,j__85 + 1,k__84,1) - u21j__67 = tmp__72 * u(i__86,j__85 + 1,k__84,2) - u31j__66 = tmp__72 * u(i__86,j__85 + 1,k__84,3) - u41j__65 = tmp__72 * u(i__86,j__85 + 1,k__84,4) - u51j__64 = tmp__72 * u(i__86,j__85 + 1,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21jm1__55 = tmp__72 * u(i__86,j__85,k__84,2) - u31jm1__54 = tmp__72 * u(i__86,j__85,k__84,3) - u41jm1__53 = tmp__72 * u(i__86,j__85,k__84,4) - u51jm1__52 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(7) = ty3 * (u21j__67 - u21jm1__55) - flux_(8) = 4.0d+00 / 3.0d+00 * ty3 * (u31j__66 - u31jm1__54) - flux_(9) = ty3 * (u41j__65 - u41jm1__53) - flux_(10) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 * (u21j__67** 2 + u31j__66** 2 + u41j__65** 2 - (u21jm1__55** 2 + u3& - &1jm1__54** 2 + u41jm1__53** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j__66** 2 - u31jm1__54** 2) + c1 * c5 * ty3 * (u51j__64 - u51j& - &m1__52) - rsd_(1) = rsd_(1) + dy1 * ty1 * (u(i__86,j__85 - 1,k__84,1) - 2.0d+00 * u(i__86,j__85,k__84,1) + u(i__86,j__85 + 1,k_& - &_84,1)) - rsd_(2) = rsd_(2) + ty3 * c3 * c4 * (flux_(7) - flux_(2)) + dy2 * ty1 * (u(i__86,j__85 - 1,k__84,2) - 2.0d+00 * u(i__& - &86,j__85,k__84,2) + u(i__86,j__85 + 1,k__84,2)) - rsd_(3) = rsd_(3) + ty3 * c3 * c4 * (flux_(8) - flux_(3)) + dy3 * ty1 * (u(i__86,j__85 - 1,k__84,3) - 2.0d+00 * u(i__& - &86,j__85,k__84,3) + u(i__86,j__85 + 1,k__84,3)) - rsd_(4) = rsd_(4) + ty3 * c3 * c4 * (flux_(9) - flux_(4)) + dy4 * ty1 * (u(i__86,j__85 - 1,k__84,4) - 2.0d+00 * u(i__& - &86,j__85,k__84,4) + u(i__86,j__85 + 1,k__84,4)) - rsd_(5) = rsd_(5) + ty3 * c3 * c4 * (flux_(10) - flux_(5)) + dy5 * ty1 * (u(i__86,j__85 - 1,k__84,5) - 2.0d+00 * u(i_& - &_86,j__85,k__84,5) + u(i__86,j__85 + 1,k__84,5)) - if (j__85 .eq. 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__& - &84,m__83) + u(i__86,j__85 + 2,k__84,m__83)) - enddo - else if (j__85 .eq. 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((-(4.0d+00)) * u(i__86,j__85 - 1,k__84,m__83) + 6.0d+00 * u(i__86,j__85,k__& - &84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83) + u(i__86,j__85 + 2,k__84,m__83)) - enddo - else if (j__85 .ge. 4 .and. j__85 .le. ny - 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u(i__86,j__85 - 1,k__84,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83) + u(i__86,j__85 + 2,k__84,m__83)) - enddo - else if (j__85 .eq. ny - 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u(i__86,j__85 - 1,k__84,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85 + 1,k__84,m__83)) - enddo - else if (j__85 .eq. ny - 1) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85 - 2,k__84,m__83) - 4.0d+00 * u(i__86,j__85 - 1,k__84,m__83) +& - & 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - endif - flux_(1) = u(i__86,j__85,k__84 - 1,4) - u41__73 = u(i__86,j__85,k__84 - 1,4) / u(i__86,j__85,k__84 - 1,1) - q__76 = 0.50d+00 * (u(i__86,j__85,k__84 - 1,2) * u(i__86,j__85,k__84 - 1,2) + u(i__86,j__85,k__84 - 1,3) * u(i__86,j_& - &_85,k__84 - 1,3) + u(i__86,j__85,k__84 - 1,4) * u(i__86,j__85,k__84 - 1,4)) / u(i__86,j__85,k__84 - 1,1) - flux_(2) = u(i__86,j__85,k__84 - 1,2) * u41__73 - flux_(3) = u(i__86,j__85,k__84 - 1,3) * u41__73 - flux_(4) = u(i__86,j__85,k__84 - 1,4) * u41__73 + c2 * (u(i__86,j__85,k__84 - 1,5) - q__76) - flux_(5) = (c1 * u(i__86,j__85,k__84 - 1,5) - c2 * q__76) * u41__73 - flux_(6) = u(i__86,j__85,k__84 + 1,4) - u41__73 = u(i__86,j__85,k__84 + 1,4) / u(i__86,j__85,k__84 + 1,1) - q__76 = 0.50d+00 * (u(i__86,j__85,k__84 + 1,2) * u(i__86,j__85,k__84 + 1,2) + u(i__86,j__85,k__84 + 1,3) * u(i__86,j_& - &_85,k__84 + 1,3) + u(i__86,j__85,k__84 + 1,4) * u(i__86,j__85,k__84 + 1,4)) / u(i__86,j__85,k__84 + 1,1) - flux_(7) = u(i__86,j__85,k__84 + 1,2) * u41__73 - flux_(8) = u(i__86,j__85,k__84 + 1,3) * u41__73 - flux_(9) = u(i__86,j__85,k__84 + 1,4) * u41__73 + c2 * (u(i__86,j__85,k__84 + 1,5) - q__76) - flux_(10) = (c1 * u(i__86,j__85,k__84 + 1,5) - c2 * q__76) * u41__73 - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - tz2 * (flux_(m__83 + 5) - flux_(m__83)) - enddo - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21k__63 = tmp__72 * u(i__86,j__85,k__84,2) - u31k__62 = tmp__72 * u(i__86,j__85,k__84,3) - u41k__61 = tmp__72 * u(i__86,j__85,k__84,4) - u51k__60 = tmp__72 * u(i__86,j__85,k__84,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84 - 1,1) - u21km1__51 = tmp__72 * u(i__86,j__85,k__84 - 1,2) - u31km1__50 = tmp__72 * u(i__86,j__85,k__84 - 1,3) - u41km1__49 = tmp__72 * u(i__86,j__85,k__84 - 1,4) - u51km1__48 = tmp__72 * u(i__86,j__85,k__84 - 1,5) - flux_(2) = tz3 * (u21k__63 - u21km1__51) - flux_(3) = tz3 * (u31k__62 - u31km1__50) - flux_(4) = 4.0d+00 / 3.0d+00 * tz3 * (u41k__61 - u41km1__49) - flux_(5) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k__63** 2 + u31k__62** 2 + u41k__61** 2 - (u21km1__51** 2 + u31& - &km1__50** 2 + u41km1__49** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k__61** 2 - u41km1__49** 2) + c1 * c5 * tz3 * (u51k__60 - u51km& - &1__48) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84 + 1,1) - u21k__63 = tmp__72 * u(i__86,j__85,k__84 + 1,2) - u31k__62 = tmp__72 * u(i__86,j__85,k__84 + 1,3) - u41k__61 = tmp__72 * u(i__86,j__85,k__84 + 1,4) - u51k__60 = tmp__72 * u(i__86,j__85,k__84 + 1,5) - tmp__72 = 1.0d+00 / u(i__86,j__85,k__84,1) - u21km1__51 = tmp__72 * u(i__86,j__85,k__84,2) - u31km1__50 = tmp__72 * u(i__86,j__85,k__84,3) - u41km1__49 = tmp__72 * u(i__86,j__85,k__84,4) - u51km1__48 = tmp__72 * u(i__86,j__85,k__84,5) - flux_(7) = tz3 * (u21k__63 - u21km1__51) - flux_(8) = tz3 * (u31k__62 - u31km1__50) - flux_(9) = 4.0d+00 / 3.0d+00 * tz3 * (u41k__61 - u41km1__49) - flux_(10) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 * (u21k__63** 2 + u31k__62** 2 + u41k__61** 2 - (u21km1__51** 2 + u3& - &1km1__50** 2 + u41km1__49** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k__61** 2 - u41km1__49** 2) + c1 * c5 * tz3 * (u51k__60 - u51k& - &m1__48) - rsd_(1) = rsd_(1) + dz1 * tz1 * (u(i__86,j__85,k__84 - 1,1) - 2.0d+00 * u(i__86,j__85,k__84,1) + u(i__86,j__85,k__84 & - &+ 1,1)) - rsd_(2) = rsd_(2) + tz3 * c3 * c4 * (flux_(7) - flux_(2)) + dz2 * tz1 * (u(i__86,j__85,k__84 - 1,2) - 2.0d+00 * u(i__& - &86,j__85,k__84,2) + u(i__86,j__85,k__84 + 1,2)) - rsd_(3) = rsd_(3) + tz3 * c3 * c4 * (flux_(8) - flux_(3)) + dz3 * tz1 * (u(i__86,j__85,k__84 - 1,3) - 2.0d+00 * u(i__& - &86,j__85,k__84,3) + u(i__86,j__85,k__84 + 1,3)) - rsd_(4) = rsd_(4) + tz3 * c3 * c4 * (flux_(9) - flux_(4)) + dz4 * tz1 * (u(i__86,j__85,k__84 - 1,4) - 2.0d+00 * u(i__& - &86,j__85,k__84,4) + u(i__86,j__85,k__84 + 1,4)) - rsd_(5) = rsd_(5) + tz3 * c3 * c4 * (flux_(10) - flux_(5)) + dz5 * tz1 * (u(i__86,j__85,k__84 - 1,5) - 2.0d+00 * u(i_& - &_86,j__85,k__84,5) + u(i__86,j__85,k__84 + 1,5)) - if (k__84 .eq. 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((+(5.0d+00)) * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 +& - & 1,m__83) + u(i__86,j__85,k__84 + 2,m__83)) - enddo - else if (k__84 .eq. 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * ((-(4.0d+00)) * u(i__86,j__85,k__84 - 1,m__83) + 6.0d+00 * u(i__86,j__85,k__& - &84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83) + u(i__86,j__85,k__84 + 2,m__83)) - enddo - else if (k__84 .ge. 4 .and. k__84 .le. nz - 3) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u(i__86,j__85,k__84 - 1,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83) + u(i__86,j__85,k__84 + 2,m__83)) - enddo - else if (k__84 .eq. nz - 2) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u(i__86,j__85,k__84 - 1,m__83) +& - & 6.0d+00 * u(i__86,j__85,k__84,m__83) - 4.0d+00 * u(i__86,j__85,k__84 + 1,m__83)) - enddo - else if (k__84 .eq. nz - 1) then - do m__83 = 1,5 - rsd_(m__83) = rsd_(m__83) - dssp * (u(i__86,j__85,k__84 - 2,m__83) - 4.0d+00 * u(i__86,j__85,k__84 - 1,m__83) +& - & 5.0d+00 * u(i__86,j__85,k__84,m__83)) - enddo - endif - do m__83 = 1,5 - rsd(i__86,j__85,k__84,m__83) = rsd_(m__83) - enddo - enddo - enddo - enddo -!DVM$ END REGION - mod_1150_42 = mod (istep,inorm) - if (mod_1150_42 .eq. 0 .or. istep .eq. itmax) then - v_1573_88 = isiz1 / 2 * 2 + 1 - v_1573_87 = isiz2 / 2 * 2 + 1 - do m__89 = 1,5 - rsdnm(m__89) = 0.0d+00 - enddo - r1 = 0.0d0 - r2 = 0.0d0 - r3 = 0.0d0 - r4 = 0.0d0 - r5 = 0.0d0 -!DVM$ REGION -!DVM$ PARALLEL (k__90,j__91,i__92) ON rsd(i__92,j__91,k__90,*),REDUCTION (sum(r1),sum(r2),sum(r3),sum(r4),sum(r5)),CUDA_BLOCK (32& -!DVM$&,4) - do k__90 = 2,nz0 - 1 - do j__91 = jst,jend - do i__92 = ist,iend - r1 = r1 + rsd(i__92,j__91,k__90,1) * rsd(i__92,j__91,k__90,1) - r2 = r2 + rsd(i__92,j__91,k__90,2) * rsd(i__92,j__91,k__90,2) - r3 = r3 + rsd(i__92,j__91,k__90,3) * rsd(i__92,j__91,k__90,3) - r4 = r4 + rsd(i__92,j__91,k__90,4) * rsd(i__92,j__91,k__90,4) - r5 = r5 + rsd(i__92,j__91,k__90,5) * rsd(i__92,j__91,k__90,5) - enddo - enddo - enddo -!DVM$ END REGION - rsdnm(1) = r1 - rsdnm(2) = r2 - rsdnm(3) = r3 - rsdnm(4) = r4 - rsdnm(5) = r5 - do m__89 = 1,5 - rsdnm(m__89) = sqrt (rsdnm(m__89) / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2))) - enddo - endif - if (rsdnm(1) .lt. tolrsd(1) .and. rsdnm(2) .lt. tolrsd(2) .and. rsdnm(3) .lt. tolrsd(3) .and. rsdnm(4) .lt. tolrsd(4) .and. rs& - &dnm(5) .lt. tolrsd(5)) then - goto 2047 - endif - istep = istep + 1 - if (touch .eq. 1) then - touch = 0 - goto 10001 - endif - if (istep .gt. itmax) goto 2046 - goto 2045 -2046 t = dvtime () - -!call etime(tarray) -! t = tarray(1) - now = t - t__110 = now - start(1) - elapsed(1) = elapsed(1) + t__110 - maxtime = elapsed(1) -2047 continue - do m__114 = 1,5 - errnm(m__114) = 0.0d+00 - enddo -!DVM$ GET_ACTUAL (u) -!DVM$ PARALLEL (k__115,j__116,i__117) ON u(i__117,j__116,k__115,*),REDUCTION (sum(errnm)),PRIVATE (jglob__112,iglob__113,dble_739_12& -!DVM$&,xi,dble_739_13,eta,dble_739_14,zeta,m__15,m__114,tmp__111,u000ijk) - do k__115 = 2,nz - 1 - do j__116 = jst,jend - do i__117 = ist,iend - jglob__112 = j__116 - iglob__113 = i__117 - dble_739_12 = dble (iglob__113 - 1) - xi = dble_739_12 / (nx0 - 1) - dble_739_13 = dble (jglob__112 - 1) - eta = dble_739_13 / (ny0 - 1) - dble_739_14 = dble (k__115 - 1) - zeta = dble_739_14 / (nz - 1) - do m__15 = 1,5 - u000ijk(m__15) = ce(m__15,1) + ce(m__15,2) * xi + ce(m__15,3) * eta + ce(m__15,4) * zeta + ce(m__15,5) * xi * xi +& - & ce(m__15,6) * eta * eta + ce(m__15,7) * zeta * zeta + ce(m__15,8) * xi * xi * xi + ce(m__15,9) * eta * eta * eta + ce(m__15,1& - &0) * zeta * zeta * zeta + ce(m__15,11) * xi * xi * xi * xi + ce(m__15,12) * eta * eta * eta * eta + ce(m__15,13) * zeta * zeta& - & * zeta * zeta - enddo - do m__114 = 1,5 - tmp__111 = u000ijk(m__114) - u(i__117,j__116,k__115,m__114) - errnm(m__114) = errnm(m__114) + tmp__111** 2 - enddo - enddo - enddo - enddo - do m__114 = 1,5 - errnm(m__114) = sqrt (errnm(m__114) / ((nx0 - 2) * (ny0 - 2) * (nz0 - 2))) - enddo - ibeg = nx + 1 - ifin = 0 - iglob1 = 1 - iglob2 = nx - if (iglob1 .ge. ii1 .and. iglob2 .lt. ii2 + nx) ibeg = 1 - if (iglob1 .gt. ii1 - nx .and. iglob2 .le. ii2) ifin = nx - if (ii1 .ge. iglob1 .and. ii1 .le. iglob2) ibeg = ii1 - if (ii2 .ge. iglob1 .and. ii2 .le. iglob2) ifin = ii2 - jbeg = ny + 1 - jfin = 0 - jglob1 = 1 - jglob2 = ny - if (jglob1 .ge. ji1 .and. jglob2 .lt. ji2 + ny) jbeg = 1 - if (jglob1 .gt. ji1 - ny .and. jglob2 .le. ji2) jfin = ny - if (ji1 .ge. jglob1 .and. ji1 .le. jglob2) jbeg = ji1 - if (ji2 .ge. jglob1 .and. ji2 .le. jglob2) jfin = ji2 - ifin1 = ifin - jfin1 = jfin - if (ifin1 .eq. ii2) ifin1 = ifin - 1 - if (jfin1 .eq. ji2) jfin1 = jfin - 1 - s1 = 0. - s2 = 0. -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s1)),SHADOW_RENEW (u(0:1,0:1,0:0,0:0)(corner)),PRI& -!DVM$&VATE (jglob__118,iglob__119) - do k__120 = ki1,ki1 - do j__121 = jbeg,jfin1 - do i__122 = ibeg,ifin1 - jglob__118 = j__121 - iglob__119 = i__122 - s1 = s1 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)** 2& - & + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122 + 1,j__121,k__120,5) - 0.50d+00 * (u(i__122 + & - &1,j__121,k__120,2)** 2 + u(i__122 + 1,j__121,k__120,3)** 2 + u(i__122 + 1,j__121,k__120,4)** 2) / u(i__122 + 1,j__121,k__120,1& - &)) - s1 = s1 + c2 * (u(i__122,j__121 + 1,k__120,5) - 0.50d+00 * (u(i__122,j__121 + 1,k__120,2)** 2 + u(i__122,j__121 + 1,k& - &__120,3)** 2 + u(i__122,j__121 + 1,k__120,4)** 2) / u(i__122,j__121 + 1,k__120,1)) + c2 * (u(i__122 + 1,j__121 + 1,k__120,5) -& - & 0.50d+00 * (u(i__122 + 1,j__121 + 1,k__120,2)** 2 + u(i__122 + 1,j__121 + 1,k__120,3)** 2 + u(i__122 + 1,j__121 + 1,k__120,4)& - &** 2) / u(i__122 + 1,j__121 + 1,k__120,1)) - enddo - enddo - enddo -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s2)),SHADOW_RENEW (u(0:1,0:1,0:0,0:0)(corner)),PRI& -!DVM$&VATE (jglob__118,iglob__119) - do k__120 = ki2,ki2 - do j__121 = jbeg,jfin1 - do i__122 = ibeg,ifin1 - jglob__118 = j__121 - iglob__119 = i__122 - s2 = s2 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)** 2& - & + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122 + 1,j__121,k__120,5) - 0.50d+00 * (u(i__122 + & - &1,j__121,k__120,2)** 2 + u(i__122 + 1,j__121,k__120,3)** 2 + u(i__122 + 1,j__121,k__120,4)** 2) / u(i__122 + 1,j__121,k__120,1& - &)) - s2 = s2 + c2 * (u(i__122,j__121 + 1,k__120,5) - 0.50d+00 * (u(i__122,j__121 + 1,k__120,2)** 2 + u(i__122,j__121 + 1,k& - &__120,3)** 2 + u(i__122,j__121 + 1,k__120,4)** 2) / u(i__122,j__121 + 1,k__120,1)) + c2 * (u(i__122 + 1,j__121 + 1,k__120,5) -& - & 0.50d+00 * (u(i__122 + 1,j__121 + 1,k__120,2)** 2 + u(i__122 + 1,j__121 + 1,k__120,3)** 2 + u(i__122 + 1,j__121 + 1,k__120,4)& - &** 2) / u(i__122 + 1,j__121 + 1,k__120,1)) - enddo - enddo - enddo - frc1 = dxi * deta * (s1 + s2) - s1 = 0. - jglob__118 = jbeg - ind1 = 0 - if (jglob__118 .eq. ji1) then - ind1 = 1 -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s1)),SHADOW_RENEW (u(0:1,0:0,0:1,0:0)(corner)),& -!DVM$&PRIVATE (iglob__119) - do k__120 = ki1,ki2 - 1 - do j__121 = jbeg,jbeg - do i__122 = ibeg,ifin1 - iglob__119 = i__122 - s1 = s1 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)*& - &* 2 + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122 + 1,j__121,k__120,5) - 0.50d+00 * (u(i__122& - & + 1,j__121,k__120,2)** 2 + u(i__122 + 1,j__121,k__120,3)** 2 + u(i__122 + 1,j__121,k__120,4)** 2) / u(i__122 + 1,j__121,k__12& - &0,1)) - s1 = s1 + c2 * (u(i__122,j__121,k__120 + 1,5) - 0.50d+00 * (u(i__122,j__121,k__120 + 1,2)** 2 + u(i__122,j__121,k_& - &_120 + 1,3)** 2 + u(i__122,j__121,k__120 + 1,4)** 2) / u(i__122,j__121,k__120 + 1,1)) + c2 * (u(i__122 + 1,j__121,k__120 + 1,5& - &) - 0.50d+00 * (u(i__122 + 1,j__121,k__120 + 1,2)** 2 + u(i__122 + 1,j__121,k__120 + 1,3)** 2 + u(i__122 + 1,j__121,k__120 + 1& - &,4)** 2) / u(i__122 + 1,j__121,k__120 + 1,1)) - enddo - enddo - enddo - endif - s2 = 0. - jglob__118 = jfin - ind2 = 0 - if (jglob__118 .eq. ji2) then - ind2 = 1 -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s2)),SHADOW_RENEW (u(0:1,0:0,0:1,0:0)(corner)),& -!DVM$&PRIVATE (iglob__119) - do k__120 = ki1,ki2 - 1 - do j__121 = jfin,jfin - do i__122 = ibeg,ifin1 - iglob__119 = i__122 - s2 = s2 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)*& - &* 2 + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122 + 1,j__121,k__120,5) - 0.50d+00 * (u(i__122& - & + 1,j__121,k__120,2)** 2 + u(i__122 + 1,j__121,k__120,3)** 2 + u(i__122 + 1,j__121,k__120,4)** 2) / u(i__122 + 1,j__121,k__12& - &0,1)) - s2 = s2 + c2 * (u(i__122,j__121,k__120 + 1,5) - 0.50d+00 * (u(i__122,j__121,k__120 + 1,2)** 2 + u(i__122,j__121,k_& - &_120 + 1,3)** 2 + u(i__122,j__121,k__120 + 1,4)** 2) / u(i__122,j__121,k__120 + 1,1)) + c2 * (u(i__122 + 1,j__121,k__120 + 1,5& - &) - 0.50d+00 * (u(i__122 + 1,j__121,k__120 + 1,2)** 2 + u(i__122 + 1,j__121,k__120 + 1,3)** 2 + u(i__122 + 1,j__121,k__120 + 1& - &,4)** 2) / u(i__122 + 1,j__121,k__120 + 1,1)) - enddo - enddo - enddo - endif - frc2 = dxi * dzeta * (s1 + s2) - s1 = 0. - s2 = 0. - iglob__119 = ibeg - ind1 = 0 - if (iglob__119 .eq. ii1) then - ind1 = 1 -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s1)),SHADOW_RENEW (u(0:0,0:1,0:1,0:0)(corner)),& -!DVM$&PRIVATE (jglob__118) - do k__120 = ki1,ki2 - 1 - do j__121 = jbeg,jfin1 - do i__122 = ibeg,ibeg - jglob__118 = j__121 - s1 = s1 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)*& - &* 2 + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122,j__121 + 1,k__120,5) - 0.50d+00 * (u(i__122& - &,j__121 + 1,k__120,2)** 2 + u(i__122,j__121 + 1,k__120,3)** 2 + u(i__122,j__121 + 1,k__120,4)** 2) / u(i__122,j__121 + 1,k__12& - &0,1)) - s1 = s1 + c2 * (u(i__122,j__121,k__120 + 1,5) - 0.50d+00 * (u(i__122,j__121,k__120 + 1,2)** 2 + u(i__122,j__121,k_& - &_120 + 1,3)** 2 + u(i__122,j__121,k__120 + 1,4)** 2) / u(i__122,j__121,k__120 + 1,1)) + c2 * (u(i__122,j__121 + 1,k__120 + 1,5& - &) - 0.50d+00 * (u(i__122,j__121 + 1,k__120 + 1,2)** 2 + u(i__122,j__121 + 1,k__120 + 1,3)** 2 + u(i__122,j__121 + 1,k__120 + 1& - &,4)** 2) / u(i__122,j__121 + 1,k__120 + 1,1)) - enddo - enddo - enddo - endif - iglob__119 = ifin - ind2 = 0 - if (iglob__119 .eq. ii2) then - ind2 = 1 -!DVM$ PARALLEL (k__120,j__121,i__122) ON u(i__122,j__121,k__120,*),REDUCTION (sum(s2)),SHADOW_RENEW (u(0:0,0:1,0:1,0:0)(corner)),& -!DVM$&PRIVATE (jglob__118) - do k__120 = ki1,ki2 - 1 - do j__121 = jbeg,jfin1 - do i__122 = ifin,ifin - jglob__118 = j__121 - s2 = s2 + c2 * (u(i__122,j__121,k__120,5) - 0.50d+00 * (u(i__122,j__121,k__120,2)** 2 + u(i__122,j__121,k__120,3)*& - &* 2 + u(i__122,j__121,k__120,4)** 2) / u(i__122,j__121,k__120,1)) + c2 * (u(i__122,j__121 + 1,k__120,5) - 0.50d+00 * (u(i__122& - &,j__121 + 1,k__120,2)** 2 + u(i__122,j__121 + 1,k__120,3)** 2 + u(i__122,j__121 + 1,k__120,4)** 2) / u(i__122,j__121 + 1,k__12& - &0,1)) - s2 = s2 + c2 * (u(i__122,j__121,k__120 + 1,5) - 0.50d+00 * (u(i__122,j__121,k__120 + 1,2)** 2 + u(i__122,j__121,k_& - &_120 + 1,3)** 2 + u(i__122,j__121,k__120 + 1,4)** 2) / u(i__122,j__121,k__120 + 1,1)) + c2 * (u(i__122,j__121 + 1,k__120 + 1,5& - &) - 0.50d+00 * (u(i__122,j__121 + 1,k__120 + 1,2)** 2 + u(i__122,j__121 + 1,k__120 + 1,3)** 2 + u(i__122,j__121 + 1,k__120 + 1& - &,4)** 2) / u(i__122,j__121 + 1,k__120 + 1,1)) - enddo - enddo - enddo - endif - frc3 = deta * dzeta * (s1 + s2) - frc = 0.25d+00 * (frc1 + frc2 + frc3) - epsilon = 1.0d-08 - class = 'U' - verified = .TRUE. - do m__124 = 1,5 - xcrref(m__124) = 1.0 - xceref(m__124) = 1.0 - enddo - xciref = 1.0 - if (nx0 .eq. 12 .and. ny0 .eq. 12 .and. nz0 .eq. 12 .and. itmax .eq. 50) then - class = 'S' - dtref = 5.0d-1 - xcrref(1) = 1.6196343210976702d-02 - xcrref(2) = 2.1976745164821318d-03 - xcrref(3) = 1.5179927653399185d-03 - xcrref(4) = 1.5029584435994323d-03 - xcrref(5) = 3.4264073155896461d-02 - xceref(1) = 6.4223319957960924d-04 - xceref(2) = 8.4144342047347926d-05 - xceref(3) = 5.8588269616485186d-05 - xceref(4) = 5.8474222595157350d-05 - xceref(5) = 1.3103347914111294d-03 - xciref = 7.8418928865937083d+00 - else if (nx0 .eq. 33 .and. ny0 .eq. 33 .and. nz0 .eq. 33 .and. itmax .eq. 300) then - class = 'W' - dtref = 1.5d-3 - xcrref(1) = 0.1236511638192d+02 - xcrref(2) = 0.1317228477799d+01 - xcrref(3) = 0.2550120713095d+01 - xcrref(4) = 0.2326187750252d+01 - xcrref(5) = 0.2826799444189d+02 - xceref(1) = 0.4867877144216d+00 - xceref(2) = 0.5064652880982d-01 - xceref(3) = 0.9281818101960d-01 - xceref(4) = 0.8570126542733d-01 - xceref(5) = 0.1084277417792d+01 - xciref = 0.1161399311023d+02 - else if (nx0 .eq. 64 .and. ny0 .eq. 64 .and. nz0 .eq. 64 .and. itmax .eq. 250) then - class = 'A' - dtref = 2.0d+0 - xcrref(1) = 7.7902107606689367d+02 - xcrref(2) = 6.3402765259692870d+01 - xcrref(3) = 1.9499249727292479d+02 - xcrref(4) = 1.7845301160418537d+02 - xcrref(5) = 1.8384760349464247d+03 - xceref(1) = 2.9964085685471943d+01 - xceref(2) = 2.8194576365003349d+00 - xceref(3) = 7.3473412698774742d+00 - xceref(4) = 6.7139225687777051d+00 - xceref(5) = 7.0715315688392578d+01 - xciref = 2.6030925604886277d+01 - else if (nx0 .eq. 102 .and. ny0 .eq. 102 .and. nz0 .eq. 102 .and. itmax .eq. 250) then - class = 'B' - dtref = 2.0d+0 - xcrref(1) = 3.5532672969982736d+03 - xcrref(2) = 2.6214750795310692d+02 - xcrref(3) = 8.8333721850952190d+02 - xcrref(4) = 7.7812774739425265d+02 - xcrref(5) = 7.3087969592545314d+03 - xceref(1) = 1.1401176380212709d+02 - xceref(2) = 8.1098963655421574d+00 - xceref(3) = 2.8480597317698308d+01 - xceref(4) = 2.5905394567832939d+01 - xceref(5) = 2.6054907504857413d+02 - xciref = 4.7887162703308227d+01 - else if (nx0 .eq. 162 .and. ny0 .eq. 162 .and. nz0 .eq. 162 .and. itmax .eq. 250) then - class = 'C' - dtref = 2.0d+0 - xcrref(1) = 1.03766980323537846d+04 - xcrref(2) = 8.92212458801008552d+02 - xcrref(3) = 2.56238814582660871d+03 - xcrref(4) = 2.19194343857831427d+03 - xcrref(5) = 1.78078057261061185d+04 - xceref(1) = 2.15986399716949279d+02 - xceref(2) = 1.55789559239863600d+01 - xceref(3) = 5.41318863077207766d+01 - xceref(4) = 4.82262643154045421d+01 - xceref(5) = 4.55902910043250358d+02 - xciref = 6.66404553572181300d+01 - else if (nx0 .eq. 408 .and. ny0 .eq. 408 .and. nz0 .eq. 408 .and. itmax .eq. 300) then - class = 'D' - dtref = 1.0d+0 - xcrref(1) = 0.4868417937025d+05 - xcrref(2) = 0.4696371050071d+04 - xcrref(3) = 0.1218114549776d+05 - xcrref(4) = 0.1033801493461d+05 - xcrref(5) = 0.7142398413817d+05 - xceref(1) = 0.3752393004482d+03 - xceref(2) = 0.3084128893659d+02 - xceref(3) = 0.9434276905469d+02 - xceref(4) = 0.8230686681928d+02 - xceref(5) = 0.7002620636210d+03 - xciref = 0.8334101392503d+02 - else if (nx0 .eq. 1020 .and. ny0 .eq. 1020 .and. nz0 .eq. 1020 .and. itmax .eq. 300) then - class = 'E' - dtref = 0.5d+0 - xcrref(1) = 0.2099641687874d+06 - xcrref(2) = 0.2130403143165d+05 - xcrref(3) = 0.5319228789371d+05 - xcrref(4) = 0.4509761639833d+05 - xcrref(5) = 0.2932360006590d+06 - xceref(1) = 0.4800572578333d+03 - xceref(2) = 0.4221993400184d+02 - xceref(3) = 0.1210851906824d+03 - xceref(4) = 0.1047888986770d+03 - xceref(5) = 0.8363028257389d+03 - xciref = 0.9512163272273d+02 - else - verified = .FALSE. - endif - do m__124 = 1,5 - xcrdif(m__124) = dabs ((rsdnm(m__124) - xcrref(m__124)) / xcrref(m__124)) - xcedif(m__124) = dabs ((errnm(m__124) - xceref(m__124)) / xceref(m__124)) - enddo - xcidif = dabs ((frc - xciref) / xciref) - if (class .ne. 'U') then - write (unit = *,fmt = 1990) class - write (unit = *,fmt = 2000) epsilon - dabs_1966_123 = dabs (dt - dtref) - if (dabs_1966_123 .gt. epsilon) then - verified = .FALSE. - class = 'U' - write (unit = *,fmt = 2060) dtref - endif - else - write (unit = *,fmt = 1995) - endif - if (class .ne. 'U') then - write (unit = *,fmt = 2061) - else - write (unit = *,fmt = 2005) - endif - do m__124 = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m__124,rsdnm(m__124) - else if (xcrdif(m__124) .gt. epsilon .or. isnan (xcrdif(m__124))) then - verified = .FALSE. - write (unit = *,fmt = 2010) m__124,rsdnm(m__124),xcrref(m__124),xcrdif(m__124) - else - write (unit = *,fmt = 2011) m__124,rsdnm(m__124),xcrref(m__124),xcrdif(m__124) - endif - enddo - if (class .ne. 'U') then - write (unit = *,fmt = 2062) - else - write (unit = *,fmt = 2006) - endif - do m__124 = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m__124,errnm(m__124) - else if (xcedif(m__124) .gt. epsilon .or. isnan (xcedif(m__124))) then - verified = .FALSE. - write (unit = *,fmt = 2010) m__124,errnm(m__124),xceref(m__124),xcedif(m__124) - else - write (unit = *,fmt = 2011) m__124,errnm(m__124),xceref(m__124),xcedif(m__124) - endif - enddo - if (class .ne. 'U') then - write (unit = *,fmt = 2025) - else - write (unit = *,fmt = 2026) - endif - if (class .eq. 'U') then - write (unit = *,fmt = 2030) frc - else if (xcidif .gt. epsilon .or. isnan (xcidif)) then - verified = .FALSE. - write (unit = *,fmt = 2031) frc,xciref,xcidif - else - write (unit = *,fmt = 2032) frc,xciref,xcidif - endif - if (class .eq. 'U') then - write (unit = *,fmt = 2022) - write (unit = *,fmt = 2023) - else if (verified) then - write (unit = *,fmt = 2020) - else - write (unit = *,fmt = 2021) - endif - float_141_0 = float (itmax) - float_141_1 = float (nx0) - float_141_2 = float (ny0) - float_141_3 = float (nz0) - float_141_4 = float (nx0 + ny0 + nz0) - float_141_5 = float (nx0 + ny0 + nz0) - mflops = float_141_0 * (1984.77 * float_141_1 * float_141_2 * float_141_3 - 10923.3 * (float_141_4 / 3.)** 2 + 27770.9 * float& - &_141_5 / 3. - 144010.) / (maxtime * 1000000.) - print_results_142_arg1_6 = 'LU' - print_results_142_arg9_7 = ' floating point' - write (unit = *,fmt = 2) print_results_142_arg1_6 - write (unit = *,fmt = 3) class - if (ny0 .eq. 0 .and. nz0 .eq. 0) then - if (print_results_142_arg1_6(1:2) .eq. 'EP') then - write (unit = size,fmt = '(f12.0)') 2.d0** nx0 - do j__125 = 13,1,(-(1)) - if (size(j__125:j__125) .eq. '.') size(j__125:j__125) = ' ' - enddo - write (unit = *,fmt = 42) size - else - write (unit = *,fmt = 44) nx0 - endif - else - write (unit = *,fmt = 4) nx0,ny0,nz0 - endif - write (unit = *,fmt = 5) itmax - write (unit = *,fmt = 6) maxtime - write (unit = *,fmt = 9) mflops - write (unit = *,fmt = 11) print_results_142_arg9_7 - if (verified) then - write (unit = *,fmt = 12) ' SUCCESSFUL' - else - write (unit = *,fmt = 12) 'UNSUCCESSFUL' - endif - write (unit = *,fmt = 13) npbversion - write (unit = *,fmt = 130) - -! , compiletime, cs1, cs2, cs3, cs4, cs5, cs6, '(none)') - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/pintgr.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/pintgr.f deleted file mode 100644 index ea12392..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/pintgr.f +++ /dev/null @@ -1,187 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine pintgr () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k - integer ibeg,ifin,ifin1 - integer jbeg,jfin,jfin1 - -!DVM$ ALIGN phi1(iEX1,iEX2) WITH dvmh_temp0(*,iEX1,*,iEX2) -!DVM$ ALIGN phi2(iEX1,iEX2) WITH dvmh_temp0(*,iEX1,*,iEX2) -!DVM$ DYNAMIC phi1,phi2 - double precision phi1(0:isiz2 + 1,0:isiz3 + 1),phi2(0:isiz2 + 1,0 - &:isiz3 + 1) -!DVM$ SHADOW phi2( 0:1,0:1 ) -!DVM$ SHADOW phi1( 0:1,0:1 ) - double precision frc1,frc2,frc3 - -!--------------------------------------------------------------------- -! set up the sub-domains for integeration in each processor -!--------------------------------------------------------------------- - ibeg = ii1 - ifin = ii2 - jbeg = ji1 - jfin = ji2 - ifin1 = ifin - 1 - jfin1 = jfin - 1 - -!--------------------------------------------------------------------- -! initialize -!--------------------------------------------------------------------- -!DVM$ PARALLEL (i,k) ON phi1(i,k), PRIVATE (k,i) - do i = 0,isiz2 + 1 - do k = 0,isiz3 + 1 - phi1(i,k) = 0. - phi2(i,k) = 0. - enddo - enddo -!DVM$ PARALLEL (j,i) ON phi1(i,j), REMOTE_ACCESS (u(:,:,:,:)),PRIVATE (k -!DVM$&,j,i) - do j = jbeg,jfin - do i = ibeg,ifin - k = ki1 - phi1(i,j) = c2 * (u(5,i,j,k) - 0.50d+00 * (u(2,i,j,k)** 2 + - &u(3,i,j,k)** 2 + u(4,i,j,k)** 2) / u(1,i,j,k)) - k = ki2 - phi2(i,j) = c2 * (u(5,i,j,k) - 0.50d+00 * (u(2,i,j,k)** 2 + - &u(3,i,j,k)** 2 + u(4,i,j,k)** 2) / u(1,i,j,k)) - enddo - enddo - frc1 = 0.0d+00 -!DVM$ PARALLEL (j,i) ON phi1(i,j), PRIVATE (j,i),SHADOW_RENEW (phi1(CORN -!DVM$&ER),phi2(CORNER)),REDUCTION (sum (frc1)) - do j = jbeg,jfin1 - do i = ibeg,ifin1 - frc1 = frc1 + (phi1(i,j) + phi1(i + 1,j) + phi1(i,j + 1) + p - &hi1(i + 1,j + 1) + phi2(i,j) + phi2(i + 1,j) + phi2(i,j + 1) + phi - &2(i + 1,j + 1)) - enddo - enddo - frc1 = dxi * deta * frc1 - -!--------------------------------------------------------------------- -! initialize -!--------------------------------------------------------------------- -!DVM$ PARALLEL (i,k) ON phi1(i,k), PRIVATE (k,i) - do i = 0,isiz2 + 1 - do k = 0,isiz3 + 1 - phi1(i,k) = 0. - phi2(i,k) = 0. - enddo - enddo - if (jbeg .eq. ji1) then -!DVM$ PARALLEL (k,i) ON phi1(i,k), REMOTE_ACCESS (u(:,:,:,:)),PRIVATE -!DVM$& (k,i) - do k = ki1,ki2 - do i = ibeg,ifin - phi1(i,k) = c2 * (u(5,i,jbeg,k) - 0.50d+00 * (u(2,i,jbeg, - &k)** 2 + u(3,i,jbeg,k)** 2 + u(4,i,jbeg,k)** 2) / u(1,i,jbeg,k)) - enddo - enddo - endif - if (jfin .eq. ji2) then -!DVM$ PARALLEL (k,i) ON phi2(i,k), REMOTE_ACCESS (u(:,:,:,:)),PRIVATE -!DVM$& (k,i) - do k = ki1,ki2 - do i = ibeg,ifin - phi2(i,k) = c2 * (u(5,i,jfin,k) - 0.50d+00 * (u(2,i,jfin, - &k)** 2 + u(3,i,jfin,k)** 2 + u(4,i,jfin,k)** 2) / u(1,i,jfin,k)) - enddo - enddo - endif - frc2 = 0.0d+00 -!DVM$ PARALLEL (k,i) ON phi1(i,k), PRIVATE (k,i),SHADOW_RENEW (phi1(CORN -!DVM$&ER),phi2(CORNER)),REDUCTION (sum (frc2)) - do k = ki1,ki2 - 1 - do i = ibeg,ifin1 - frc2 = frc2 + (phi1(i,k) + phi1(i + 1,k) + phi1(i,k + 1) + p - &hi1(i + 1,k + 1) + phi2(i,k) + phi2(i + 1,k) + phi2(i,k + 1) + phi - &2(i + 1,k + 1)) - enddo - enddo - frc2 = dxi * dzeta * frc2 - -!--------------------------------------------------------------------- -! initialize -!--------------------------------------------------------------------- -!DVM$ PARALLEL (i,k) ON phi1(i,k), PRIVATE (k,i) - do i = 0,isiz2 + 1 - do k = 0,isiz3 + 1 - phi1(i,k) = 0. - phi2(i,k) = 0. - enddo - enddo - if (ibeg .eq. ii1) then -!DVM$ PARALLEL (k,j) ON phi1(j,k), REMOTE_ACCESS (u(:,:,:,:)),PRIVATE -!DVM$& (k,j) - do k = ki1,ki2 - do j = jbeg,jfin - phi1(j,k) = c2 * (u(5,ibeg,j,k) - 0.50d+00 * (u(2,ibeg,j, - &k)** 2 + u(3,ibeg,j,k)** 2 + u(4,ibeg,j,k)** 2) / u(1,ibeg,j,k)) - enddo - enddo - endif - if (ifin .eq. ii2) then -!DVM$ PARALLEL (k,j) ON phi2(j,k), REMOTE_ACCESS (u(:,:,:,:)),PRIVATE -!DVM$& (k,j) - do k = ki1,ki2 - do j = jbeg,jfin - phi2(j,k) = c2 * (u(5,ifin,j,k) - 0.50d+00 * (u(2,ifin,j, - &k)** 2 + u(3,ifin,j,k)** 2 + u(4,ifin,j,k)** 2) / u(1,ifin,j,k)) - enddo - enddo - endif - frc3 = 0.0d+00 -!DVM$ PARALLEL (k,j) ON phi1(j,k), PRIVATE (k,j),SHADOW_RENEW (phi1(CORN -!DVM$&ER),phi2(CORNER)),REDUCTION (sum (frc3)) - do k = ki1,ki2 - 1 - do j = jbeg,jfin1 - frc3 = frc3 + (phi1(j,k) + phi1(j + 1,k) + phi1(j,k + 1) + p - &hi1(j + 1,k + 1) + phi2(j,k) + phi2(j + 1,k) + phi2(j,k + 1) + phi - &2(j + 1,k + 1)) - enddo - enddo - frc3 = deta * dzeta * frc3 - frc = 0.25d+00 * (frc1 + frc2 + frc3) - -! write (*,1001) frc - return - -! 1001 format (//5x,'surface integral = ',1pe12.5//) - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/print_results.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/print_results.f deleted file mode 100644 index d2fe91e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/print_results.f +++ /dev/null @@ -1,111 +0,0 @@ - - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion, - > compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character name*(*) - character class*1 - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*15 - logical verified - character*(*) npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7 - - write (*, 2) name - 2 format(//, ' ', A, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f15.0)' ) 2.d0**n1 - j = 15 - if (size(j:j) .eq. '.') then - size(j:j) = ' ' - j = j - 1 - endif - write (*,42) size(1:j) - 42 format(' Size = ',9x, a15) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',9x, i4,'x',i4,'x',i4) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - - write(*,14) compiletime - 14 format(' Compile date = ', 12x, a12) - - - write (*,121) cs1 - 121 format(/, ' Compile options:', /, - > ' F77 = ', A) - - write (*,122) cs2 - 122 format(' FLINK = ', A) - - write (*,123) cs3 - 123 format(' F_LIB = ', A) - - write (*,124) cs4 - 124 format(' F_INC = ', A) - - write (*,125) cs5 - 125 format(' FFLAGS = ', A) - - write (*,126) cs6 - 126 format(' FLINKFLAGS = ', A) - - write(*, 127) cs7 - 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send all errors/feedbacks to:'// - > ' NPB Development Team'/ - > ' npb@nas.nasa.gov'//) -c 130 format(//' Please send the results of this run to:'// -c > ' NPB Development Team '/ -c > ' Internet: npb@nas.nasa.gov'/ -c > ' '/ -c > ' If email is not available, send this to:'// -c > ' MS T27A-1'/ -c > ' NASA Ames Research Center'/ -c > ' Moffett Field, CA 94035-1000'// -c > ' Fax: 650-604-3957'//) - - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/read_input.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/read_input.f deleted file mode 100644 index c1716d0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/read_input.f +++ /dev/null @@ -1,115 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine read_input () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer fstatus - -!--------------------------------------------------------------------- -! if input file does not exist, it uses defaults -! ipr = 1 for detailed progress output -! inorm = how often the norm is printed (once every inorm iterations) -! itmax = number of pseudo time steps -! dt = time step -! omega 1 over-relaxation factor for SSOR -! tolrsd = steady state residual tolerance levels -! nx, ny, nz = number of grid points in x, y, z directions -!--------------------------------------------------------------------- - write (unit = *,fmt = 1000) - open (unit = 3,file = 'inputlu.data',status = 'old',access = 'sequ - &ential',form = 'formatted',iostat = fstatus) - if (fstatus .eq. 0) then - write (unit = *,fmt = *) 'Reading from input file inputlu.data' - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) ipr,inorm - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) itmax - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) dt - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) omega - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) tolrsd(1),tolrsd(2),tolrsd(3),tolrsd(4) - &,tolrsd(5) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) - read (unit = 3,fmt = *) nx0,ny0,nz0 - close (unit = 3) - else - ipr = ipr_default - inorm = inorm_default - itmax = itmax_default - dt = dt_default - omega = omega_default - tolrsd(1) = tolrsd1_def - tolrsd(2) = tolrsd2_def - tolrsd(3) = tolrsd3_def - tolrsd(4) = tolrsd4_def - tolrsd(5) = tolrsd5_def - nx0 = isiz1 - ny0 = isiz2 - nz0 = isiz3 - endif - -!--------------------------------------------------------------------- -! check problem size -!--------------------------------------------------------------------- - if (nx0 .lt. 4 .or. ny0 .lt. 4 .or. nz0 .lt. 4) then - write (unit = *,fmt = 2001) -2001 format (5x,'PROBLEM SIZE IS TOO SMALL - ', / - &5x,'SET EACH OF NX, NY AND NZ AT LEAST EQUAL TO 5') - stop - endif - if (nx0 .gt. isiz1 .or. ny0 .gt. isiz2 .or. nz0 .gt. isiz3) then - write (unit = *,fmt = 2002) -2002 format (5x,'PROBLEM SIZE IS TOO LARGE - ', / - &5x,'NX, NY AND NZ SHOULD BE EQUAL TO ', /5x,'ISIZ1, ISIZ - &2 AND ISIZ3 RESPECTIVELY') - stop - endif - write (unit = *,fmt = 1001) nx0,ny0,nz0 - write (unit = *,fmt = 1002) itmax - write (unit = *,fmt = *) -1000 format(//,' NAS Parallel Benchmarks (NPB3.3-SER)', ' - LU - & Benchmark', /) -1001 format(' Size: ', i4, 'x', i4, 'x', i4) -1002 format(' Iterations: ', i4) - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f deleted file mode 100644 index 23ff003..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f +++ /dev/null @@ -1,420 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c compute the right hand sides -c--------------------------------------------------------------------- - - implicit none - - include 'applu.incl' - -c--------------------------------------------------------------------- -c local variables -c--------------------------------------------------------------------- - integer i, j, k, m, p - double precision q - double precision tmp, utmp(6,isiz3), rtmp(5,isiz3) - double precision u21, u31, u41 - double precision u21i, u31i, u41i, u51i - double precision u21j, u31j, u41j, u51j - double precision u21k, u31k, u41k, u51k - double precision u21im1, u31im1, u41im1, u51im1 - double precision u21jm1, u31jm1, u41jm1, u51jm1 - double precision u21km1, u31km1, u41km1, u51km1 - double precision flu(5,-1:1) - - - if (timeron) call timer_start(t_rhs) -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON qs(i,j,k), PRIVATE (j,i,tmp,k,m) -!DVM$&,SHADOW_COMPUTE,SHADOW_RENEW (u) - do k = 1, nz - do j = 1, ny - do i = 1, nx - do m = 1, 5 - rsd(m,i,j,k) = - frct(m,i,j,k) - end do - tmp = 1.0d+00 / u(1,i,j,k) - qs(i,j,k) = 0.50d+00 * ( u(2,i,j,k) * u(2,i,j,k) - > + u(3,i,j,k) * u(3,i,j,k) - > + u(4,i,j,k) * u(4,i,j,k) ) - > * tmp - end do - end do - end do - -! if (timeron) call timer_start(t_rhsx) -!DVM$ PARALLEL (k,j,i) on rsd(*,i,j,k), -!DVM$&PRIVATE(p, u21, q, m, tmp, u21i, u31i, u41i, u51i, u21im1, -!DVM$&u31im1, u41im1, u51im1, u31, u21j, u31j, u41j, u51j, u21jm1, -!DVM$&u41jm1, u51jm1, u41, u21k, u31k, u41k, u51k, u21km1, u31km1, -!DVM$&u51km1, u31jm1,u41km1,flu), cuda_block (32,4) - do k = 2, nz - 1 - do j = jst, jend - do i = ist, iend - do p = -1, 1, 2 - flu(1,p) = u(2,i+p,j,k) - u21 = u(2,i+p,j,k) / u(1,i+p,j,k) - - q = qs(i+p,j,k) - - flu(2,p) = u(2,i+p,j,k) * u21 + c2 * - > ( u(5,i+p,j,k) - q ) - flu(3,p) = u(3,i+p,j,k) * u21 - flu(4,p) = u(4,i+p,j,k) * u21 - flu(5,p) = ( c1 * u(5,i+p,j,k) - c2 * q ) * u21 - end do - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - tx2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p = 0, 1 - tmp = 1.0d+00/ u(1,i+p,j,k) - - u21i = tmp * u(2,i+p,j,k) - u31i = tmp * u(3,i+p,j,k) - u41i = tmp * u(4,i+p,j,k) - u51i = tmp * u(5,i+p,j,k) - - tmp = 1.0d+00/ u(1,i-1+p,j,k) - - u21im1 = tmp * u(2,i-1+p,j,k) - u31im1 = tmp * u(3,i-1+p,j,k) - u41im1 = tmp * u(4,i-1+p,j,k) - u51im1 = tmp * u(5,i-1+p,j,k) - - flu(2,p) = (4.0d+00/3.0d+00) * tx3 * (u21i-u21im1) - flu(3,p) = tx3 * ( u31i - u31im1 ) - flu(4,p) = tx3 * ( u41i - u41im1 ) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5) - > * tx3 * ( ( u21i **2 + u31i **2+u41i **2) - > - ( u21im1**2 + u31im1**2+u41im1**2)) - > + (1.0d+00/6.0d+00) - > * tx3 * ( u21i**2 - u21im1**2 ) - > + c1 * c5 * tx3 * ( u51i - u51im1 ) - enddo - - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dx1 * tx1 * ( u(1,i-1,j,k) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i+1,j,k) ) - rsd(2,i,j,k) = rsd(2,i,j,k) - > + tx3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dx2 * tx1 * ( u(2,i-1,j,k) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i+1,j,k) ) - rsd(3,i,j,k) = rsd(3,i,j,k) - > + tx3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dx3 * tx1 * ( u(3,i-1,j,k) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i+1,j,k) ) - rsd(4,i,j,k) = rsd(4,i,j,k) - > + tx3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dx4 * tx1 * ( u(4,i-1,j,k) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i+1,j,k) ) - rsd(5,i,j,k) = rsd(5,i,j,k) - > + tx3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dx5 * tx1 * ( u(5,i-1,j,k) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i+1,j,k) ) - - - if (i .eq. 2)then - do m = 1, 5 - rsd(m,2,j,k) = rsd(m,2,j,k) - > - dssp * ( + 5.0d+00 * u(m,2,j,k) - > - 4.0d+00 * u(m,3,j,k) - > + u(m,4,j,k) ) - enddo - else if (i .eq. 3)then - do m = 1, 5 - rsd(m,3,j,k) = rsd(m,3,j,k) - > - dssp * ( - 4.0d+00 * u(m,2,j,k) - > + 6.0d+00 * u(m,3,j,k) - > - 4.0d+00 * u(m,4,j,k) - > + u(m,5,j,k) ) - enddo - else if (i .eq. nx-2)then - do m = 1, 5 - rsd(m,nx-2,j,k) = rsd(m,nx-2,j,k) - > - dssp * ( u(m,nx-4,j,k) - > - 4.0d+00 * u(m,nx-3,j,k) - > + 6.0d+00 * u(m,nx-2,j,k) - > - 4.0d+00 * u(m,nx-1,j,k) ) - enddo - else if (i .eq. nx-1)then - do m = 1, 5 - rsd(m,nx-1,j,k) = rsd(m,nx-1,j,k) - > - dssp * ( u(m,nx-3,j,k) - > - 4.0d+00 * u(m,nx-2,j,k) - > + 5.0d+00 * u(m,nx-1,j,k) ) - enddo - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i-2,j,k) - > - 4.0d+00 * u(m,i-1,j,k) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i+1,j,k) - > + u(m,i+2,j,k) ) - end do - endif - ! end do - ! end do -! end do -! if (timeron) call timer_stop(t_rhsx) - -! if (timeron) call timer_start(t_rhsy) -! do k = 2, nz - 1 - ! do j = jst, jend - ! do i = ist, iend - do p = -1, 1, 2 - flu(1,p) = u(3,i,j+p,k) - u31 = u(3,i,j+p,k) / u(1,i,j+p,k) - - q = qs(i,j+p,k) - - flu(2,p) = u(2,i,j+p,k) * u31 - flu(3,p) = u(3,i,j+p,k) * u31 + c2 * (u(5,i,j+p,k)-q) - flu(4,p) = u(4,i,j+p,k) * u31 - flu(5,p) = ( c1 * u(5,i,j+p,k) - c2 * q ) * u31 - end do - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - ty2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p = 0, 1 - tmp = 1.0d+00/ u(1,i,j+p,k) - - u21j = tmp * u(2,i,j+p,k) - u31j = tmp * u(3,i,j+p,k) - u41j = tmp * u(4,i,j+p,k) - u51j = tmp * u(5,i,j+p,k) - - tmp = 1.0d+00/ u(1,i,j-1+p,k) - u21jm1 = tmp * u(2,i,j-1+p,k) - u31jm1 = tmp * u(3,i,j-1+p,k) - u41jm1 = tmp * u(4,i,j-1+p,k) - u51jm1 = tmp * u(5,i,j-1+p,k) - - flu(2,p) = ty3 * ( u21j - u21jm1 ) - flu(3,p) = (4.0d+00/3.0d+00) * ty3 * (u31j-u31jm1) - flu(4,p) = ty3 * ( u41j - u41jm1 ) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5 ) - > * ty3 * ( ( u21j **2 + u31j **2 + u41j **2 ) - > - ( u21jm1**2 + u31jm1**2 + u41jm1**2 ) ) - > + (1.0d+00/6.0d+00) - > * ty3 * ( u31j**2 - u31jm1**2 ) - > + c1 * c5 * ty3 * ( u51j - u51jm1 ) - enddo - - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dy1 * ty1 * ( u(1,i,j-1,k) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i,j+1,k) ) - - rsd(2,i,j,k) = rsd(2,i,j,k) - > + ty3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dy2 * ty1 * ( u(2,i,j-1,k) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i,j+1,k) ) - - rsd(3,i,j,k) = rsd(3,i,j,k) - > + ty3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dy3 * ty1 * ( u(3,i,j-1,k) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i,j+1,k) ) - - rsd(4,i,j,k) = rsd(4,i,j,k) - > + ty3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dy4 * ty1 * ( u(4,i,j-1,k) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i,j+1,k) ) - - rsd(5,i,j,k) = rsd(5,i,j,k) - > + ty3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dy5 * ty1 * ( u(5,i,j-1,k) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i,j+1,k) ) - - - - if (j .eq. 2) then - do m = 1, 5 - rsd(m,i,2,k) = rsd(m,i,2,k) - > - dssp * ( + 5.0d+00 * u(m,i,2,k) - > - 4.0d+00 * u(m,i,3,k) - > + u(m,i,4,k) ) - enddo - elseif (j .eq. 3) then - do m = 1, 5 - rsd(m,i,3,k) = rsd(m,i,3,k) - > - dssp * ( - 4.0d+00 * u(m,i,2,k) - > + 6.0d+00 * u(m,i,3,k) - > - 4.0d+00 * u(m,i,4,k) - > + u(m,i,5,k) ) - end do - elseif (j .eq. ny-2) then - do m = 1, 5 - rsd(m,i,ny-2,k) = rsd(m,i,ny-2,k) - > - dssp * ( u(m,i,ny-4,k) - > - 4.0d+00 * u(m,i,ny-3,k) - > + 6.0d+00 * u(m,i,ny-2,k) - > - 4.0d+00 * u(m,i,ny-1,k) ) - enddo - elseif (j .eq. ny-1) then - do m = 1, 5 - rsd(m,i,ny-1,k) = rsd(m,i,ny-1,k) - > - dssp * ( u(m,i,ny-3,k) - > - 4.0d+00 * u(m,i,ny-2,k) - > + 5.0d+00 * u(m,i,ny-1,k) ) - end do - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i,j-2,k) - > - 4.0d+00 * u(m,i,j-1,k) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i,j+1,k) - > + u(m,i,j+2,k) ) - end do - endif - -! end do -! end do -! end do - -! if (timeron) call timer_stop(t_rhsy) - -! if (timeron) call timer_start(t_rhsz) -! do k = 2, nz - 1 -! do j = jst, jend -! do i = ist, iend - do p=-1,1,2 - flu(1,p) = u(4,i,j,k+p) - u41 = u(4,i,j,k+p) / u(1,i,j,k+p) - - q = qs(i,j,k+p) - - flu(2,p) = u(2,i,j,k+p) * u41 - flu(3,p) = u(3,i,j,k+p) * u41 - flu(4,p) = u(4,i,j,k+p) * u41 + c2 * (u(5,i,j,k+p)-q) - flu(5,p) = ( c1 * u(5,i,j,k+p) - c2 * q ) * u41 - enddo - - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - tz2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p=0,1 - tmp = 1.0d+00/ u(1,i,j,k+p) - - u21k = tmp * u(2,i,j,k+p) - u31k = tmp * u(3,i,j,k+p) - u41k = tmp * u(4,i,j,k+p) - u51k = tmp * u(5,i,j,k+p) - - tmp = 1.0d+00/ u(1,i,j,k-1+p) - - u21km1 = tmp * u(2,i,j,k-1+p) - u31km1 = tmp * u(3,i,j,k-1+p) - u41km1 = tmp * u(4,i,j,k-1+p) - u51km1 = tmp * u(5,i,j,k-1+p) - - flu(2,p) = tz3 * ( u21k - u21km1 ) - flu(3,p) = tz3 * ( u31k - u31km1 ) - flu(4,p) = (4.0d+00/3.0d+00) * tz3 * (u41k-u41km1) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5 ) - > * tz3 * ( ( u21k **2 + u31k **2 + u41k **2 ) - > - ( u21km1**2 + u31km1**2 + u41km1**2 ) ) - > + (1.0d+00/6.0d+00) - > * tz3 * ( u41k**2 - u41km1**2 ) - > + c1 * c5 * tz3 * ( u51k - u51km1 ) - enddo - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dz1 * tz1 * ( u(1,i,j,k-1) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i,j,k+1) ) - rsd(2,i,j,k) = rsd(2,i,j,k) - > + tz3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dz2 * tz1 * ( u(2,i,j,k-1) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i,j,k+1) ) - rsd(3,i,j,k) = rsd(3,i,j,k) - > + tz3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dz3 * tz1 * ( u(3,i,j,k-1) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i,j,k+1) ) - rsd(4,i,j,k) = rsd(4,i,j,k) - > + tz3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dz4 * tz1 * ( u(4,i,j,k-1) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i,j,k+1) ) - rsd(5,i,j,k) = rsd(5,i,j,k) - > + tz3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dz5 * tz1 * ( u(5,i,j,k-1) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i,j,k+1) ) - - - if (k .eq. 2) then - do m = 1, 5 - rsd(m,i,j,2) = rsd(m,i,j,2) - > - dssp * ( + 5.0d+00 * u(m,i,j,2) - > - 4.0d+00 * u(m,i,j,3) - > + u(m,i,j,4) ) - end do - elseif (k .eq. 3) then - do m = 1, 5 - rsd(m,i,j,3) = rsd(m,i,j,3) - > - dssp * ( - 4.0d+00 * u(m,i,j,2) - > + 6.0d+00 * u(m,i,j,3) - > - 4.0d+00 * u(m,i,j,4) - > + u(m,i,j,5) ) - end do - elseif (k .eq. nz-2) then - do m = 1, 5 - rsd(m,i,j,nz-2) = rsd(m,i,j,nz-2) - > - dssp * ( u(m,i,j,nz-4) - > - 4.0d+00 * u(m,i,j,nz-3) - > + 6.0d+00 * u(m,i,j,nz-2) - > - 4.0d+00 * u(m,i,j,nz-1) ) - end do - elseif (k .eq. nz-1) then - do m = 1, 5 - rsd(m,i,j,nz-1) = rsd(m,i,j,nz-1) - > - dssp * ( u(m,i,j,nz-3) - > - 4.0d+00 * u(m,i,j,nz-2) - > + 5.0d+00 * u(m,i,j,nz-1) ) - end do - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i,j,k-2) - > - 4.0d+00 * u(m,i,j,k-1) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i,j,k+1) - > + u(m,i,j,k+2) ) - end do - endif - - end do - end do - end do -!DVM$ end region -! if (timeron) call timer_stop(t_rhsz) - if (timeron) call timer_stop(t_rhs) - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f1 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f1 deleted file mode 100644 index 02b1dc0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f1 +++ /dev/null @@ -1,536 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine rhs () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! compute the right hand sides -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k,m - -!DVM$ ALIGN flux_br3(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX3,iEX -!DVM$&4,iEX2) -!DVM$ DYNAMIC flux_br3 - double precision ,allocatable:: flux_br3(:,:,:,:) -!DVM$ SHADOW flux_br3( 0:0,1:1,0:0,0:0 ) - -!DVM$ ALIGN flux_br2(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX3,iEX -!DVM$&2,iEX4) -!DVM$ DYNAMIC flux_br2 - double precision ,allocatable:: flux_br2(:,:,:,:) -!DVM$ SHADOW flux_br2( 0:0,1:1,0:0,0:0 ) - -!DVM$ ALIGN flux_br1(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX2 -!DVM$&,iEX3,iEX4) -!DVM$ DYNAMIC flux_br1 - double precision ,allocatable:: flux_br1(:,:,:,:) -!DVM$ SHADOW flux_br1( 0:0,1:1,0:0,0:0 ) - double precision q - double precision tmp,utmp(6,isiz3),rtmp(5,isiz3) - -!DVM$ ALIGN rtmp_br1(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX3,iEX -!DVM$&4,iEX2) -!DVM$ DYNAMIC rtmp_br1 - double precision ,allocatable:: rtmp_br1(:,:,:,:) - -!DVM$ ALIGN utmp_br1(iEX1,iEX2,iEX3,iEX4) WITH dvmh_temp0(iEX1,iEX3,iEX -!DVM$&4,iEX2) -!DVM$ DYNAMIC utmp_br1 - double precision ,allocatable:: utmp_br1(:,:,:,:) -!DVM$ SHADOW utmp_br1( 0:0,2:2,0:0,0:0 ) - double precision u21,u31,u41 - double precision u21i,u31i,u41i,u51i - double precision u21j,u31j,u41j,u51j - double precision u21k,u31k,u41k,u51k - double precision u21im1,u31im1,u41im1,u51im1 - double precision u21jm1,u31jm1,u41jm1,u51jm1 - double precision u21km1,u31km1,u41km1,u51km1 - -!DVM$ interval 11 - if (timeron) call timer_start(t_rhs) -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON qs(i,j,k), PRIVATE (j,i,tmp,k,m) -!DVM$&,SHADOW_COMPUTE,SHADOW_RENEW (u) - do k = 1,nz - do j = 1,ny - do i = 1,nx - tmp = 1.0d+00 / u(1,i,j,k) - qs(i,j,k) = 0.50d+00 * (u(2,i,j,k) * u(2,i,j,k) + u(3,i,j - &,k) * u(3,i,j,k) + u(4,i,j,k) * u(4,i,j,k)) * tmp - tmp = 1.0d+00 / u(1,i,j,k) - rho_i(i,j,k) = tmp - do m = 1,5 - rsd(m,i,j,k) = (-(frct(m,i,j,k))) - enddo - enddo - enddo - enddo -!DVM$ end region - allocate(flux_br1(5,isiz1,2:isiz2 - 1,2:isiz3 - 1)) - -!--------------------------------------------------------------------- -! xi-direction flux differences -!--------------------------------------------------------------------- -!DVM$ region -!DVM$ PARALLEL (k,j,i) ON flux_br1(*,i,j,k), PRIVATE (j,i,k,q,u21), -!DVM$&SHADOW_COMPUTE - do k = 2,nz - 1 - do j = jst,jend - do i = 1,nx - flux_br1(1,i,j,k) = u(2,i,j,k) - u21 = u(2,i,j,k) * rho_i(i,j,k) - q = qs(i,j,k) - flux_br1(2,i,j,k) = u(2,i,j,k) * u21 + c2 * (u(5,i,j,k) - - & q) - flux_br1(3,i,j,k) = u(3,i,j,k) * u21 - flux_br1(4,i,j,k) = u(4,i,j,k) * u21 - flux_br1(5,i,j,k) = (c1 * u(5,i,j,k) - c2 * q) * u21 - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i,m) ON rsd(m,i,j,k), PRIVATE (j,i,k,m) - do k = 2,nz - 1 - do j = jst,jend - do i = ist,iend - do m = 1,5 - rsd(m,i,j,k) = rsd(m,i,j,k) - tx2 * (flux_br1(m,i + 1, - &j,k) - flux_br1(m,i - 1,j,k)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i) ON flux_br1(*,i,j,k), PRIVATE (j,i,tmp,k,u21i,u31 -!DVM$&i,u41im1,u51im1,u51i,u41i,u21im1,u31im1),SHADOW_COMPUTE - do k = 2,nz - 1 - do j = jst,jend - do i = ist,nx - tmp = rho_i(i,j,k) - u21i = tmp * u(2,i,j,k) - u31i = tmp * u(3,i,j,k) - u41i = tmp * u(4,i,j,k) - u51i = tmp * u(5,i,j,k) - tmp = rho_i(i - 1,j,k) - u21im1 = tmp * u(2,i - 1,j,k) - u31im1 = tmp * u(3,i - 1,j,k) - u41im1 = tmp * u(4,i - 1,j,k) - u51im1 = tmp * u(5,i - 1,j,k) - flux_br1(2,i,j,k) = 4.0d+00 / 3.0d+00 * tx3 * (u21i - u21 - &im1) - flux_br1(3,i,j,k) = tx3 * (u31i - u31im1) - flux_br1(4,i,j,k) = tx3 * (u41i - u41im1) - flux_br1(5,i,j,k) = 0.50d+00 * (1.0d+00 - c1 * c5) * tx3 - &* (u21i** 2 + u31i** 2 + u41i** 2 - (u21im1** 2 + u31im1** 2 + u41 - &im1** 2)) + 1.0d+00 / 6.0d+00 * tx3 * (u21i** 2 - u21im1** 2) + c1 - & * c5 * tx3 * (u51i - u51im1) - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i) ON rsd(*,i,j,k), PRIVATE (j,i,k) - do k = 2,nz - 1 - do j = jst,jend - do i = ist,iend - rsd(1,i,j,k) = rsd(1,i,j,k) + dx1 * tx1 * (u(1,i - 1,j,k) - & - 2.0d+00 * u(1,i,j,k) + u(1,i + 1,j,k)) - rsd(2,i,j,k) = rsd(2,i,j,k) + tx3 * c3 * c4 * (flux_br1(2 - &,i + 1,j,k) - flux_br1(2,i,j,k)) + dx2 * tx1 * (u(2,i - 1,j,k) - 2 - &.0d+00 * u(2,i,j,k) + u(2,i + 1,j,k)) - rsd(3,i,j,k) = rsd(3,i,j,k) + tx3 * c3 * c4 * (flux_br1(3 - &,i + 1,j,k) - flux_br1(3,i,j,k)) + dx3 * tx1 * (u(3,i - 1,j,k) - 2 - &.0d+00 * u(3,i,j,k) + u(3,i + 1,j,k)) - rsd(4,i,j,k) = rsd(4,i,j,k) + tx3 * c3 * c4 * (flux_br1(4 - &,i + 1,j,k) - flux_br1(4,i,j,k)) + dx4 * tx1 * (u(4,i - 1,j,k) - 2 - &.0d+00 * u(4,i,j,k) + u(4,i + 1,j,k)) - rsd(5,i,j,k) = rsd(5,i,j,k) + tx3 * c3 * c4 * (flux_br1(5 - &,i + 1,j,k) - flux_br1(5,i,j,k)) + dx5 * tx1 * (u(5,i - 1,j,k) - 2 - &.0d+00 * u(5,i,j,k) + u(5,i + 1,j,k)) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! Fourth-order dissipation -!--------------------------------------------------------------------- -!DVM$ PARALLEL (k,j,m) ON rsd(m,2,j,k), PRIVATE (j,k,m) - do k = 2,nz - 1 - do j = jst,jend - do m = 1,5 - rsd(m,2,j,k) = rsd(m,2,j,k) - dssp * ((+(5.0d+00)) * u(m, - &2,j,k) - 4.0d+00 * u(m,3,j,k) + u(m,4,j,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,m) ON rsd(m,3,j,k), PRIVATE (j,k,m) - do k = 2,nz - 1 - do j = jst,jend - do m = 1,5 - rsd(m,3,j,k) = rsd(m,3,j,k) - dssp * ((-(4.0d+00)) * u(m, - &2,j,k) + 6.0d+00 * u(m,3,j,k) - 4.0d+00 * u(m,4,j,k) + u(m,5,j,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i,m) ON rsd(m,i,j,k), PRIVATE (j,i,k,m) - do k = 2,nz - 1 - do j = jst,jend - do i = 4,nx - 3 - do m = 1,5 - rsd(m,i,j,k) = rsd(m,i,j,k) - dssp * (u(m,i - 2,j,k) - - & 4.0d+00 * u(m,i - 1,j,k) + 6.0d+00 * u(m,i,j,k) - 4.0d+00 * u(m,i - & + 1,j,k) + u(m,i + 2,j,k)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,m) ON rsd(m,nx + -2,j,k), PRIVATE (j,k,m) - do k = 2,nz - 1 - do j = jst,jend - do m = 1,5 - rsd(m,nx - 2,j,k) = rsd(m,nx - 2,j,k) - dssp * (u(m,nx - - &4,j,k) - 4.0d+00 * u(m,nx - 3,j,k) + 6.0d+00 * u(m,nx - 2,j,k) - 4 - &.0d+00 * u(m,nx - 1,j,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,m) ON rsd(m,nx + -1,j,k), PRIVATE (j,k,m) - do k = 2,nz - 1 - do j = jst,jend - do m = 1,5 - rsd(m,nx - 1,j,k) = rsd(m,nx - 1,j,k) - dssp * (u(m,nx - - &3,j,k) - 4.0d+00 * u(m,nx - 2,j,k) + 5.0d+00 * u(m,nx - 1,j,k)) - enddo - enddo - enddo -!DVM$ end region - deallocate(flux_br1) - allocate(flux_br2(5,isiz1,2:isiz1 - 1,2:isiz3 - 1)) - -!--------------------------------------------------------------------- -! eta-direction flux differences -!--------------------------------------------------------------------- -!DVM$ region -!DVM$ PARALLEL (k,i,j) ON flux_br2(*,j,i,k), PRIVATE (j,i,k,q,u31), -!DVM$& SHADOW_COMPUTE - do k = 2,nz - 1 - do i = ist,iend - do j = 1,ny - flux_br2(1,j,i,k) = u(3,i,j,k) - u31 = u(3,i,j,k) * rho_i(i,j,k) - q = qs(i,j,k) - flux_br2(2,j,i,k) = u(2,i,j,k) * u31 - flux_br2(3,j,i,k) = u(3,i,j,k) * u31 + c2 * (u(5,i,j,k) - - & q) - flux_br2(4,j,i,k) = u(4,i,j,k) * u31 - flux_br2(5,j,i,k) = (c1 * u(5,i,j,k) - c2 * q) * u31 - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,j,m) ON rsd(m,i,j,k), PRIVATE (j,i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do j = jst,jend - do m = 1,5 - rsd(m,i,j,k) = rsd(m,i,j,k) - ty2 * (flux_br2(m,j + 1, - &i,k) - flux_br2(m,j - 1,i,k)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,j) ON flux_br2(*,j,i,k), PRIVATE (u51j,j,u31j,u41j,u -!DVM$&51jm1,u21j,i,tmp,u41jm1,u21jm1,u31jm1,k),SHADOW_COMPUTE - do k = 2,nz - 1 - do i = ist,iend - do j = jst,ny - tmp = rho_i(i,j,k) - u21j = tmp * u(2,i,j,k) - u31j = tmp * u(3,i,j,k) - u41j = tmp * u(4,i,j,k) - u51j = tmp * u(5,i,j,k) - tmp = rho_i(i,j - 1,k) - u21jm1 = tmp * u(2,i,j - 1,k) - u31jm1 = tmp * u(3,i,j - 1,k) - u41jm1 = tmp * u(4,i,j - 1,k) - u51jm1 = tmp * u(5,i,j - 1,k) - flux_br2(2,j,i,k) = ty3 * (u21j - u21jm1) - flux_br2(3,j,i,k) = 4.0d+00 / 3.0d+00 * ty3 * (u31j - u31 - &jm1) - flux_br2(4,j,i,k) = ty3 * (u41j - u41jm1) - flux_br2(5,j,i,k) = 0.50d+00 * (1.0d+00 - c1 * c5) * ty3 - &* (u21j** 2 + u31j** 2 + u41j** 2 - (u21jm1** 2 + u31jm1** 2 + u41 - &jm1** 2)) + 1.0d+00 / 6.0d+00 * ty3 * (u31j** 2 - u31jm1** 2) + c1 - & * c5 * ty3 * (u51j - u51jm1) - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,j) ON rsd(*,i,j,k), PRIVATE (j,i,k) - do k = 2,nz - 1 - do i = ist,iend - do j = jst,jend - rsd(1,i,j,k) = rsd(1,i,j,k) + dy1 * ty1 * (u(1,i,j - 1,k) - & - 2.0d+00 * u(1,i,j,k) + u(1,i,j + 1,k)) - rsd(2,i,j,k) = rsd(2,i,j,k) + ty3 * c3 * c4 * (flux_br2(2 - &,j + 1,i,k) - flux_br2(2,j,i,k)) + dy2 * ty1 * (u(2,i,j - 1,k) - 2 - &.0d+00 * u(2,i,j,k) + u(2,i,j + 1,k)) - rsd(3,i,j,k) = rsd(3,i,j,k) + ty3 * c3 * c4 * (flux_br2(3 - &,j + 1,i,k) - flux_br2(3,j,i,k)) + dy3 * ty1 * (u(3,i,j - 1,k) - 2 - &.0d+00 * u(3,i,j,k) + u(3,i,j + 1,k)) - rsd(4,i,j,k) = rsd(4,i,j,k) + ty3 * c3 * c4 * (flux_br2(4 - &,j + 1,i,k) - flux_br2(4,j,i,k)) + dy4 * ty1 * (u(4,i,j - 1,k) - 2 - &.0d+00 * u(4,i,j,k) + u(4,i,j + 1,k)) - rsd(5,i,j,k) = rsd(5,i,j,k) + ty3 * c3 * c4 * (flux_br2(5 - &,j + 1,i,k) - flux_br2(5,j,i,k)) + dy5 * ty1 * (u(5,i,j - 1,k) - 2 - &.0d+00 * u(5,i,j,k) + u(5,i,j + 1,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,m) ON rsd(m,i,2,k), PRIVATE (i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do m = 1,5 - rsd(m,i,2,k) = rsd(m,i,2,k) - dssp * ((+(5.0d+00)) * u(m, - &i,2,k) - 4.0d+00 * u(m,i,3,k) + u(m,i,4,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,m) ON rsd(m,i,3,k), PRIVATE (i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do m = 1,5 - rsd(m,i,3,k) = rsd(m,i,3,k) - dssp * ((-(4.0d+00)) * u(m, - &i,2,k) + 6.0d+00 * u(m,i,3,k) - 4.0d+00 * u(m,i,4,k) + u(m,i,5,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,j,m) ON rsd(m,i,j,k), PRIVATE (j,i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do j = 4,ny - 3 - do m = 1,5 - rsd(m,i,j,k) = rsd(m,i,j,k) - dssp * (u(m,i,j - 2,k) - - & 4.0d+00 * u(m,i,j - 1,k) + 6.0d+00 * u(m,i,j,k) - 4.0d+00 * u(m,i - &,j + 1,k) + u(m,i,j + 2,k)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,m) ON rsd(m,i,ny + -2,k), PRIVATE (i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do m = 1,5 - rsd(m,i,ny - 2,k) = rsd(m,i,ny - 2,k) - dssp * (u(m,i,ny - &- 4,k) - 4.0d+00 * u(m,i,ny - 3,k) + 6.0d+00 * u(m,i,ny - 2,k) - 4 - &.0d+00 * u(m,i,ny - 1,k)) - enddo - enddo - enddo -!DVM$ PARALLEL (k,i,m) ON rsd(m,i,ny + -1,k), PRIVATE (i,k,m) - do k = 2,nz - 1 - do i = ist,iend - do m = 1,5 - rsd(m,i,ny - 1,k) = rsd(m,i,ny - 1,k) - dssp * (u(m,i,ny - &- 3,k) - 4.0d+00 * u(m,i,ny - 2,k) + 5.0d+00 * u(m,i,ny - 1,k)) - enddo - enddo - enddo -!DVM$ end region - deallocate(flux_br2) - allocate(utmp_br1(6,isiz3,2:isiz1 - 1,2:isiz2 - 1)) - allocate(rtmp_br1(5,isiz3,2:isiz1 - 1,2:isiz2 - 1)) - allocate(flux_br3(5,isiz1,2:isiz1 - 1,2:isiz2 - 1)) - -!--------------------------------------------------------------------- -! zeta-direction flux differences -!--------------------------------------------------------------------- -!DVM$ region -!DVM$ PARALLEL (j,i,k) ON utmp_br1(*,k,i,j), PRIVATE (j,i,k), -!DVM$& SHADOW_COMPUTE - do j = jst,jend - do i = ist,iend - do k = 1,nz - utmp_br1(1,k,i,j) = u(1,i,j,k) - utmp_br1(2,k,i,j) = u(2,i,j,k) - utmp_br1(3,k,i,j) = u(3,i,j,k) - utmp_br1(4,k,i,j) = u(4,i,j,k) - utmp_br1(5,k,i,j) = u(5,i,j,k) - utmp_br1(6,k,i,j) = rho_i(i,j,k) - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,k) ON flux_br3(*,k,i,j), PRIVATE (j,i,k,q,u41), -!DVM$& SHADOW_COMPUTE - do j = jst,jend - do i = ist,iend - do k = 1,nz - flux_br3(1,k,i,j) = utmp_br1(4,k,i,j) - u41 = utmp_br1(4,k,i,j) * utmp_br1(6,k,i,j) - q = qs(i,j,k) - flux_br3(2,k,i,j) = utmp_br1(2,k,i,j) * u41 - flux_br3(3,k,i,j) = utmp_br1(3,k,i,j) * u41 - flux_br3(4,k,i,j) = utmp_br1(4,k,i,j) * u41 + c2 * (utmp_ - &br1(5,k,i,j) - q) - flux_br3(5,k,i,j) = (c1 * utmp_br1(5,k,i,j) - c2 * q) * u - &41 - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,k,m) ON rtmp_br1(m,k,i,j), PRIVATE (j,i,k,m) - do j = jst,jend - do i = ist,iend - do k = 2,nz - 1 - do m = 1,5 - rtmp_br1(m,k,i,j) = rsd(m,i,j,k) - tz2 * (flux_br3(m,k - & + 1,i,j) - flux_br3(m,k - 1,i,j)) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,k) ON flux_br3(*,k,i,j), PRIVATE (j,i,tmp,k,u21km1,u -!DVM$&41km1,u51k,u51km1,u31km1,u31k,u41k,u21k),SHADOW_COMPUTE - do j = jst,jend - do i = ist,iend - do k = 2,nz - tmp = utmp_br1(6,k,i,j) - u21k = tmp * utmp_br1(2,k,i,j) - u31k = tmp * utmp_br1(3,k,i,j) - u41k = tmp * utmp_br1(4,k,i,j) - u51k = tmp * utmp_br1(5,k,i,j) - tmp = utmp_br1(6,k - 1,i,j) - u21km1 = tmp * utmp_br1(2,k - 1,i,j) - u31km1 = tmp * utmp_br1(3,k - 1,i,j) - u41km1 = tmp * utmp_br1(4,k - 1,i,j) - u51km1 = tmp * utmp_br1(5,k - 1,i,j) - flux_br3(2,k,i,j) = tz3 * (u21k - u21km1) - flux_br3(3,k,i,j) = tz3 * (u31k - u31km1) - flux_br3(4,k,i,j) = 4.0d+00 / 3.0d+00 * tz3 * (u41k - u41 - &km1) - flux_br3(5,k,i,j) = 0.50d+00 * (1.0d+00 - c1 * c5) * tz3 - &* (u21k** 2 + u31k** 2 + u41k** 2 - (u21km1** 2 + u31km1** 2 + u41 - &km1** 2)) + 1.0d+00 / 6.0d+00 * tz3 * (u41k** 2 - u41km1** 2) + c1 - & * c5 * tz3 * (u51k - u51km1) - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,k) ON rtmp_br1(*,k,i,j), PRIVATE (j,i,k) - do j = jst,jend - do i = ist,iend - do k = 2,nz - 1 - rtmp_br1(1,k,i,j) = rtmp_br1(1,k,i,j) + dz1 * tz1 * (utmp - &_br1(1,k - 1,i,j) - 2.0d+00 * utmp_br1(1,k,i,j) + utmp_br1(1,k + 1 - &,i,j)) - rtmp_br1(2,k,i,j) = rtmp_br1(2,k,i,j) + tz3 * c3 * c4 * ( - &flux_br3(2,k + 1,i,j) - flux_br3(2,k,i,j)) + dz2 * tz1 * (utmp_br1 - &(2,k - 1,i,j) - 2.0d+00 * utmp_br1(2,k,i,j) + utmp_br1(2,k + 1,i,j - &)) - rtmp_br1(3,k,i,j) = rtmp_br1(3,k,i,j) + tz3 * c3 * c4 * ( - &flux_br3(3,k + 1,i,j) - flux_br3(3,k,i,j)) + dz3 * tz1 * (utmp_br1 - &(3,k - 1,i,j) - 2.0d+00 * utmp_br1(3,k,i,j) + utmp_br1(3,k + 1,i,j - &)) - rtmp_br1(4,k,i,j) = rtmp_br1(4,k,i,j) + tz3 * c3 * c4 * ( - &flux_br3(4,k + 1,i,j) - flux_br3(4,k,i,j)) + dz4 * tz1 * (utmp_br1 - &(4,k - 1,i,j) - 2.0d+00 * utmp_br1(4,k,i,j) + utmp_br1(4,k + 1,i,j - &)) - rtmp_br1(5,k,i,j) = rtmp_br1(5,k,i,j) + tz3 * c3 * c4 * ( - &flux_br3(5,k + 1,i,j) - flux_br3(5,k,i,j)) + dz5 * tz1 * (utmp_br1 - &(5,k - 1,i,j) - 2.0d+00 * utmp_br1(5,k,i,j) + utmp_br1(5,k + 1,i,j - &)) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! fourth-order dissipation -!--------------------------------------------------------------------- -!DVM$ PARALLEL (j,i,m) ON rsd(m,i,j,2), PRIVATE (j,i,m) - do j = jst,jend - do i = ist,iend - do m = 1,5 - rsd(m,i,j,2) = rtmp_br1(m,2,i,j) - dssp * ((+(5.0d+00)) * - & utmp_br1(m,2,i,j) - 4.0d+00 * utmp_br1(m,3,i,j) + utmp_br1(m,4,i, - &j)) - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,m) ON rsd(m,i,j,3), PRIVATE (j,i,m) - do j = jst,jend - do i = ist,iend - do m = 1,5 - rsd(m,i,j,3) = rtmp_br1(m,3,i,j) - dssp * ((-(4.0d+00)) * - & utmp_br1(m,2,i,j) + 6.0d+00 * utmp_br1(m,3,i,j) - 4.0d+00 * utmp_ - &br1(m,4,i,j) + utmp_br1(m,5,i,j)) - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,k,m) ON rsd(m,i,j,k), PRIVATE (j,i,k,m) - do j = jst,jend - do i = ist,iend - do k = 4,nz - 3 - do m = 1,5 - rsd(m,i,j,k) = rtmp_br1(m,k,i,j) - dssp * (utmp_br1(m, - &k - 2,i,j) - 4.0d+00 * utmp_br1(m,k - 1,i,j) + 6.0d+00 * utmp_br1( - &m,k,i,j) - 4.0d+00 * utmp_br1(m,k + 1,i,j) + utmp_br1(m,k + 2,i,j) - &) - enddo - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,m) ON rsd(m,i,j,nz + -2), PRIVATE (j,i,m) - do j = jst,jend - do i = ist,iend - do m = 1,5 - rsd(m,i,j,nz - 2) = rtmp_br1(m,nz - 2,i,j) - dssp * (utmp - &_br1(m,nz - 4,i,j) - 4.0d+00 * utmp_br1(m,nz - 3,i,j) + 6.0d+00 * - &utmp_br1(m,nz - 2,i,j) - 4.0d+00 * utmp_br1(m,nz - 1,i,j)) - enddo - enddo - enddo -!DVM$ PARALLEL (j,i,m) ON rsd(m,i,j,nz + -1), PRIVATE (j,i,m) - do j = jst,jend - do i = ist,iend - do m = 1,5 - rsd(m,i,j,nz - 1) = rtmp_br1(m,nz - 1,i,j) - dssp * (utmp - &_br1(m,nz - 3,i,j) - 4.0d+00 * utmp_br1(m,nz - 2,i,j) + 5.0d+00 * - &utmp_br1(m,nz - 1,i,j)) - enddo - enddo - enddo -!DVM$ end region - deallocate(flux_br3) - deallocate(rtmp_br1) - deallocate(utmp_br1) - if (timeron) call timer_stop(t_rhs) -!DVM$ end interval - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f2 b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f2 deleted file mode 100644 index b55561d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/rhs.f2 +++ /dev/null @@ -1,415 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c compute the right hand sides -c--------------------------------------------------------------------- - - implicit none - - include 'applu.incl' - -c--------------------------------------------------------------------- -c local variables -c--------------------------------------------------------------------- - integer i, j, k, m, p - double precision q - double precision tmp, utmp(6,isiz3), rtmp(5,isiz3) - double precision u21, u31, u41 - double precision u21i, u31i, u41i, u51i - double precision u21j, u31j, u41j, u51j - double precision u21k, u31k, u41k, u51k - double precision u21im1, u31im1, u41im1, u51im1 - double precision u21jm1, u31jm1, u41jm1, u51jm1 - double precision u21km1, u31km1, u41km1, u51km1 - double precision flu(5,-1:1) - - - if (timeron) call timer_start(t_rhs) -!DVM$ PARALLEL (k,j,i) ON qs(i,j,k), PRIVATE (j,i,tmp,k,m) -!DVM$&,SHADOW_COMPUTE,SHADOW_RENEW (u) - do k = 1, nz - do j = 1, ny - do i = 1, nx - do m = 1, 5 - rsd(m,i,j,k) = - frct(m,i,j,k) - end do - tmp = 1.0d+00 / u(1,i,j,k) - rho_i(i,j,k) = tmp - qs(i,j,k) = 0.50d+00 * ( u(2,i,j,k) * u(2,i,j,k) - > + u(3,i,j,k) * u(3,i,j,k) - > + u(4,i,j,k) * u(4,i,j,k) ) - > * tmp - end do - end do - end do - -! if (timeron) call timer_start(t_rhsx) -!DVM$ PARALLEL (k,j,i) on rsd(*,i,j,k) - do k = 2, nz - 1 - do j = jst, jend - do i = ist, iend - do p = -1, 1, 2 - flu(1,p) = u(2,i+p,j,k) - u21 = u(2,i+p,j,k) * rho_i(i+p,j,k) - - q = qs(i+p,j,k) - - flu(2,p) = u(2,i+p,j,k) * u21 + c2 * - > ( u(5,i+p,j,k) - q ) - flu(3,p) = u(3,i+p,j,k) * u21 - flu(4,p) = u(4,i+p,j,k) * u21 - flu(5,p) = ( c1 * u(5,i+p,j,k) - c2 * q ) * u21 - end do - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - tx2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p = 0, 1 - tmp = rho_i(i+p,j,k) - - u21i = tmp * u(2,i+p,j,k) - u31i = tmp * u(3,i+p,j,k) - u41i = tmp * u(4,i+p,j,k) - u51i = tmp * u(5,i+p,j,k) - - tmp = rho_i(i-1+p,j,k) - - u21im1 = tmp * u(2,i-1+p,j,k) - u31im1 = tmp * u(3,i-1+p,j,k) - u41im1 = tmp * u(4,i-1+p,j,k) - u51im1 = tmp * u(5,i-1+p,j,k) - - flu(2,p) = (4.0d+00/3.0d+00) * tx3 * (u21i-u21im1) - flu(3,p) = tx3 * ( u31i - u31im1 ) - flu(4,p) = tx3 * ( u41i - u41im1 ) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5) - > * tx3 * ( ( u21i **2 + u31i **2+u41i **2) - > - ( u21im1**2 + u31im1**2+u41im1**2)) - > + (1.0d+00/6.0d+00) - > * tx3 * ( u21i**2 - u21im1**2 ) - > + c1 * c5 * tx3 * ( u51i - u51im1 ) - enddo - - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dx1 * tx1 * ( u(1,i-1,j,k) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i+1,j,k) ) - rsd(2,i,j,k) = rsd(2,i,j,k) - > + tx3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dx2 * tx1 * ( u(2,i-1,j,k) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i+1,j,k) ) - rsd(3,i,j,k) = rsd(3,i,j,k) - > + tx3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dx3 * tx1 * ( u(3,i-1,j,k) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i+1,j,k) ) - rsd(4,i,j,k) = rsd(4,i,j,k) - > + tx3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dx4 * tx1 * ( u(4,i-1,j,k) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i+1,j,k) ) - rsd(5,i,j,k) = rsd(5,i,j,k) - > + tx3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dx5 * tx1 * ( u(5,i-1,j,k) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i+1,j,k) ) - - - if (i .eq. 2)then - do m = 1, 5 - rsd(m,2,j,k) = rsd(m,2,j,k) - > - dssp * ( + 5.0d+00 * u(m,2,j,k) - > - 4.0d+00 * u(m,3,j,k) - > + u(m,4,j,k) ) - enddo - else if (i .eq. 3)then - do m = 1, 5 - rsd(m,3,j,k) = rsd(m,3,j,k) - > - dssp * ( - 4.0d+00 * u(m,2,j,k) - > + 6.0d+00 * u(m,3,j,k) - > - 4.0d+00 * u(m,4,j,k) - > + u(m,5,j,k) ) - enddo - else if (i .eq. nx-2)then - do m = 1, 5 - rsd(m,nx-2,j,k) = rsd(m,nx-2,j,k) - > - dssp * ( u(m,nx-4,j,k) - > - 4.0d+00 * u(m,nx-3,j,k) - > + 6.0d+00 * u(m,nx-2,j,k) - > - 4.0d+00 * u(m,nx-1,j,k) ) - enddo - else if (i .eq. nx-1)then - do m = 1, 5 - rsd(m,nx-1,j,k) = rsd(m,nx-1,j,k) - > - dssp * ( u(m,nx-3,j,k) - > - 4.0d+00 * u(m,nx-2,j,k) - > + 5.0d+00 * u(m,nx-1,j,k) ) - enddo - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i-2,j,k) - > - 4.0d+00 * u(m,i-1,j,k) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i+1,j,k) - > + u(m,i+2,j,k) ) - end do - endif - ! end do - ! end do -! end do -! if (timeron) call timer_stop(t_rhsx) - -! if (timeron) call timer_start(t_rhsy) -! do k = 2, nz - 1 - ! do j = jst, jend - ! do i = ist, iend - do p = -1, 1, 2 - flu(1,p) = u(3,i,j+p,k) - u31 = u(3,i,j+p,k) * rho_i(i,j+p,k) - - q = qs(i,j+p,k) - - flu(2,p) = u(2,i,j+p,k) * u31 - flu(3,p) = u(3,i,j+p,k) * u31 + c2 * (u(5,i,j+p,k)-q) - flu(4,p) = u(4,i,j+p,k) * u31 - flu(5,p) = ( c1 * u(5,i,j+p,k) - c2 * q ) * u31 - end do - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - ty2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p = 0, 1 - tmp = rho_i(i,j+p,k) - - u21j = tmp * u(2,i,j+p,k) - u31j = tmp * u(3,i,j+p,k) - u41j = tmp * u(4,i,j+p,k) - u51j = tmp * u(5,i,j+p,k) - - tmp = rho_i(i,j-1+p,k) - u21jm1 = tmp * u(2,i,j-1+p,k) - u31jm1 = tmp * u(3,i,j-1+p,k) - u41jm1 = tmp * u(4,i,j-1+p,k) - u51jm1 = tmp * u(5,i,j-1+p,k) - - flu(2,p) = ty3 * ( u21j - u21jm1 ) - flu(3,p) = (4.0d+00/3.0d+00) * ty3 * (u31j-u31jm1) - flu(4,p) = ty3 * ( u41j - u41jm1 ) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5 ) - > * ty3 * ( ( u21j **2 + u31j **2 + u41j **2 ) - > - ( u21jm1**2 + u31jm1**2 + u41jm1**2 ) ) - > + (1.0d+00/6.0d+00) - > * ty3 * ( u31j**2 - u31jm1**2 ) - > + c1 * c5 * ty3 * ( u51j - u51jm1 ) - enddo - - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dy1 * ty1 * ( u(1,i,j-1,k) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i,j+1,k) ) - - rsd(2,i,j,k) = rsd(2,i,j,k) - > + ty3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dy2 * ty1 * ( u(2,i,j-1,k) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i,j+1,k) ) - - rsd(3,i,j,k) = rsd(3,i,j,k) - > + ty3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dy3 * ty1 * ( u(3,i,j-1,k) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i,j+1,k) ) - - rsd(4,i,j,k) = rsd(4,i,j,k) - > + ty3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dy4 * ty1 * ( u(4,i,j-1,k) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i,j+1,k) ) - - rsd(5,i,j,k) = rsd(5,i,j,k) - > + ty3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dy5 * ty1 * ( u(5,i,j-1,k) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i,j+1,k) ) - - - - if (j .eq. 2) then - do m = 1, 5 - rsd(m,i,2,k) = rsd(m,i,2,k) - > - dssp * ( + 5.0d+00 * u(m,i,2,k) - > - 4.0d+00 * u(m,i,3,k) - > + u(m,i,4,k) ) - enddo - elseif (j .eq. 3) then - do m = 1, 5 - rsd(m,i,3,k) = rsd(m,i,3,k) - > - dssp * ( - 4.0d+00 * u(m,i,2,k) - > + 6.0d+00 * u(m,i,3,k) - > - 4.0d+00 * u(m,i,4,k) - > + u(m,i,5,k) ) - end do - elseif (j .eq. ny-2) then - do m = 1, 5 - rsd(m,i,ny-2,k) = rsd(m,i,ny-2,k) - > - dssp * ( u(m,i,ny-4,k) - > - 4.0d+00 * u(m,i,ny-3,k) - > + 6.0d+00 * u(m,i,ny-2,k) - > - 4.0d+00 * u(m,i,ny-1,k) ) - enddo - elseif (j .eq. ny-1) then - do m = 1, 5 - rsd(m,i,ny-1,k) = rsd(m,i,ny-1,k) - > - dssp * ( u(m,i,ny-3,k) - > - 4.0d+00 * u(m,i,ny-2,k) - > + 5.0d+00 * u(m,i,ny-1,k) ) - end do - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i,j-2,k) - > - 4.0d+00 * u(m,i,j-1,k) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i,j+1,k) - > + u(m,i,j+2,k) ) - end do - endif - -! end do -! end do -! end do - -! if (timeron) call timer_stop(t_rhsy) - -! if (timeron) call timer_start(t_rhsz) -! do k = 2, nz - 1 -! do j = jst, jend -! do i = ist, iend - do p=-1,1,2 - flu(1,p) = u(4,i,j,k+p) - u41 = u(4,i,j,k+p) * rho_i(i,j,k+p) - - q = qs(i,j,k+p) - - flu(2,p) = u(2,i,j,k+p) * u41 - flu(3,p) = u(3,i,j,k+p) * u41 - flu(4,p) = u(4,i,j,k+p) * u41 + c2 * (u(5,i,j,k+p)-q) - flu(5,p) = ( c1 * u(5,i,j,k+p) - c2 * q ) * u41 - enddo - - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - tz2 * ( flu(m,1) - flu(m,-1) ) - end do - - do p=0,1 - tmp = rho_i(i,j,k+p) - - u21k = tmp * u(2,i,j,k+p) - u31k = tmp * u(3,i,j,k+p) - u41k = tmp * u(4,i,j,k+p) - u51k = tmp * u(5,i,j,k+p) - - tmp = rho_i(i,j,k-1+p) - - u21km1 = tmp * u(2,i,j,k-1+p) - u31km1 = tmp * u(3,i,j,k-1+p) - u41km1 = tmp * u(4,i,j,k-1+p) - u51km1 = tmp * u(5,i,j,k-1+p) - - flu(2,p) = tz3 * ( u21k - u21km1 ) - flu(3,p) = tz3 * ( u31k - u31km1 ) - flu(4,p) = (4.0d+00/3.0d+00) * tz3 * (u41k-u41km1) - flu(5,p) = 0.50d+00 * ( 1.0d+00 - c1*c5 ) - > * tz3 * ( ( u21k **2 + u31k **2 + u41k **2 ) - > - ( u21km1**2 + u31km1**2 + u41km1**2 ) ) - > + (1.0d+00/6.0d+00) - > * tz3 * ( u41k**2 - u41km1**2 ) - > + c1 * c5 * tz3 * ( u51k - u51km1 ) - enddo - rsd(1,i,j,k) = rsd(1,i,j,k) - > + dz1 * tz1 * ( u(1,i,j,k-1) - > - 2.0d+00 * u(1,i,j,k) - > + u(1,i,j,k+1) ) - rsd(2,i,j,k) = rsd(2,i,j,k) - > + tz3 * c3 * c4 * ( flu(2,1) - flu(2,0) ) - > + dz2 * tz1 * ( u(2,i,j,k-1) - > - 2.0d+00 * u(2,i,j,k) - > + u(2,i,j,k+1) ) - rsd(3,i,j,k) = rsd(3,i,j,k) - > + tz3 * c3 * c4 * ( flu(3,1) - flu(3,0) ) - > + dz3 * tz1 * ( u(3,i,j,k-1) - > - 2.0d+00 * u(3,i,j,k) - > + u(3,i,j,k+1) ) - rsd(4,i,j,k) = rsd(4,i,j,k) - > + tz3 * c3 * c4 * ( flu(4,1) - flu(4,0) ) - > + dz4 * tz1 * ( u(4,i,j,k-1) - > - 2.0d+00 * u(4,i,j,k) - > + u(4,i,j,k+1) ) - rsd(5,i,j,k) = rsd(5,i,j,k) - > + tz3 * c3 * c4 * ( flu(5,1) - flu(5,0) ) - > + dz5 * tz1 * ( u(5,i,j,k-1) - > - 2.0d+00 * u(5,i,j,k) - > + u(5,i,j,k+1) ) - - - if (k .eq. 2) then - do m = 1, 5 - rsd(m,i,j,2) = rsd(m,i,j,2) - > - dssp * ( + 5.0d+00 * u(m,i,j,2) - > - 4.0d+00 * u(m,i,j,3) - > + u(m,i,j,4) ) - end do - elseif (k .eq. 3) then - do m = 1, 5 - rsd(m,i,j,3) = rsd(m,i,j,3) - > - dssp * ( - 4.0d+00 * u(m,i,j,2) - > + 6.0d+00 * u(m,i,j,3) - > - 4.0d+00 * u(m,i,j,4) - > + u(m,i,j,5) ) - end do - elseif (k .eq. nz-2) then - do m = 1, 5 - rsd(m,i,j,nz-2) = rsd(m,i,j,nz-2) - > - dssp * ( u(m,i,j,nz-4) - > - 4.0d+00 * u(m,i,j,nz-3) - > + 6.0d+00 * u(m,i,j,nz-2) - > - 4.0d+00 * u(m,i,j,nz-1) ) - end do - elseif (k .eq. nz-1) then - do m = 1, 5 - rsd(m,i,j,nz-1) = rsd(m,i,j,nz-1) - > - dssp * ( u(m,i,j,nz-3) - > - 4.0d+00 * u(m,i,j,nz-2) - > + 5.0d+00 * u(m,i,j,nz-1) ) - end do - else - do m = 1, 5 - rsd(m,i,j,k) = rsd(m,i,j,k) - > - dssp * ( u(m,i,j,k-2) - > - 4.0d+00 * u(m,i,j,k-1) - > + 6.0d+00 * u(m,i,j,k) - > - 4.0d+00 * u(m,i,j,k+1) - > + u(m,i,j,k+2) ) - end do - endif - - end do - end do - end do -! if (timeron) call timer_stop(t_rhsz) - if (timeron) call timer_stop(t_rhs) - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setbv.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setbv.f deleted file mode 100644 index 67e62a5..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setbv.f +++ /dev/null @@ -1,104 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine setbv () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! set the boundary values of dependent variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k,m - double precision temp1(5),temp2(5) - -!--------------------------------------------------------------------- -! set the dependent variable values along the top and bottom faces -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r1(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: u -!DVM$ PARALLEL (j,i) ON u(*,i,j,*), PRIVATE (m,i,j,temp2,temp1) - do j = 1,ny - do i = 1,nx - call exact(i,j,1,temp1) - call exact(i,j,nz,temp2) - do m = 1,5 - u(m,i,j,1) = temp1(m) - u(m,i,j,nz) = temp2(m) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! set the dependent variable values along north and south faces -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: u -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r2(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: u -!DVM$ PARALLEL (k,i) ON u(*,i,*,k), PRIVATE (m,i,temp2,k,temp1) - do k = 1,nz - do i = 1,nx - call exact(i,1,k,temp1) - call exact(i,ny,k,temp2) - do m = 1,5 - u(m,i,1,k) = temp1(m) - u(m,i,ny,k) = temp2(m) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! set the dependent variable values along east and west faces -!--------------------------------------------------------------------- -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: u -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r3(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: u -!DVM$ PARALLEL (k,j) ON u(*,*,j,k), PRIVATE (m,j,temp2,k,temp1) - do k = 1,nz - do j = 1,ny - call exact(1,j,k,temp1) - call exact(nx,j,k,temp2) - do m = 1,5 - u(m,1,j,k) = temp1(m) - u(m,nx,j,k) = temp2(m) - enddo - enddo - enddo -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: u - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setcoeff.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setcoeff.f deleted file mode 100644 index 19c3778..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setcoeff.f +++ /dev/null @@ -1,166 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine setcoeff () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! set up coefficients -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - dxi = 1.0d+00 / (nx0 - 1) - deta = 1.0d+00 / (ny0 - 1) - dzeta = 1.0d+00 / (nz0 - 1) - tx1 = 1.0d+00 / (dxi * dxi) - tx2 = 1.0d+00 / (2.0d+00 * dxi) - tx3 = 1.0d+00 / dxi - ty1 = 1.0d+00 / (deta * deta) - ty2 = 1.0d+00 / (2.0d+00 * deta) - ty3 = 1.0d+00 / deta - tz1 = 1.0d+00 / (dzeta * dzeta) - tz2 = 1.0d+00 / (2.0d+00 * dzeta) - tz3 = 1.0d+00 / dzeta - -!--------------------------------------------------------------------- -! diffusion coefficients -!--------------------------------------------------------------------- - dx1 = 0.75d+00 - dx2 = dx1 - dx3 = dx1 - dx4 = dx1 - dx5 = dx1 - dy1 = 0.75d+00 - dy2 = dy1 - dy3 = dy1 - dy4 = dy1 - dy5 = dy1 - dz1 = 1.00d+00 - dz2 = dz1 - dz3 = dz1 - dz4 = dz1 - dz5 = dz1 - -!--------------------------------------------------------------------- -! fourth difference dissipation -!--------------------------------------------------------------------- - dssp = max (dx1,dy1,dz1) / 4.0d+00 - -!--------------------------------------------------------------------- -! coefficients of the exact solution to the first pde -!--------------------------------------------------------------------- - ce(1,1) = 2.0d+00 - ce(1,2) = 0.0d+00 - ce(1,3) = 0.0d+00 - ce(1,4) = 4.0d+00 - ce(1,5) = 5.0d+00 - ce(1,6) = 3.0d+00 - ce(1,7) = 5.0d-01 - ce(1,8) = 2.0d-02 - ce(1,9) = 1.0d-02 - ce(1,10) = 3.0d-02 - ce(1,11) = 5.0d-01 - ce(1,12) = 4.0d-01 - ce(1,13) = 3.0d-01 - -!--------------------------------------------------------------------- -! coefficients of the exact solution to the second pde -!--------------------------------------------------------------------- - ce(2,1) = 1.0d+00 - ce(2,2) = 0.0d+00 - ce(2,3) = 0.0d+00 - ce(2,4) = 0.0d+00 - ce(2,5) = 1.0d+00 - ce(2,6) = 2.0d+00 - ce(2,7) = 3.0d+00 - ce(2,8) = 1.0d-02 - ce(2,9) = 3.0d-02 - ce(2,10) = 2.0d-02 - ce(2,11) = 4.0d-01 - ce(2,12) = 3.0d-01 - ce(2,13) = 5.0d-01 - -!--------------------------------------------------------------------- -! coefficients of the exact solution to the third pde -!--------------------------------------------------------------------- - ce(3,1) = 2.0d+00 - ce(3,2) = 2.0d+00 - ce(3,3) = 0.0d+00 - ce(3,4) = 0.0d+00 - ce(3,5) = 0.0d+00 - ce(3,6) = 2.0d+00 - ce(3,7) = 3.0d+00 - ce(3,8) = 4.0d-02 - ce(3,9) = 3.0d-02 - ce(3,10) = 5.0d-02 - ce(3,11) = 3.0d-01 - ce(3,12) = 5.0d-01 - ce(3,13) = 4.0d-01 - -!--------------------------------------------------------------------- -! coefficients of the exact solution to the fourth pde -!--------------------------------------------------------------------- - ce(4,1) = 2.0d+00 - ce(4,2) = 2.0d+00 - ce(4,3) = 0.0d+00 - ce(4,4) = 0.0d+00 - ce(4,5) = 0.0d+00 - ce(4,6) = 2.0d+00 - ce(4,7) = 3.0d+00 - ce(4,8) = 3.0d-02 - ce(4,9) = 5.0d-02 - ce(4,10) = 4.0d-02 - ce(4,11) = 2.0d-01 - ce(4,12) = 1.0d-01 - ce(4,13) = 3.0d-01 - -!--------------------------------------------------------------------- -! coefficients of the exact solution to the fifth pde -!--------------------------------------------------------------------- - ce(5,1) = 5.0d+00 - ce(5,2) = 4.0d+00 - ce(5,3) = 3.0d+00 - ce(5,4) = 2.0d+00 - ce(5,5) = 1.0d-01 - ce(5,6) = 4.0d-01 - ce(5,7) = 3.0d-01 - ce(5,8) = 5.0d-02 - ce(5,9) = 4.0d-02 - ce(5,10) = 3.0d-02 - ce(5,11) = 1.0d-01 - ce(5,12) = 3.0d-01 - ce(5,13) = 2.0d-01 - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setiv.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setiv.f deleted file mode 100644 index 047066d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/setiv.f +++ /dev/null @@ -1,82 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine setiv () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! -! set the initial values of independent variables based on tri-linear -! interpolation of boundary values in the computational space. -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! local variables -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - integer i,j,k,m - double precision xi,eta,zeta - double precision pxi,peta,pzeta - double precision ue_1jk(5),ue_nx0jk(5),ue_i1k(5),ue_iny0k(5),ue_i - &j1(5),ue_ijnz(5) -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0_r0(iEX0,iEX1,iEX2,iE -!DVM$&X3) :: u -!DVM$ PARALLEL (k) ON u(*,*,*,k), PRIVATE (xi,m,peta,pxi,pzeta,i,j,eta,u -!DVM$&e_ij1,zeta,ue_i1k,ue_iny0k,k,ue_1jk,ue_nx0jk,ue_ijnz) - do k = 2,nz - 1 - zeta = dble (k - 1) / (nz - 1) - do j = 2,ny - 1 - eta = dble (j - 1) / (ny0 - 1) - do i = 2,nx - 1 - xi = dble (i - 1) / (nx0 - 1) - call exact(1,j,k,ue_1jk) - call exact(nx0,j,k,ue_nx0jk) - call exact(i,1,k,ue_i1k) - call exact(i,ny0,k,ue_iny0k) - call exact(i,j,1,ue_ij1) - call exact(i,j,nz,ue_ijnz) - do m = 1,5 - pxi = (1.0d+00 - xi) * ue_1jk(m) + xi * ue_nx0jk(m) - peta = (1.0d+00 - eta) * ue_i1k(m) + eta * ue_iny0k(m) - pzeta = (1.0d+00 - zeta) * ue_ij1(m) + zeta * ue_ijnz( - &m) - u(m,i,j,k) = pxi + peta + pzeta - pxi * peta - peta * - &pzeta - pzeta * pxi + pxi * peta * pzeta - enddo - enddo - enddo - enddo -!DVM$ REALIGN (iEX0,iEX1,iEX2,iEX3) WITH dvmh_temp0(iEX0,iEX1,iEX2,iEX3) -!DVM$& :: u - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/ssor.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/ssor.f deleted file mode 100644 index c2aea5f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/ssor.f +++ /dev/null @@ -1,765 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine ssor (niter) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! to perform pseudo-time stepping SSOR iterations -! for five nonlinear pde's. -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - integer :: niter - -!--------------------------------------------------------------------- -! end of include file - INCLUDE 'applu.incl' -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - integer :: i,j,k,m,n - integer :: istep - double precision :: tmp,tv(5),d_(5,5),a_(5,5),b_(5,5),c_(5,5) - double precision :: delunm(5),rs(5) - external timer_read - double precision :: timer_read - integer :: mod_522_2 - integer :: mod_522_1 - integer :: mod_522_0 - double precision :: tmp3 - double precision :: tmp2 - double precision :: tmp1 - double precision :: c34 - double precision :: c1345 - double precision :: r43 - integer :: j__3 - integer :: i__4 - integer :: d_15_14 - integer :: d_15_13 - integer :: ldx_14_12 - integer :: ldx_14_11 - integer :: ldy_13_10 - integer :: ldy_13_9 - integer :: ldz_12_8 - integer :: ldz_12_7 - integer :: v_11_6 - integer :: v_11_5 - double precision :: tv__15(5) - double precision :: tmat(5,5) - double precision :: tmp1__16 - double precision :: tmp__17 - integer :: m__18 - integer :: j__19 - integer :: i__20 - double precision :: tmp3__21 - double precision :: tmp2__22 - double precision :: tmp1__23 - double precision :: c34__24 - double precision :: c1345__25 - double precision :: r43__26 - integer :: j__27 - integer :: i__28 - integer :: udz_43_38 - integer :: udz_43_37 - integer :: udy_42_36 - integer :: udy_42_35 - integer :: udx_41_34 - integer :: udx_41_33 - integer :: d_40_32 - integer :: d_40_31 - integer :: v_38_30 - integer :: v_38_29 - double precision :: tmat__39(5,5) - double precision :: tmp1__40 - double precision :: tmp__41 - integer :: m__42 - integer :: j__43 - integer :: i__44 - -!--------------------------------------------------------------------- -! begin pseudo-time stepping iterations -!--------------------------------------------------------------------- - tmp = 1.0d+00 / (omega * (2.0d+00 - omega)) - do i = 1,11 - call timer_clear(i) - enddo - -!--------------------------------------------------------------------- -! compute the steady-state residuals -!--------------------------------------------------------------------- - call rhs() - -!--------------------------------------------------------------------- -! compute the L2 norms of newton iteration residuals -!--------------------------------------------------------------------- - call l2norm(isiz1,isiz2,isiz3,nx0,ny0,nz0,ist,iend,jst,jend,rsd,rs - &dnm) - -! if ( ipr .eq. 1 ) then -! write (*,*) ' Initial residual norms' -! write (*,*) -! write (*,1007) ( rsdnm(m), m = 1, 5 ) -! write (*,'(/a)') 'Iteration RMS-residual of 5th PDE' -! end if - do i = 1,11 - call timer_clear(i) - enddo - call timer_start(1) - -!--------------------------------------------------------------------- -! the timestep loop -!--------------------------------------------------------------------- - do istep = 1,niter - mod_522_0 = mod (istep,20) - -! if ( ( mod ( istep, inorm ) .eq. 0 ) .and. -! > ipr .eq. 1 ) then -! write ( *, 1001 ) istep -! end if - if (mod_522_0 .eq. 0 .or. istep .eq. itmax .or. istep .eq. 1) t - &hen - if (niter .gt. 1) write (unit = *,fmt = 200) istep -200 FORMAT(' Time step ', I4) - endif - -!--------------------------------------------------------------------- -! perform SSOR iteration -!--------------------------------------------------------------------- - if (timeron) then - call timer_start(5) - endif -!DVM$ INTERVAL 22 - if (timeron) then - call timer_stop(5) - endif - r43 = 4.0d+00 / 3.0d+00 - c1345 = c1 * c3 * c4 * c5 - c34 = c3 * c4 - r43__26 = 4.0d+00 / 3.0d+00 - c1345__25 = c1 * c3 * c4 * c5 - c34__24 = c3 * c4 -!DVM$ REGION -!DVM$ PARALLEL (k,j,i) ON rsd(*,i,j,k), PRIVATE (tmp3,tmp1,tmp2,tmat, -!DVM$&k,tv,rs,rmk,rmj,rmi,ro),ACROSS (rsd(0:0,1:0,1:0,1:0)),CUDA_BLOCK ( -!DVM$&16,16) - do k = 2,nz - 1 - do j = jst,jend - do i = ist,iend - rmk = 1.0d+00 / u(1,i,j,k - 1) - rmj = 1.0d+00 / u(1,i,j - 1,k) - rmi = 1.0d+00 / u(1,i - 1,j,k) - ro = 1.0d+00 / u(1,i,j,k) - rs(1) = dt * rsd(1,i,j,k) - rs(2) = dt * rsd(2,i,j,k) - rs(3) = dt * rsd(3,i,j,k) - rs(4) = dt * rsd(4,i,j,k) - rs(5) = dt * rsd(5,i,j,k) - rs(1) = rs(1) - omega * ((-(dt)) * tz1 * dz1 * rsd(1,i - &,j,k - 1) + (-(dt)) * tz2 * rsd(4,i,j,k - 1)) - tv(1) = rs(1) - omega * ((-(dt)) * ty1 * dy1 * rsd(1,i - &,j - 1,k) + (-(dt)) * tx1 * dx1 * rsd(1,i - 1,j,k) + (-(dt)) * tx2 - & * rsd(2,i - 1,j,k) + (-(dt)) * ty2 * rsd(3,i,j - 1,k) + 0.0d+00 * - & rsd(3,i - 1,j,k) + 0.0d+00 * rsd(4,i - 1,j,k) + 0.0d+00 * rsd(5,i - & - 1,j,k)) - tmat(1,1) = 1.0d+00 + dt * 2.0d+00 * (tx1 * dx1 + ty1 - &* dy1 + tz1 * dz1) - tmat(1,2) = 0 - tmat(1,3) = 0 - tmat(1,4) = 0 - tmat(1,5) = 0 - rs(2) = rs(2) - omega * (((-(dt)) * tz2 * ((-(u(2,i,j, - &k - 1) * u(4,i,j,k - 1))) * rmk * rmk) - dt * tz1 * ((-(c34)) * rm - &k * rmk * u(2,i,j,k - 1))) * rsd(1,i,j,k - 1) + ((-(dt)) * tz2 * ( - &u(4,i,j,k - 1) * rmk) - dt * tz1 * c34 * rmk - dt * tz1 * dz2) * r - &sd(2,i,j,k - 1) + (-(dt)) * tz2 * (u(2,i,j,k - 1) * rmk) * rsd(4,i - &,j,k - 1)) - tv(2) = rs(2) - omega * (((-(dt)) * ty2 * ((-(u(2,i,j - &- 1,k) * u(3,i,j - 1,k))) * rmj * rmj) - dt * ty1 * ((-(c34)) * rm - &j * rmj * u(2,i,j - 1,k))) * rsd(1,i,j - 1,k) + ((-(dt)) * tx2 * ( - &(-((u(2,i - 1,j,k) * rmi)** 2)) + c2 * qs(i - 1,j,k) * rmi) - dt * - & tx1 * ((-(r43)) * c34 * rmi * rmi * u(2,i - 1,j,k))) * rsd(1,i - - &1,j,k) + ((-(dt)) * ty2 * (u(3,i,j - 1,k) * rmj) - dt * ty1 * (c34 - & * rmj) - dt * ty1 * dy2) * rsd(2,i,j - 1,k) + ((-(dt)) * tx2 * (( - &2.0d+00 - c2) * (u(2,i - 1,j,k) * rmi)) - dt * tx1 * (r43 * c34 * - &rmi) - dt * tx1 * dx2) * rsd(2,i - 1,j,k) + (-(dt)) * ty2 * (u(2,i - &,j - 1,k) * rmj) * rsd(3,i,j - 1,k) + (-(dt)) * tx2 * ((-(c2)) * ( - &u(3,i - 1,j,k) * rmi)) * rsd(3,i - 1,j,k) + 0.0d+00 * rsd(4,i,j - - &1,k) + (-(dt)) * tx2 * ((-(c2)) * (u(4,i - 1,j,k) * rmi)) * rsd(4, - &i - 1,j,k) + 0.0d+00 * rsd(5,i,j - 1,k) + (-(dt)) * tx2 * c2 * rsd - &(5,i - 1,j,k)) - tmat(2,1) = (-(dt)) * 2.0d+00 * (tx1 * r43 + ty1 + tz1 - &) * c34 * ro * ro * u(2,i,j,k) - tmat(2,2) = 1.0d+00 + dt * 2.0d+00 * c34 * ro * (tx1 * - & r43 + ty1 + tz1) + dt * 2.0d+00 * (tx1 * dx2 + ty1 * dy2 + tz1 * - &dz2) - tmat(2,3) = 0 - tmat(2,4) = 0 - tmat(2,5) = 0 - rs(3) = rs(3) - omega * (((-(dt)) * tz2 * ((-(u(3,i,j, - &k - 1) * u(4,i,j,k - 1))) * rmk * rmk) - dt * tz1 * ((-(c34)) * rm - &k * rmk * u(3,i,j,k - 1))) * rsd(1,i,j,k - 1) + ((-(dt)) * tz2 * ( - &u(4,i,j,k - 1) * rmk) - dt * tz1 * (c34 * rmk) - dt * tz1 * dz3) * - & rsd(3,i,j,k - 1) + (-(dt)) * tz2 * (u(3,i,j,k - 1) * rmk) * rsd(4 - &,i,j,k - 1)) - tv(3) = rs(3) - omega * (((-(dt)) * ty2 * ((-((u(3,i,j - & - 1,k) * rmj)** 2)) + c2 * (qs(i,j - 1,k) * rmj)) - dt * ty1 * (( - &-(r43)) * c34 * rmj * rmj * u(3,i,j - 1,k))) * rsd(1,i,j - 1,k) + - &((-(dt)) * tx2 * ((-(u(2,i - 1,j,k) * u(3,i - 1,j,k))) * rmi * rmi - &) - dt * tx1 * ((-(c34)) * rmi * rmi * u(3,i - 1,j,k))) * rsd(1,i - &- 1,j,k) + (-(dt)) * ty2 * ((-(c2)) * (u(2,i,j - 1,k) * rmj)) * rs - &d(2,i,j - 1,k) + (-(dt)) * tx2 * (u(3,i - 1,j,k) * rmi) * rsd(2,i - &- 1,j,k) + ((-(dt)) * ty2 * ((2.0d+00 - c2) * (u(3,i,j - 1,k) * rm - &j)) - dt * ty1 * (r43 * c34 * rmj) - dt * ty1 * dy3) * rsd(3,i,j - - & 1,k) + ((-(dt)) * tx2 * (u(2,i - 1,j,k) * rmi) - dt * tx1 * (c34 - &* rmi) - dt * tx1 * dx3) * rsd(3,i - 1,j,k) + (-(dt)) * ty2 * ((-( - &c2)) * (u(4,i,j - 1,k) * rmj)) * rsd(4,i,j - 1,k) + 0.0d+00 * rsd( - &4,i - 1,j,k) + (-(dt)) * ty2 * c2 * rsd(5,i,j - 1,k) + 0.0d+00 * r - &sd(5,i - 1,j,k)) - tmat(3,1) = (-(dt)) * 2.0d+00 * (tx1 + ty1 * r43 + tz1 - &) * c34 * ro * ro * u(3,i,j,k) - tmat(3,2) = 0 - tmat(3,3) = 1.0d+00 + dt * 2.0d+00 * c34 * ro * (tx1 + - & ty1 * r43 + tz1) + dt * 2.0d+00 * (tx1 * dx3 + ty1 * dy3 + tz1 * - &dz3) - tmat(3,4) = 0 - tmat(3,5) = 0 - rs(4) = rs(4) - omega * (((-(dt)) * tz2 * ((-((u(4,i,j - &,k - 1) * rmk)** 2)) + c2 * qs(i,j,k - 1) * rmk) - dt * tz1 * ((-( - &r43)) * c34 * rmk * rmk * u(4,i,j,k - 1))) * rsd(1,i,j,k - 1) + (- - &(dt)) * tz2 * ((-(c2)) * (u(2,i,j,k - 1) * rmk)) * rsd(2,i,j,k - 1 - &) + (-(dt)) * tz2 * ((-(c2)) * (u(3,i,j,k - 1) * rmk)) * rsd(3,i,j - &,k - 1) + ((-(dt)) * tz2 * (2.0d+00 - c2) * (u(4,i,j,k - 1) * rmk) - & - dt * tz1 * (r43 * c34 * rmk) - dt * tz1 * dz4) * rsd(4,i,j,k - - &1) + (-(dt)) * tz2 * c2 * rsd(5,i,j,k - 1)) - tv(4) = rs(4) - omega * (((-(dt)) * ty2 * ((-(u(3,i,j - &- 1,k) * u(4,i,j - 1,k))) * rmj * rmj) - dt * ty1 * ((-(c34)) * rm - &j * rmj * u(4,i,j - 1,k))) * rsd(1,i,j - 1,k) + ((-(dt)) * tx2 * ( - &(-(u(2,i - 1,j,k) * u(4,i - 1,j,k))) * rmi * rmi) - dt * tx1 * ((- - &(c34)) * rmi * rmi * u(4,i - 1,j,k))) * rsd(1,i - 1,j,k) + 0.0d+00 - & * rsd(2,i,j - 1,k) + (-(dt)) * tx2 * (u(4,i - 1,j,k) * rmi) * rsd - &(2,i - 1,j,k) + (-(dt)) * ty2 * (u(4,i,j - 1,k) * rmj) * rsd(3,i,j - & - 1,k) + 0.0d+00 * rsd(3,i - 1,j,k) + ((-(dt)) * ty2 * (u(3,i,j - - & 1,k) * rmj) - dt * ty1 * (c34 * rmj) - dt * ty1 * dy4) * rsd(4,i, - &j - 1,k) + ((-(dt)) * tx2 * (u(2,i - 1,j,k) * rmi) - dt * tx1 * (c - &34 * rmi) - dt * tx1 * dx4) * rsd(4,i - 1,j,k) + 0.0d+00 * rsd(5,i - &,j - 1,k) + 0.0d+00 * rsd(5,i - 1,j,k)) - tmat(4,1) = (-(dt)) * 2.0d+00 * (tx1 + ty1 + tz1 * r43 - &) * c34 * ro * ro * u(4,i,j,k) - tmat(4,2) = 0 - tmat(4,3) = 0 - tmat(4,4) = 1.0d+00 + dt * 2.0d+00 * c34 * ro * (tx1 + - & ty1 + tz1 * r43) + dt * 2.0d+00 * (tx1 * dx4 + ty1 * dy4 + tz1 * - &dz4) - tmat(4,5) = 0 - rs(5) = rs(5) - omega * (((-(dt)) * tz2 * ((c2 * 2.0d0 - & * qs(i,j,k - 1) - c1 * u(5,i,j,k - 1)) * u(4,i,j,k - 1) * rmk * r - &mk) - dt * tz1 * ((-(c34 - c1345)) * rmk * rmk * rmk * u(2,i,j,k - - & 1)** 2 - (c34 - c1345) * rmk * rmk * rmk * u(3,i,j,k - 1)** 2 - ( - &r43 * c34 - c1345) * rmk * rmk * rmk * u(4,i,j,k - 1)** 2 - c1345 - &* rmk * rmk * u(5,i,j,k - 1))) * rsd(1,i,j,k - 1) + ((-(dt)) * tz2 - & * ((-(c2)) * (u(2,i,j,k - 1) * u(4,i,j,k - 1)) * rmk * rmk) - dt - &* tz1 * (c34 - c1345) * rmk * rmk * u(2,i,j,k - 1)) * rsd(2,i,j,k - &- 1) + ((-(dt)) * tz2 * ((-(c2)) * (u(3,i,j,k - 1) * u(4,i,j,k - 1 - &)) * rmk * rmk) - dt * tz1 * (c34 - c1345) * rmk * rmk * u(3,i,j,k - & - 1)) * rsd(3,i,j,k - 1) + ((-(dt)) * tz2 * (c1 * (u(5,i,j,k - 1) - & * rmk) - c2 * (qs(i,j,k - 1) * rmk + u(4,i,j,k - 1) * u(4,i,j,k - - & 1) * rmk * rmk)) - dt * tz1 * (r43 * c34 - c1345) * rmk * rmk * u - &(4,i,j,k - 1)) * rsd(4,i,j,k - 1) + ((-(dt)) * tz2 * (c1 * (u(4,i, - &j,k - 1) * rmk)) - dt * tz1 * c1345 * rmk - dt * tz1 * dz5) * rsd( - &5,i,j,k - 1)) - tv(5) = rs(5) - omega * (((-(dt)) * ty2 * ((c2 * 2.0d0 - & * qs(i,j - 1,k) - c1 * u(5,i,j - 1,k)) * (u(3,i,j - 1,k) * rmj * - &rmj)) - dt * ty1 * ((-(c34 - c1345)) * rmj * rmj * rmj * u(2,i,j - - & 1,k)** 2 - (r43 * c34 - c1345) * rmj * rmj * rmj * u(3,i,j - 1,k) - &** 2 - (c34 - c1345) * rmj * rmj * rmj * u(4,i,j - 1,k)** 2 - c134 - &5 * rmj * rmj * u(5,i,j - 1,k))) * rsd(1,i,j - 1,k) + ((-(dt)) * t - &x2 * ((c2 * 2.0d0 * qs(i - 1,j,k) - c1 * u(5,i - 1,j,k)) * u(2,i - - & 1,j,k) * rmi * rmi) - dt * tx1 * ((-(r43 * c34 - c1345)) * rmi * - &rmi * rmi * u(2,i - 1,j,k)** 2 - (c34 - c1345) * rmi * rmi * rmi * - & u(3,i - 1,j,k)** 2 - (c34 - c1345) * rmi * rmi * rmi * u(4,i - 1, - &j,k)** 2 - c1345 * rmi * rmi * u(5,i - 1,j,k))) * rsd(1,i - 1,j,k) - & + ((-(dt)) * ty2 * ((-(c2)) * (u(2,i,j - 1,k) * u(3,i,j - 1,k)) * - & rmj * rmj) - dt * ty1 * (c34 - c1345) * rmj * rmj * u(2,i,j - 1,k - &)) * rsd(2,i,j - 1,k) + ((-(dt)) * tx2 * (c1 * (u(5,i - 1,j,k) * r - &mi) - c2 * (u(2,i - 1,j,k) * u(2,i - 1,j,k) * rmi * rmi + qs(i - 1 - &,j,k) * rmi)) - dt * tx1 * (r43 * c34 - c1345) * rmi * rmi * u(2,i - & - 1,j,k)) * rsd(2,i - 1,j,k) + ((-(dt)) * ty2 * (c1 * (u(5,i,j - - &1,k) * rmj) - c2 * (qs(i,j - 1,k) * rmj + u(3,i,j - 1,k) * u(3,i,j - & - 1,k) * rmj * rmj)) - dt * ty1 * (r43 * c34 - c1345) * rmj * rmj - & * u(3,i,j - 1,k)) * rsd(3,i,j - 1,k) + ((-(dt)) * tx2 * ((-(c2)) - &* (u(3,i - 1,j,k) * u(2,i - 1,j,k)) * rmi * rmi) - dt * tx1 * (c34 - & - c1345) * rmi * rmi * u(3,i - 1,j,k)) * rsd(3,i - 1,j,k) + ((-(d - &t)) * ty2 * ((-(c2)) * (u(3,i,j - 1,k) * u(4,i,j - 1,k)) * rmj * r - &mj) - dt * ty1 * (c34 - c1345) * rmj * rmj * u(4,i,j - 1,k)) * rsd - &(4,i,j - 1,k) + ((-(dt)) * tx2 * ((-(c2)) * (u(4,i - 1,j,k) * u(2, - &i - 1,j,k)) * rmi * rmi) - dt * tx1 * (c34 - c1345) * rmi * rmi * - &u(4,i - 1,j,k)) * rsd(4,i - 1,j,k) + ((-(dt)) * ty2 * (c1 * (u(3,i - &,j - 1,k) * rmj)) - dt * ty1 * c1345 * rmj - dt * ty1 * dy5) * rsd - &(5,i,j - 1,k) + ((-(dt)) * tx2 * (c1 * (u(2,i - 1,j,k) * rmi)) - d - &t * tx1 * c1345 * rmi - dt * tx1 * dx5) * rsd(5,i - 1,j,k)) - tmat(5,1) = (-(dt)) * 2.0d+00 * (((tx1 * (r43 * c34 - - &c1345) + ty1 * (c34 - c1345) + tz1 * (c34 - c1345)) * u(2,i,j,k)** - & 2 + (tx1 * (c34 - c1345) + ty1 * (r43 * c34 - c1345) + tz1 * (c34 - & - c1345)) * u(3,i,j,k)** 2 + (tx1 * (c34 - c1345) + ty1 * (c34 - - &c1345) + tz1 * (r43 * c34 - c1345)) * u(4,i,j,k)** 2) * ro * ro * - &ro + (tx1 + ty1 + tz1) * c1345 * ro * ro * u(5,i,j,k)) - tmat(5,2) = dt * 2.0d+00 * ro * ro * u(2,i,j,k) * (tx1 - & * (r43 * c34 - c1345) + ty1 * (c34 - c1345) + tz1 * (c34 - c1345) - &) - tmat(5,3) = dt * 2.0d+00 * ro * ro * u(3,i,j,k) * (tx1 - & * (c34 - c1345) + ty1 * (r43 * c34 - c1345) + tz1 * (c34 - c1345) - &) - tmat(5,4) = dt * 2.0d+00 * ro * ro * u(4,i,j,k) * (tx1 - & * (c34 - c1345) + ty1 * (c34 - c1345) + tz1 * (r43 * c34 - c1345) - &) - tmat(5,5) = 1.0d+00 + dt * 2.0d+00 * (tx1 + ty1 + tz1) - & * c1345 * ro + dt * 2.0d+00 * (tx1 * dx5 + ty1 * dy5 + tz1 * dz5) - tmp1 = 1.0d+00 / tmat(1,1) - tmp2 = tmp1 * tmat(2,1) - tmat(2,2) = tmat(2,2) - tmp2 * tmat(1,2) - tmat(2,3) = tmat(2,3) - tmp2 * tmat(1,3) - tmat(2,4) = tmat(2,4) - tmp2 * tmat(1,4) - tmat(2,5) = tmat(2,5) - tmp2 * tmat(1,5) - tv(2) = tv(2) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(3,1) - tmat(3,2) = tmat(3,2) - tmp2 * tmat(1,2) - tmat(3,3) = tmat(3,3) - tmp2 * tmat(1,3) - tmat(3,4) = tmat(3,4) - tmp2 * tmat(1,4) - tmat(3,5) = tmat(3,5) - tmp2 * tmat(1,5) - tv(3) = tv(3) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(4,1) - tmat(4,2) = tmat(4,2) - tmp2 * tmat(1,2) - tmat(4,3) = tmat(4,3) - tmp2 * tmat(1,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(1,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(1,5) - tv(4) = tv(4) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(5,1) - tmat(5,2) = tmat(5,2) - tmp2 * tmat(1,2) - tmat(5,3) = tmat(5,3) - tmp2 * tmat(1,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(1,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(1,5) - tv(5) = tv(5) - tv(1) * tmp2 - tmp1 = 1.0d+00 / tmat(2,2) - tmp2 = tmp1 * tmat(3,2) - tmat(3,3) = tmat(3,3) - tmp2 * tmat(2,3) - tmat(3,4) = tmat(3,4) - tmp2 * tmat(2,4) - tmat(3,5) = tmat(3,5) - tmp2 * tmat(2,5) - tv(3) = tv(3) - tv(2) * tmp2 - tmp2 = tmp1 * tmat(4,2) - tmat(4,3) = tmat(4,3) - tmp2 * tmat(2,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(2,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(2,5) - tv(4) = tv(4) - tv(2) * tmp2 - tmp2 = tmp1 * tmat(5,2) - tmat(5,3) = tmat(5,3) - tmp2 * tmat(2,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(2,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(2,5) - tv(5) = tv(5) - tv(2) * tmp2 - tmp1 = 1.0d+00 / tmat(3,3) - tmp2 = tmp1 * tmat(4,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(3,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(3,5) - tv(4) = tv(4) - tv(3) * tmp2 - tmp2 = tmp1 * tmat(5,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(3,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(3,5) - tv(5) = tv(5) - tv(3) * tmp2 - tmp1 = 1.0d+00 / tmat(4,4) - tmp2 = tmp1 * tmat(5,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(4,5) - tv(5) = tv(5) - tv(4) * tmp2 - rs(5) = tv(5) / tmat(5,5) - tv(4) = tv(4) - tmat(4,5) * rs(5) - rs(4) = tv(4) / tmat(4,4) - tv(3) = tv(3) - tmat(3,4) * rs(4) - tmat(3,5) * rs(5) - rs(3) = tv(3) / tmat(3,3) - tv(2) = tv(2) - tmat(2,3) * rs(3) - tmat(2,4) * rs(4) - &- tmat(2,5) * rs(5) - rs(2) = tv(2) / tmat(2,2) - tv(1) = tv(1) - tmat(1,2) * rs(2) - tmat(1,3) * rs(3) - &- tmat(1,4) * rs(4) - tmat(1,5) * rs(5) - rs(1) = tv(1) / tmat(1,1) - rsd(1,i,j,k) = rs(1) - rsd(2,i,j,k) = rs(2) - rsd(3,i,j,k) = rs(3) - rsd(4,i,j,k) = rs(4) - rsd(5,i,j,k) = rs(5) - enddo - enddo - enddo -!DVM$ PARALLEL (k,j,i) ON rsd(*,i,j,k), PRIVATE (tv,tmat,tmp2,tmp1,rm -!DVM$&k,rmj,rmi,ro),ACROSS (rsd(0:0,0:1,0:1,0:1)),CUDA_BLOCK (16,16) - do k = nz - 1,2,(-(1)) - do j = jend,jst,(-(1)) - do i = iend,ist,(-(1)) - rmk = 1.0d+00 / u(1,i,j,k + 1) - rmj = 1.0d+00 / u(1,i,j + 1,k) - rmi = 1.0d+00 / u(1,i + 1,j,k) - ro = 1.0d+00 / u(1,i,j,k) - tv(1) = omega * ((-(dt)) * tz1 * dz1 * rsd(1,i,j,k + 1 - &) + 0.0d+00 * rsd(2,i,j,k + 1) + 0.0d+00 * rsd(3,i,j,k + 1) + dt * - & tz2 * rsd(4,i,j,k + 1) + 0.0d+00 * rsd(5,i,j,k + 1)) - tv(1) = tv(1) + omega * ((-(dt)) * ty1 * dy1 * rsd(1,i - &,j + 1,k) + (-(dt)) * tx1 * dx1 * rsd(1,i + 1,j,k) + 0.0d+00 * rsd - &(2,i,j + 1,k) + dt * tx2 * rsd(2,i + 1,j,k) + dt * ty2 * rsd(3,i,j - & + 1,k) + 0.0d+00 * rsd(3,i + 1,j,k) + 0.0d+00 * rsd(4,i,j + 1,k) - &+ 0.0d+00 * rsd(4,i + 1,j,k) + 0.0d+00 * rsd(5,i,j + 1,k) + 0.0d+0 - &0 * rsd(5,i + 1,j,k)) - tmat(1,1) = 1.0d+00 + dt * 2.0d+00 * (tx1 * dx1 + ty1 - &* dy1 + tz1 * dz1) - tmat(1,2) = 0.0d+00 - tmat(1,3) = 0.0d+00 - tmat(1,4) = 0.0d+00 - tmat(1,5) = 0.0d+00 - tv(2) = omega * ((dt * tz2 * ((-(u(2,i,j,k + 1) * u(4, - &i,j,k + 1))) * rmk * rmk) - dt * tz1 * ((-(c34__24)) * rmk * rmk * - & u(2,i,j,k + 1))) * rsd(1,i,j,k + 1) + (dt * tz2 * (u(4,i,j,k + 1) - & * rmk) - dt * tz1 * c34__24 * rmk - dt * tz1 * dz2) * rsd(2,i,j,k - & + 1) + 0.0d+00 * rsd(3,i,j,k + 1) + dt * tz2 * (u(2,i,j,k + 1) * - &rmk) * rsd(4,i,j,k + 1) + 0.0d+00 * rsd(5,i,j,k + 1)) - tv(2) = tv(2) + omega * ((dt * ty2 * ((-(u(2,i,j + 1,k - &) * u(3,i,j + 1,k))) * rmj * rmj) - dt * ty1 * ((-(c34__24)) * rmj - & * rmj * u(2,i,j + 1,k))) * rsd(1,i,j + 1,k) + (dt * tx2 * ((-((u( - &2,i + 1,j,k) * rmi)** 2)) + c2 * qs(i + 1,j,k) * rmi) - dt * tx1 * - & ((-(r43__26)) * c34__24 * rmi * rmi * u(2,i + 1,j,k))) * rsd(1,i - &+ 1,j,k) + (dt * ty2 * (u(3,i,j + 1,k) * rmj) - dt * ty1 * (c34__2 - &4 * rmj) - dt * ty1 * dy2) * rsd(2,i,j + 1,k) + (dt * tx2 * ((2.0d - &+00 - c2) * (u(2,i + 1,j,k) * rmi)) - dt * tx1 * (r43__26 * c34__2 - &4 * rmi) - dt * tx1 * dx2) * rsd(2,i + 1,j,k) + dt * ty2 * (u(2,i, - &j + 1,k) * rmj) * rsd(3,i,j + 1,k) + dt * tx2 * ((-(c2)) * (u(3,i - &+ 1,j,k) * rmi)) * rsd(3,i + 1,j,k) + 0.0d+00 * rsd(4,i,j + 1,k) + - & dt * tx2 * ((-(c2)) * (u(4,i + 1,j,k) * rmi)) * rsd(4,i + 1,j,k) - &+ 0.0d+00 * rsd(5,i,j + 1,k) + dt * tx2 * c2 * rsd(5,i + 1,j,k)) - tmat(2,1) = dt * 2.0d+00 * ((-(tx1)) * r43__26 - ty1 - - & tz1) * (c34__24 * ro * ro * u(2,i,j,k)) - tmat(2,2) = 1.0d+00 + dt * 2.0d+00 * c34__24 * ro * (t - &x1 * r43__26 + ty1 + tz1) + dt * 2.0d+00 * (tx1 * dx2 + ty1 * dy2 - &+ tz1 * dz2) - tmat(2,3) = 0.0d+00 - tmat(2,4) = 0.0d+00 - tmat(2,5) = 0.0d+00 - tv(3) = omega * ((dt * tz2 * ((-(u(3,i,j,k + 1) * u(4, - &i,j,k + 1))) * rmk * rmk) - dt * tz1 * ((-(c34__24)) * rmk * rmk * - & u(3,i,j,k + 1))) * rsd(1,i,j,k + 1) + 0.0d+00 * rsd(2,i,j,k + 1) - &+ (dt * tz2 * (u(4,i,j,k + 1) * rmk) - dt * tz1 * (c34__24 * rmk) - &- dt * tz1 * dz3) * rsd(3,i,j,k + 1) + dt * tz2 * (u(3,i,j,k + 1) - &* rmk) * rsd(4,i,j,k + 1) + 0.0d+00 * rsd(5,i,j,k + 1)) - tv(3) = tv(3) + omega * ((dt * ty2 * ((-((u(3,i,j + 1, - &k) * rmj)** 2)) + c2 * (qs(i,j + 1,k) * rmj)) - dt * ty1 * ((-(r43 - &__26)) * c34__24 * rmj * rmj * u(3,i,j + 1,k))) * rsd(1,i,j + 1,k) - & + (dt * tx2 * ((-(u(2,i + 1,j,k) * u(3,i + 1,j,k))) * rmi * rmi) - &- dt * tx1 * ((-(c34__24)) * rmi * rmi * u(3,i + 1,j,k))) * rsd(1, - &i + 1,j,k) + dt * ty2 * ((-(c2)) * (u(2,i,j + 1,k) * rmj)) * rsd(2 - &,i,j + 1,k) + dt * tx2 * (u(3,i + 1,j,k) * rmi) * rsd(2,i + 1,j,k) - & + (dt * ty2 * ((2.0d+00 - c2) * (u(3,i,j + 1,k) * rmj)) - dt * ty - &1 * (r43__26 * c34__24 * rmj) - dt * ty1 * dy3) * rsd(3,i,j + 1,k) - & + (dt * tx2 * (u(2,i + 1,j,k) * rmi) - dt * tx1 * (c34__24 * rmi) - & - dt * tx1 * dx3) * rsd(3,i + 1,j,k) + dt * ty2 * ((-(c2)) * (u(4 - &,i,j + 1,k) * rmj)) * rsd(4,i,j + 1,k) + 0.0d+00 * rsd(4,i + 1,j,k - &) + dt * ty2 * c2 * rsd(5,i,j + 1,k) + 0.0d+00 * rsd(5,i + 1,j,k)) - tmat(3,1) = dt * 2.0d+00 * ((-(tx1)) - ty1 * r43__26 - - & tz1) * (c34__24 * ro * ro * u(3,i,j,k)) - tmat(3,2) = 0.0d+00 - tmat(3,3) = 1.0d+00 + dt * 2.0d+00 * c34__24 * ro * (t - &x1 + ty1 * r43__26 + tz1) + dt * 2.0d+00 * (tx1 * dx3 + ty1 * dy3 - &+ tz1 * dz3) - tmat(3,4) = 0.0d+00 - tmat(3,5) = 0.0d+00 - tv(4) = omega * ((dt * tz2 * ((-((u(4,i,j,k + 1) * rmk - &)** 2)) + c2 * (qs(i,j,k + 1) * rmk)) - dt * tz1 * ((-(r43__26)) * - & c34__24 * rmk * rmk * u(4,i,j,k + 1))) * rsd(1,i,j,k + 1) + dt * - &tz2 * ((-(c2)) * (u(2,i,j,k + 1) * rmk)) * rsd(2,i,j,k + 1) + dt * - & tz2 * ((-(c2)) * (u(3,i,j,k + 1) * rmk)) * rsd(3,i,j,k + 1) + (dt - & * tz2 * (2.0d+00 - c2) * (u(4,i,j,k + 1) * rmk) - dt * tz1 * (r43 - &__26 * c34__24 * rmk) - dt * tz1 * dz4) * rsd(4,i,j,k + 1) + dt * - &tz2 * c2 * rsd(5,i,j,k + 1)) - tv(4) = tv(4) + omega * ((dt * ty2 * ((-(u(3,i,j + 1,k - &) * u(4,i,j + 1,k))) * rmj * rmj) - dt * ty1 * ((-(c34__24)) * rmj - & * rmj * u(4,i,j + 1,k))) * rsd(1,i,j + 1,k) + (dt * tx2 * ((-(u(2 - &,i + 1,j,k) * u(4,i + 1,j,k))) * rmi * rmi) - dt * tx1 * ((-(c34__ - &24)) * rmi * rmi * u(4,i + 1,j,k))) * rsd(1,i + 1,j,k) + 0.0d+00 * - & rsd(2,i,j + 1,k) + dt * tx2 * (u(4,i + 1,j,k) * rmi) * rsd(2,i + - &1,j,k) + dt * ty2 * (u(4,i,j + 1,k) * rmj) * rsd(3,i,j + 1,k) + 0. - &0d+00 * rsd(3,i + 1,j,k) + (dt * ty2 * (u(3,i,j + 1,k) * rmj) - dt - & * ty1 * (c34__24 * rmj) - dt * ty1 * dy4) * rsd(4,i,j + 1,k) + (d - &t * tx2 * (u(2,i + 1,j,k) * rmi) - dt * tx1 * (c34__24 * rmi) - dt - & * tx1 * dx4) * rsd(4,i + 1,j,k) + 0.0d+00 * rsd(5,i,j + 1,k) + 0. - &0d+00 * rsd(5,i + 1,j,k)) - tmat(4,1) = dt * 2.0d+00 * ((-(tx1)) - ty1 - tz1 * r43 - &__26) * (c34__24 * ro * ro * u(4,i,j,k)) - tmat(4,2) = 0.0d+00 - tmat(4,3) = 0.0d+00 - tmat(4,4) = 1.0d+00 + dt * 2.0d+00 * c34__24 * ro * (t - &x1 + ty1 + tz1 * r43__26) + dt * 2.0d+00 * (tx1 * dx4 + ty1 * dy4 - &+ tz1 * dz4) - tmat(4,5) = 0.0d+00 - tv(5) = omega * ((dt * tz2 * ((c2 * 2.0d0 * qs(i,j,k + - & 1) - c1 * u(5,i,j,k + 1)) * (u(4,i,j,k + 1) * rmk * rmk)) - dt * - &tz1 * ((-(c34__24 - c1345__25)) * rmk * rmk * rmk * u(2,i,j,k + 1) - &** 2 - (c34__24 - c1345__25) * rmk * rmk * rmk * u(3,i,j,k + 1)** - &2 - (r43__26 * c34__24 - c1345__25) * rmk * rmk * rmk * u(4,i,j,k - &+ 1)** 2 - c1345__25 * rmk * rmk * u(5,i,j,k + 1))) * rsd(1,i,j,k - &+ 1) + (dt * tz2 * ((-(c2)) * (u(2,i,j,k + 1) * u(4,i,j,k + 1)) * - &rmk * rmk) - dt * tz1 * (c34__24 - c1345__25) * rmk * rmk * u(2,i, - &j,k + 1)) * rsd(2,i,j,k + 1) + (dt * tz2 * ((-(c2)) * (u(3,i,j,k + - & 1) * u(4,i,j,k + 1)) * rmk * rmk) - dt * tz1 * (c34__24 - c1345__ - &25) * rmk * rmk * u(3,i,j,k + 1)) * rsd(3,i,j,k + 1) + (dt * tz2 * - & (c1 * (u(5,i,j,k + 1) * rmk) - c2 * (qs(i,j,k + 1) * rmk + u(4,i, - &j,k + 1) * u(4,i,j,k + 1) * rmk * rmk)) - dt * tz1 * (r43__26 * c3 - &4__24 - c1345__25) * rmk * rmk * u(4,i,j,k + 1)) * rsd(4,i,j,k + 1 - &) + (dt * tz2 * (c1 * (u(4,i,j,k + 1) * rmk)) - dt * tz1 * c1345__ - &25 * rmk - dt * tz1 * dz5) * rsd(5,i,j,k + 1)) - tv(5) = tv(5) + omega * ((dt * ty2 * ((c2 * 2.0d0 * qs - &(i,j + 1,k) - c1 * u(5,i,j + 1,k)) * (u(3,i,j + 1,k) * rmj * rmj)) - & - dt * ty1 * ((-(c34__24 - c1345__25)) * rmj * rmj * rmj * u(2,i, - &j + 1,k)** 2 - (r43__26 * c34__24 - c1345__25) * rmj * rmj * rmj * - & u(3,i,j + 1,k)** 2 - (c34__24 - c1345__25) * rmj * rmj * rmj * u( - &4,i,j + 1,k)** 2 - c1345__25 * rmj * rmj * u(5,i,j + 1,k))) * rsd( - &1,i,j + 1,k) + (dt * tx2 * ((c2 * 2.0d0 * qs(i + 1,j,k) - c1 * u(5 - &,i + 1,j,k)) * (u(2,i + 1,j,k) * rmi * rmi)) - dt * tx1 * ((-(r43_ - &_26 * c34__24 - c1345__25)) * rmi * rmi * rmi * u(2,i + 1,j,k)** 2 - & - (c34__24 - c1345__25) * rmi * rmi * rmi * u(3,i + 1,j,k)** 2 - - &(c34__24 - c1345__25) * rmi * rmi * rmi * u(4,i + 1,j,k)** 2 - c13 - &45__25 * rmi * rmi * u(5,i + 1,j,k))) * rsd(1,i + 1,j,k) + (dt * t - &y2 * ((-(c2)) * (u(2,i,j + 1,k) * u(3,i,j + 1,k)) * rmj * rmj) - d - &t * ty1 * (c34__24 - c1345__25) * rmj * rmj * u(2,i,j + 1,k)) * rs - &d(2,i,j + 1,k) + (dt * tx2 * (c1 * (u(5,i + 1,j,k) * rmi) - c2 * ( - &u(2,i + 1,j,k) * u(2,i + 1,j,k) * rmi * rmi + qs(i + 1,j,k) * rmi) - &) - dt * tx1 * (r43__26 * c34__24 - c1345__25) * rmi * rmi * u(2,i - & + 1,j,k)) * rsd(2,i + 1,j,k) + (dt * ty2 * (c1 * (u(5,i,j + 1,k) - &* rmj) - c2 * (qs(i,j + 1,k) * rmj + u(3,i,j + 1,k) * u(3,i,j + 1, - &k) * rmj * rmj)) - dt * ty1 * (r43__26 * c34__24 - c1345__25) * rm - &j * rmj * u(3,i,j + 1,k)) * rsd(3,i,j + 1,k) + (dt * tx2 * ((-(c2) - &) * (u(3,i + 1,j,k) * u(2,i + 1,j,k)) * rmi * rmi) - dt * tx1 * (c - &34__24 - c1345__25) * rmi * rmi * u(3,i + 1,j,k)) * rsd(3,i + 1,j, - &k) + (dt * ty2 * ((-(c2)) * (u(3,i,j + 1,k) * u(4,i,j + 1,k)) * rm - &j * rmj) - dt * ty1 * (c34__24 - c1345__25) * rmj * rmj * u(4,i,j - &+ 1,k)) * rsd(4,i,j + 1,k) + (dt * tx2 * ((-(c2)) * (u(4,i + 1,j,k - &) * u(2,i + 1,j,k)) * rmi * rmi) - dt * tx1 * (c34__24 - c1345__25 - &) * rmi * rmi * u(4,i + 1,j,k)) * rsd(4,i + 1,j,k) + (dt * ty2 * ( - &c1 * (u(3,i,j + 1,k) * rmj)) - dt * ty1 * c1345__25 * rmj - dt * t - &y1 * dy5) * rsd(5,i,j + 1,k) + (dt * tx2 * (c1 * (u(2,i + 1,j,k) * - & rmi)) - dt * tx1 * c1345__25 * rmi - dt * tx1 * dx5) * rsd(5,i + - &1,j,k)) - tmat(5,1) = (-(dt)) * 2.0d+00 * (((tx1 * (r43__26 * c3 - &4__24 - c1345__25) + ty1 * (c34__24 - c1345__25) + tz1 * (c34__24 - &- c1345__25)) * u(2,i,j,k)** 2 + (tx1 * (c34__24 - c1345__25) + ty - &1 * (r43__26 * c34__24 - c1345__25) + tz1 * (c34__24 - c1345__25)) - & * u(3,i,j,k)** 2 + (tx1 * (c34__24 - c1345__25) + ty1 * (c34__24 - &- c1345__25) + tz1 * (r43__26 * c34__24 - c1345__25)) * u(4,i,j,k) - &** 2) * ro * ro * ro + (tx1 + ty1 + tz1) * c1345__25 * ro * ro * u - &(5,i,j,k)) - tmat(5,2) = dt * 2.0d+00 * (tx1 * (r43__26 * c34__24 - - & c1345__25) + ty1 * (c34__24 - c1345__25) + tz1 * (c34__24 - c1345 - &__25)) * ro * ro * u(2,i,j,k) - tmat(5,3) = dt * 2.0d+00 * (tx1 * (c34__24 - c1345__25 - &) + ty1 * (r43__26 * c34__24 - c1345__25) + tz1 * (c34__24 - c1345 - &__25)) * ro * ro * u(3,i,j,k) - tmat(5,4) = dt * 2.0d+00 * (tx1 * (c34__24 - c1345__25 - &) + ty1 * (c34__24 - c1345__25) + tz1 * (r43__26 * c34__24 - c1345 - &__25)) * ro * ro * u(4,i,j,k) - tmat(5,5) = 1.0d+00 + dt * 2.0d+00 * (tx1 + ty1 + tz1) - & * c1345__25 * ro + dt * 2.0d+00 * (tx1 * dx5 + ty1 * dy5 + tz1 * - &dz5) - tmp1 = 1.0d+00 / tmat(1,1) - tmp2 = tmp1 * tmat(2,1) - tmat(2,2) = tmat(2,2) - tmp2 * tmat(1,2) - tmat(2,3) = tmat(2,3) - tmp2 * tmat(1,3) - tmat(2,4) = tmat(2,4) - tmp2 * tmat(1,4) - tmat(2,5) = tmat(2,5) - tmp2 * tmat(1,5) - tv(2) = tv(2) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(3,1) - tmat(3,2) = tmat(3,2) - tmp2 * tmat(1,2) - tmat(3,3) = tmat(3,3) - tmp2 * tmat(1,3) - tmat(3,4) = tmat(3,4) - tmp2 * tmat(1,4) - tmat(3,5) = tmat(3,5) - tmp2 * tmat(1,5) - tv(3) = tv(3) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(4,1) - tmat(4,2) = tmat(4,2) - tmp2 * tmat(1,2) - tmat(4,3) = tmat(4,3) - tmp2 * tmat(1,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(1,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(1,5) - tv(4) = tv(4) - tv(1) * tmp2 - tmp2 = tmp1 * tmat(5,1) - tmat(5,2) = tmat(5,2) - tmp2 * tmat(1,2) - tmat(5,3) = tmat(5,3) - tmp2 * tmat(1,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(1,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(1,5) - tv(5) = tv(5) - tv(1) * tmp2 - tmp1 = 1.0d+00 / tmat(2,2) - tmp2 = tmp1 * tmat(3,2) - tmat(3,3) = tmat(3,3) - tmp2 * tmat(2,3) - tmat(3,4) = tmat(3,4) - tmp2 * tmat(2,4) - tmat(3,5) = tmat(3,5) - tmp2 * tmat(2,5) - tv(3) = tv(3) - tv(2) * tmp2 - tmp2 = tmp1 * tmat(4,2) - tmat(4,3) = tmat(4,3) - tmp2 * tmat(2,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(2,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(2,5) - tv(4) = tv(4) - tv(2) * tmp2 - tmp2 = tmp1 * tmat(5,2) - tmat(5,3) = tmat(5,3) - tmp2 * tmat(2,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(2,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(2,5) - tv(5) = tv(5) - tv(2) * tmp2 - tmp1 = 1.0d+00 / tmat(3,3) - tmp2 = tmp1 * tmat(4,3) - tmat(4,4) = tmat(4,4) - tmp2 * tmat(3,4) - tmat(4,5) = tmat(4,5) - tmp2 * tmat(3,5) - tv(4) = tv(4) - tv(3) * tmp2 - tmp2 = tmp1 * tmat(5,3) - tmat(5,4) = tmat(5,4) - tmp2 * tmat(3,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(3,5) - tv(5) = tv(5) - tv(3) * tmp2 - tmp1 = 1.0d+00 / tmat(4,4) - tmp2 = tmp1 * tmat(5,4) - tmat(5,5) = tmat(5,5) - tmp2 * tmat(4,5) - tv(5) = tv(5) - tv(4) * tmp2 - tv(5) = tv(5) / tmat(5,5) - tv(4) = tv(4) - tmat(4,5) * tv(5) - tv(4) = tv(4) / tmat(4,4) - tv(3) = tv(3) - tmat(3,4) * tv(4) - tmat(3,5) * tv(5) - tv(3) = tv(3) / tmat(3,3) - tv(2) = tv(2) - tmat(2,3) * tv(3) - tmat(2,4) * tv(4) - &- tmat(2,5) * tv(5) - tv(2) = tv(2) / tmat(2,2) - tv(1) = tv(1) - tmat(1,2) * tv(2) - tmat(1,3) * tv(3) - &- tmat(1,4) * tv(4) - tmat(1,5) * tv(5) - tv(1) = tv(1) / tmat(1,1) - rsd(1,i,j,k) = rsd(1,i,j,k) - tv(1) - rsd(2,i,j,k) = rsd(2,i,j,k) - tv(2) - rsd(3,i,j,k) = rsd(3,i,j,k) - tv(3) - rsd(4,i,j,k) = rsd(4,i,j,k) - tv(4) - rsd(5,i,j,k) = rsd(5,i,j,k) - tv(5) - enddo - enddo - enddo - -!--------------------------------------------------------------------- -! update the variables -!--------------------------------------------------------------------- -! if (timeron) then -! call timer_start(10) -! endif -!DVM$ PARALLEL (k,j,i,m) ON u(m,i,j,k), PRIVATE (j,m,i,k) - do k = 1,nz - do j = jst,jend - do i = ist,iend - do m = 1,5 - u(m,i,j,k) = u(m,i,j,k) + tmp * rsd(m,i,j,k) - enddo - enddo - enddo - enddo -!DVM$ END REGION - -! if (timeron) then -! call timer_stop(10) -! endif -!--------------------------------------------------------------------- -! compute the steady-state residuals -!--------------------------------------------------------------------- -!DVM$ END INTERVAL - call rhs() - mod_522_2 = mod (istep,inorm) - -!--------------------------------------------------------------------- -! compute the max-norms of newton iteration residuals -!--------------------------------------------------------------------- - if (mod_522_2 .eq. 0 .or. istep .eq. itmax) then - if (timeron) then - call timer_start(11) - endif - call l2norm(isiz1,isiz2,isiz3,nx0,ny0,nz0,ist,iend,jst,jend, - &rsd,rsdnm) - if (timeron) then - call timer_stop(11) - endif - -! if ( ipr .eq. 1 ) then -! write (*,1007) ( rsdnm(m), m = 1, 5 ) -! end if - endif - -!--------------------------------------------------------------------- -! check the newton-iteration residuals against the tolerance levels -!--------------------------------------------------------------------- - if (rsdnm(1) .lt. tolrsd(1) .and. rsdnm(2) .lt. tolrsd(2) .and. - & rsdnm(3) .lt. tolrsd(3) .and. rsdnm(4) .lt. tolrsd(4) .and. rsdnm - &(5) .lt. tolrsd(5)) then - -! if (ipr .eq. 1 ) then - write (unit = *,fmt = 1004) istep - -! end if - goto 900 - endif - enddo -900 continue - call timer_stop(1) - maxtime = timer_read (1) - return -1001 FORMAT (1X/5X,'pseudo-time SSOR iteration no.=',I4/) -1004 FORMAT (1X/1X,'convergence was achieved after ',I4, ' pseudo-tim - &e steps' ) -1006 FORMAT (1X/1X,'RMS-norm of SSOR-iteration correction ', 'for first - & pde = ',1PE12.5/, 1X,'RMS-norm of SSOR-iteration correction ', ' - &for second pde = ',1PE12.5/, 1X,'RMS-norm of SSOR-iteration correc - &tion ', 'for third pde = ',1PE12.5/, 1X,'RMS-norm of SSOR-iterati - &on correction ', 'for fourth pde = ',1PE12.5/, 1X,'RMS-norm of SSO - &R-iteration correction ', 'for fifth pde = ',1PE12.5) -1007 FORMAT (1X/1X,'RMS-norm of steady-state residual for ', 'first pde - & = ',1PE12.5/, 1X,'RMS-norm of steady-state residual for ', 'seco - &nd pde = ',1PE12.5/, 1X,'RMS-norm of steady-state residual for ', - &'third pde = ',1PE12.5/, 1X,'RMS-norm of steady-state residual fo - &r ', 'fourth pde = ',1PE12.5/, 1X,'RMS-norm of steady-state residu - &al for ', 'fifth pde = ',1PE12.5) - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/timers.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/timers.f deleted file mode 100644 index 480c728..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/timers.f +++ /dev/null @@ -1,97 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - double precision dvtime - elapsed_time = dvtime() - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/verify.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/verify.f deleted file mode 100644 index 14e4b80..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/LU/verify.f +++ /dev/null @@ -1,382 +0,0 @@ - -! *** generated by SAPFOR with version 1124 and build date: Apr 18 2019 20:56:38 - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - subroutine verify (xcr, xce, xci, class, verified) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! verification routine -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--- applu.incl -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! npbparams.h defines parameters that depend on the class and -! number of nodes -!--------------------------------------------------------------------- - implicit none - -!--------------------------------------------------------------------- -! end of include file -!--------------------------------------------------------------------- - -!--------------------------------------------------------------------- -! end of include file - include 'applu.incl' -!--------------------------------------------------------------------- - double precision xcr(5),xce(5),xci - double precision xcrref(5),xceref(5),xciref,xcrdif(5),xcedif(5),x - &cidif,epsilon,dtref - integer m - character class - logical verified - -!--------------------------------------------------------------------- -! tolerance level -!--------------------------------------------------------------------- - epsilon = 1.0d-08 - class = 'U' - verified = .TRUE. - do m = 1,5 - xcrref(m) = 1.0 - xceref(m) = 1.0 - enddo - xciref = 1.0 - if (nx0 .eq. 12 .and. ny0 .eq. 12 .and. nz0 .eq. 12 .and. itmax .e - &q. 50) then - class = 'S' - dtref = 5.0d-1 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (12X12X12) grid, -! after 50 time steps, with DT = 5.0d-01 -!--------------------------------------------------------------------- - xcrref(1) = 1.6196343210976702d-02 - xcrref(2) = 2.1976745164821318d-03 - xcrref(3) = 1.5179927653399185d-03 - xcrref(4) = 1.5029584435994323d-03 - xcrref(5) = 3.4264073155896461d-02 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (12X12X12) grid, -! after 50 time steps, with DT = 5.0d-01 -!--------------------------------------------------------------------- - xceref(1) = 6.4223319957960924d-04 - xceref(2) = 8.4144342047347926d-05 - xceref(3) = 5.8588269616485186d-05 - xceref(4) = 5.8474222595157350d-05 - xceref(5) = 1.3103347914111294d-03 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (12X12X12) grid, -! after 50 time steps, with DT = 5.0d-01 -!--------------------------------------------------------------------- - xciref = 7.8418928865937083d+00 - else if (nx0 .eq. 33 .and. ny0 .eq. 33 .and. nz0 .eq. 33 .and. itm - &ax .eq. 300) then - -!SPEC95fp size - class = 'W' - dtref = 1.5d-3 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (33x33x33) grid, -! after 300 time steps, with DT = 1.5d-3 -!--------------------------------------------------------------------- - xcrref(1) = 0.1236511638192d+02 - xcrref(2) = 0.1317228477799d+01 - xcrref(3) = 0.2550120713095d+01 - xcrref(4) = 0.2326187750252d+01 - xcrref(5) = 0.2826799444189d+02 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (33X33X33) grid, -!--------------------------------------------------------------------- - xceref(1) = 0.4867877144216d+00 - xceref(2) = 0.5064652880982d-01 - xceref(3) = 0.9281818101960d-01 - xceref(4) = 0.8570126542733d-01 - xceref(5) = 0.1084277417792d+01 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (33X33X33) grid, -! after 300 time steps, with DT = 1.5d-3 -!--------------------------------------------------------------------- - xciref = 0.1161399311023d+02 - else if (nx0 .eq. 64 .and. ny0 .eq. 64 .and. nz0 .eq. 64 .and. itm - &ax .eq. 250) then - class = 'A' - dtref = 2.0d+0 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (64X64X64) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xcrref(1) = 7.7902107606689367d+02 - xcrref(2) = 6.3402765259692870d+01 - xcrref(3) = 1.9499249727292479d+02 - xcrref(4) = 1.7845301160418537d+02 - xcrref(5) = 1.8384760349464247d+03 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (64X64X64) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xceref(1) = 2.9964085685471943d+01 - xceref(2) = 2.8194576365003349d+00 - xceref(3) = 7.3473412698774742d+00 - xceref(4) = 6.7139225687777051d+00 - xceref(5) = 7.0715315688392578d+01 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (64X64X64) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xciref = 2.6030925604886277d+01 - else if (nx0 .eq. 102 .and. ny0 .eq. 102 .and. nz0 .eq. 102 .and. - &itmax .eq. 250) then - class = 'B' - dtref = 2.0d+0 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (102X102X102) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xcrref(1) = 3.5532672969982736d+03 - xcrref(2) = 2.6214750795310692d+02 - xcrref(3) = 8.8333721850952190d+02 - xcrref(4) = 7.7812774739425265d+02 - xcrref(5) = 7.3087969592545314d+03 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (102X102X102) -! grid, after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xceref(1) = 1.1401176380212709d+02 - xceref(2) = 8.1098963655421574d+00 - xceref(3) = 2.8480597317698308d+01 - xceref(4) = 2.5905394567832939d+01 - xceref(5) = 2.6054907504857413d+02 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (102X102X102) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xciref = 4.7887162703308227d+01 - else if (nx0 .eq. 162 .and. ny0 .eq. 162 .and. nz0 .eq. 162 .and. - &itmax .eq. 250) then - class = 'C' - dtref = 2.0d+0 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (162X162X162) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xcrref(1) = 1.03766980323537846d+04 - xcrref(2) = 8.92212458801008552d+02 - xcrref(3) = 2.56238814582660871d+03 - xcrref(4) = 2.19194343857831427d+03 - xcrref(5) = 1.78078057261061185d+04 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (162X162X162) -! grid, after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xceref(1) = 2.15986399716949279d+02 - xceref(2) = 1.55789559239863600d+01 - xceref(3) = 5.41318863077207766d+01 - xceref(4) = 4.82262643154045421d+01 - xceref(5) = 4.55902910043250358d+02 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (162X162X162) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xciref = 6.66404553572181300d+01 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (162X162X162) grid, -! after 250 time steps, with DT = 2.0d+00 -!--------------------------------------------------------------------- - xciref = 6.66404553572181300d+01 - else if (nx0 .eq. 408 .and. ny0 .eq. 408 .and. nz0 .eq. 408 .and. - &itmax .eq. 300) then - class = 'D' - dtref = 1.0d+0 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (408X408X408) grid, -! after 300 time steps, with DT = 1.0d+00 -!--------------------------------------------------------------------- - xcrref(1) = 0.4868417937025d+05 - xcrref(2) = 0.4696371050071d+04 - xcrref(3) = 0.1218114549776d+05 - xcrref(4) = 0.1033801493461d+05 - xcrref(5) = 0.7142398413817d+05 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (408X408X408) -! grid, after 300 time steps, with DT = 1.0d+00 -!--------------------------------------------------------------------- - xceref(1) = 0.3752393004482d+03 - xceref(2) = 0.3084128893659d+02 - xceref(3) = 0.9434276905469d+02 - xceref(4) = 0.8230686681928d+02 - xceref(5) = 0.7002620636210d+03 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (408X408X408) grid, -! after 300 time steps, with DT = 1.0d+00 -!--------------------------------------------------------------------- - xciref = 0.8334101392503d+02 - else if (nx0 .eq. 1020 .and. ny0 .eq. 1020 .and. nz0 .eq. 1020 .an - &d. itmax .eq. 300) then - class = 'E' - dtref = 0.5d+0 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of residual, for the (1020X1020X1020) grid, -! after 300 time steps, with DT = 0.5d+00 -!--------------------------------------------------------------------- - xcrref(1) = 0.2099641687874d+06 - xcrref(2) = 0.2130403143165d+05 - xcrref(3) = 0.5319228789371d+05 - xcrref(4) = 0.4509761639833d+05 - xcrref(5) = 0.2932360006590d+06 - -!--------------------------------------------------------------------- -! Reference values of RMS-norms of solution error, for the (1020X1020X1020) -! grid, after 300 time steps, with DT = 0.5d+00 -!--------------------------------------------------------------------- - xceref(1) = 0.4800572578333d+03 - xceref(2) = 0.4221993400184d+02 - xceref(3) = 0.1210851906824d+03 - xceref(4) = 0.1047888986770d+03 - xceref(5) = 0.8363028257389d+03 - -!--------------------------------------------------------------------- -! Reference value of surface integral, for the (1020X1020X1020) grid, -! after 300 time steps, with DT = 0.5d+00 -!--------------------------------------------------------------------- - xciref = 0.9512163272273d+02 - else - verified = .FALSE. - endif - -!--------------------------------------------------------------------- -! verification test for residuals if gridsize is one of -! the defined grid sizes above (class .ne. 'U') -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! Compute the difference of solution values and the known reference values. -!--------------------------------------------------------------------- - do m = 1,5 - xcrdif(m) = dabs ((xcr(m) - xcrref(m)) / xcrref(m)) - xcedif(m) = dabs ((xce(m) - xceref(m)) / xceref(m)) - enddo - xcidif = dabs ((xci - xciref) / xciref) - -!--------------------------------------------------------------------- -! Output the comparison of computed results to known cases. -!--------------------------------------------------------------------- - if (class .ne. 'U') then - write (unit = *,fmt = 1990) class -1990 format(/, ' Verification being performed for class ', a - &) - write (unit = *,fmt = 2000) epsilon -2000 format(' Accuracy setting for epsilon = ', E20.13) - verified = dabs (dt - dtref) .le. epsilon - if (.not.(verified)) then - class = 'U' - write (unit = *,fmt = 1000) dtref -1000 format(' DT does not match the reference value - & of ', E15.8) - endif - else - write (unit = *,fmt = 1995) -1995 format(' Unknown class') - endif - if (class .ne. 'U') then - write (unit = *,fmt = 2001) - else - write (unit = *,fmt = 2005) - endif -2001 format(' Comparison of RMS-norms of residual') -2005 format(' RMS-norms of residual') - do m = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m,xcr(m) - else if (xcrdif(m) .le. epsilon) then - write (unit = *,fmt = 2011) m,xcr(m),xcrref(m),xcrdif(m) - else - verified = .FALSE. - write (unit = *,fmt = 2010) m,xcr(m),xcrref(m),xcrdif(m) - endif - enddo - if (class .ne. 'U') then - write (unit = *,fmt = 2002) - else - write (unit = *,fmt = 2006) - endif -2002 format(' Comparison of RMS-norms of solution error') -2006 format(' RMS-norms of solution error') - do m = 1,5 - if (class .eq. 'U') then - write (unit = *,fmt = 2015) m,xce(m) - else if (xcedif(m) .le. epsilon) then - write (unit = *,fmt = 2011) m,xce(m),xceref(m),xcedif(m) - else - verified = .FALSE. - write (unit = *,fmt = 2010) m,xce(m),xceref(m),xcedif(m) - endif - enddo -2010 format(' FAILURE: ', i2, 2x, E20.13, E20.13, E20.13) -2011 format(' ', i2, 2x, E20.13, E20.13, E20.13) -2015 format(' ', i2, 2x, E20.13) - if (class .ne. 'U') then - write (unit = *,fmt = 2025) - else - write (unit = *,fmt = 2026) - endif -2025 format(' Comparison of surface integral') -2026 format(' Surface integral') - if (class .eq. 'U') then - write (unit = *,fmt = 2030) xci - else if (xcidif .le. epsilon) then - write (unit = *,fmt = 2032) xci,xciref,xcidif - else - verified = .FALSE. - write (unit = *,fmt = 2031) xci,xciref,xcidif - endif -2030 format(' ', 4x, E20.13) -2031 format(' FAILURE: ', 4x, E20.13, E20.13, E20.13) -2032 format(' ', 4x, E20.13, E20.13, E20.13) - if (class .eq. 'U') then - write (unit = *,fmt = 2022) - write (unit = *,fmt = 2023) -2022 format(' No reference values provided') -2023 format(' No verification performed') - else if (verified) then - write (unit = *,fmt = 2020) -2020 format(' Verification Successful') - else - write (unit = *,fmt = 2021) -2021 format(' Verification failed') - endif - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/Makefile deleted file mode 100644 index 9e72961..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=mg -BENCHMARKU=MG - -include ../config/make.def -include ../sys/make.common - -SOURCES = mg.fdv \ - mg3p.fdv \ - comm3.fdv \ - interp.fdv \ - norm2u3.fdv \ - psinv.fdv \ - resid.fdv \ - rjrp3.fdv \ - setupDVM.fdv \ - utilities.fdv \ - zran3.fdv - -OBJS = ${SOURCES:.fdv=.o} - -${PROGRAM}: config $(OBJS) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} - -%.o: %.fdv npbparams.h globals.h dvmvars.h - ${F77} f ${FFLAGS} -c -o $@ $< - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c *.f diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/TODO_make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/TODO_make.bat deleted file mode 100644 index a764763..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/TODO_make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams MG %CLASS% -CALL %F77% %OPT% mg 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist mg.exe ( - copy mg.exe %BIN%\mg.%CLASS%.x.exe - del mg.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/comm3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/comm3.fdv deleted file mode 100644 index 8869c07..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/comm3.fdv +++ /dev/null @@ -1,88 +0,0 @@ -c--------------------------------------------------------------------- -c Îáíîâëåíèå ãðàíè÷íûõ ýëåìåíòîâ. -c Âåëè÷èíà ãðàíèöû ðàâíà äâóì îò îò êàæäîãî êðàÿ ìàññèâà. -c--------------------------------------------------------------------- -c @param double precission :: u(n1 ,n2 ,n3) - íåêîòîðàÿ ìàòðèöà -c @param integer :: kk - ôèêòèâíûé ïàðàìåòð -c--------------------------------------------------------------------- - subroutine comm3(u,n1,n2,n3,kk) -c--------------------------------------------------------------------- -!DVM$ INHERIT u -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c comm3 organizes the communication on all borders -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1, n2, n3, kk, i1, i2, i3 - integer blockX, blockY - double precision u(n1,n2,n3) -!DVM$ interval 5 -!DVM$ REGION -!, REMOTE_ACCESS (u(n1-1,:,:)) -!DVM$ PARALLEL (i3,i2) ON u(1,i2,i3) -CDVM$& ,cuda_block(128) - do i3=2,n3-1 - do i2=2,n2-1 - u(1,i2,i3) = u(n1-1,i2,i3) - enddo - enddo - -!, REMOTE_ACCESS (u(2,:,:)) -!DVM$ PARALLEL (i3,i2) ON u(n1,i2,i3 ) -CDVM$& ,cuda_block(128) - do i3=2,n3-1 - do i2=2,n2-1 - u(n1,i2,i3) = u(2,i2,i3) - enddo - enddo - -c---------------------------------- -!, REMOTE_ACCESS (u(:,n2-1,:)) - -!DVM$ PARALLEL (i3,i1) ON u(i1,1,i3) -CDVM$& ,cuda_block(128) - do i3=2,n3-1 - do i1=1,n1 - u(i1,1,i3) = u(i1,n2-1,i3) - enddo - enddo - -! , REMOTE_ACCESS (u(:,2,:)) -!DVM$ PARALLEL (i3,i1) ON u(i1,n2,i3) -CDVM$& ,cuda_block(128) - do i3=2,n3-1 - do i1=1,n1 - u(i1,n2,i3) = u(i1,2,i3) - enddo - enddo - -c---------------------------------- - -!, REMOTE_ACCESS (u(:,:,n3-1)) -!DVM$ PARALLEL (i2,i1) ON u(i1,i2,1) -CDVM$& ,cuda_block(128) - do i2=1,n2 - do i1=1,n1 - u(i1,i2,1) = u(i1,i2,n3-1) - enddo - enddo - -!, REMOTE_ACCESS (u(:,:,2)) -!DVM$ PARALLEL (i2,i1) ON u(i1,i2,n3) -CDVM$& ,cuda_block(128) - do i2=1,n2 - do i1=1,n1 - u(i1,i2,n3) = u(i1,i2,2) - enddo - enddo -!DVM$ END REGION -!DVM$ end interval - if (timeron) call timer_stop(T_comm3) - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/dvmvars.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/dvmvars.h deleted file mode 100644 index cf36571..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/dvmvars.h +++ /dev/null @@ -1,57 +0,0 @@ -c--------------------------------------------------------------------- -c FDVM specifications -c--------------------------------------------------------------------- - integer p_u_ir(maxlevel) !p_u_ir(k) ≡ u(ir(k)) - integer p_r_ir(maxlevel) !p_u_ir(k) ≡ r(ir(k)) - integer pu !pu ≡ u(lt) ≡ p_u_ir(lt) - integer pr !pr ≡ r(lt) ≡ p_r_ir(lt) - integer pv !pv ≡ v - - integer p_curr_u_k !p_curr_u_k ≡ u(k) - integer p_curr_u_j !p_curr_u_j ≡ u(j) - - integer p_curr_r_k !p_curr_r_k ≡ r(k) - integer p_curr_r_j !p_curr_r_j ≡ r(j) - - common /pointers/ p_u_ir, p_r_ir - common /pointers/ pu, pr, pv - common /pointers/ p_curr_r_j, p_curr_r_k - common /pointers/ p_curr_u_j, p_curr_u_k - -CDVM$ DOUBLE PRECISION, POINTER(:,:,:) :: p_u_ir, p_r_ir, -CDVM$& pu, pr, pv, -CDVM$& p_curr_r_j, p_curr_r_k, -CDVM$& p_curr_u_j, p_curr_u_k - -CDVM$ ALIGN :: pu, pr, pv, -CDVM$& p_u_ir, p_r_ir, -CDVM$& p_curr_r_k, p_curr_r_j, -CDVM$& p_curr_u_k, p_curr_u_j - -CDVM$ DYNAMIC p_u_ir, p_r_ir, -CDVM$& pu, pr, pv, -CDVM$& p_curr_r_j, p_curr_r_k, -CDVM$& p_curr_u_j, p_curr_u_k - -CDVM$ SHADOW pu(1:1,1:1,1:1) -CDVM$ SHADOW pr(1:1,1:1,1:1) - -CDVM$ SHADOW p_curr_r_k(1:1,1:1,1:1) -CDVM$ SHADOW p_curr_u_k(1:1,1:1,1:1) -CDVM$ SHADOW p_curr_u_j(1:1,1:1,1:1) - -CDVM$ TEMPLATE EXT (nv1, nv2, nv3) -CDVM$ DISTRIBUTE EXT (BLOCK, BLOCK, BLOCK) - -c--------------------------------------------------------------------- -c Distribution from programm -c--------------------------------------------------------------------- - double precision u(nr), r(nr) - double precision v(nv) - - common /noautom/ u,r,v -CDVM$ HEAP u, r, v - - double precision a(0:3), c(0:3) - common /coefficients/ a,c -CDVM$ DISTRIBUTE (*) :: a, c \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/globals.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/globals.h deleted file mode 100644 index 89e0af6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/globals.h +++ /dev/null @@ -1,68 +0,0 @@ -c--------------------------------------------------------------------- -c Parameter lm (declared and set in "npbparams.h") is the log-base2 of -c the edge size max for the partition on a given node, so must be changed -c either to save space (if running a small case) or made bigger for larger -c cases, for example, 512^3. Thus lm=7 means that the largest dimension -c of a partition that can be solved on a node is 2^7 = 128. lm is set -c automatically in npbparams.h -c Parameters ndim1, ndim2, ndim3 are the local problem dimensions. -c--------------------------------------------------------------------- - - include 'npbparams.h' - - integer nm ! actual dimension including ghost cells for communications -c *** type of nv, nr and ir is set in npbparams.h -c > , nv ! size of rhs array -c > , nr ! size of residual array - > , nm2 ! size of communication buffer - > , maxlevel! maximum number of levels - - integer nv1, nv2, nv3 - parameter( nv1=one*(2+2**ndim1) ) - parameter( nv2=one*(2+2**ndim2) ) - parameter( nv3=one*(2+2**ndim3) ) - - parameter( nm=2+2**lm, maxlevel=(lt_default+1) ) - parameter( nm2=2*nm*nm) - parameter( nv=nv1*nv2*nv3/one/one ) - parameter( nr = ((nv+nm**2+5*nm+7*lm+6)/7)*8 ) -c--------------------------------------------------------------------- - integer nbr(3,-1:1,maxlevel), msg_type(3,-1:1) - integer msg_id(3,-1:1,2),nx(maxlevel),ny(maxlevel),nz(maxlevel) - common /mg3/ nbr,msg_type,msg_id,nx,ny,nz - - character class - common /ClassType/class - - integer debug_vec(0:7) - common /my_debug/ debug_vec - - integer m1(maxlevel), m2(maxlevel), m3(maxlevel) - integer lt, lb - common /fap/ ir(maxlevel),m1,m2,m3,lt,lb - - logical ver - ! FALSE for GPU and TRUE for CPU - parameter (ver = .false. ) - logical dead(maxlevel), give_ex(3,maxlevel), take_ex(3,maxlevel) - common /comm_ex/ dead, give_ex, take_ex - -c--------------------------------------------------------------------- -c Set at m=1024, can handle cases up to 1024^3 case -c--------------------------------------------------------------------- - integer m -c parameter( m=1037 ) - parameter( m=nm+1 ) - - double precision buff(nm2,4) - common /buffer/ buff - - logical timeron - common /timers/ timeron - integer T_init, T_bench, T_psinv, T_resid, T_rprj3, T_interp, - > T_norm2, T_mg3P, T_resid2, T_comm3, T_last - parameter (T_init=1, T_bench=2, T_mg3P=3, - > T_psinv=4, T_resid=5, T_resid2=6, T_rprj3=7, - > T_interp=8, T_norm2=9, T_comm3=10, T_last=10) - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/interp.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/interp.fdv deleted file mode 100644 index 0fa268f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/interp.fdv +++ /dev/null @@ -1,169 +0,0 @@ - -c--------------------------------------------------------------------- -c Òðèëèíåéíàÿ ýêñòðàïîëÿöèÿ èñêîìîé ôóíêöèè íà ïîäðîáíóþ ñåòêó -c--------------------------------------------------------------------- -c u(h) = u(h) + Q u(H) -c ãäå H = 2h - øàã ðàçáèåíèÿ ñåòêè, -c Q - ëèíåéíûé îïåðàòîð òðèëèíåéíîé ýêñòðàïîëÿöèè -c u - ìàòðèöà çíà÷åíèé èñêîìîé ôóíêöèè -c--------------------------------------------------------------------- -c Èñïîëüçóåòñÿ äëÿ ïîñòðîåíèå ïîäðîáíîé ñåòêè çíà÷åíèé èñêîìîé ôóíêöèè, -c ïðè âîñõîæäåíèè ïî V-öèêëó -c--------------------------------------------------------------------- -c @param double precission :: z(mm1,mm2,mm3) ? u(H) - ãðóáàÿ ñåòêà -c @param double precission :: u(n1 ,n2 ,n3 ) ? u(h) - ïîäðîáíàÿ ñåòêà -c @param integer :: k - òåêóùèé øàã óêðóïíåíèÿ ðàçáèåíèÿ ïåðâîíà÷àëüíîé ñåòêè -c--------------------------------------------------------------------- - subroutine interp( z,mm1,mm2,mm3,u,n1,n2,n3,k ) -c--------------------------------------------------------------------- -!DVM$ INHERIT z,u -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c interp adds the trilinear interpolation of the correction -c from the coarser grid to the current approximation: u = u + Qu' -c -c Observe that this implementation costs 16A + 4M, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. Vector machines may get slightly better -c performance however, with 8 separate "do i1" loops, rather than 4. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer mm1, mm2, mm3, n1, n2, n3,k - double precision z(mm1,mm2,mm3),u(n1,n2,n3),z1,z1_p1,z2,z2_p1 - double precision z3,z3_p1,z4,z4_p1 - integer i3, i2, i1, d1, d2, d3, t1, t2, t3 -!DVM$ interval 1 - if( n1 .ne. 3 .and. n2 .ne. 3 .and. n3 .ne. 3 ) then - if ( ver ) then - -!DVM$ REGION -!DVM$ PARALLEL (i3,i2) ON u(*, 2*i2, 2*i3), -!DVM$& SHADOW_RENEW(z(CORNER)), cuda_block(32,6) -!DVM$& ,private(i1,z1,z1_p1, z2,z2_p1, z3,z3_p1, z4,z4_p1) - do i3=1,mm3-1 - do i2=1,mm2-1 - z1 = z(1,i2,i3) - z2 = z(1,i2+1,i3+1) - z3 = z(1,i2,i3+1) - z4 = z(1,i2+1,i3) - do i1=1, mm1-1 - z1_p1 = z(i1+1,i2,i3) - z2_p1 = z(i1+1,i2+1,i3+1) - z3_p1 = z(i1+1,i2,i3+1) - z4_p1 = z(i1+1,i2+1,i3) - u(2*i1-1,2*i2-1,2*i3-1) = u(2*i1-1,2*i2-1,2*i3-1) + z1 - u(2*i1,2*i2-1,2*i3-1) = u(2*i1,2*i2-1,2*i3-1) + - & 0.5d0 * ( z1_p1 + z1 ) - u(2*i1-1,2*i2,2*i3-1) = u(2*i1-1,2*i2,2*i3-1) + - & 0.5d0 * ( z4 + z1 ) - u(2*i1,2*i2,2*i3-1) = u(2*i1,2*i2,2*i3-1) + - & 0.25d0*( z4 + z1 + z4_p1 + z1_p1) - u(2*i1-1,2*i2-1,2*i3) = u(2*i1-1,2*i2-1,2*i3) + - & +0.5d0 * ( z3 + z1 ) - u(2*i1,2*i2-1,2*i3) = u(2*i1,2*i2-1,2*i3) + - & 0.25d0*( z3 + z1 + z3_p1 + z1_p1) - u(2*i1-1,2*i2,2*i3) = u(2*i1-1,2*i2,2*i3) + - & 0.25d0* (z2 + z3 + z4 + z1 ) - u(2*i1,2*i2,2*i3) = u(2*i1,2*i2,2*i3) + - & 0.125d0*( z2 + z3 + z4 + z1 + z2_p1 + z3_p1 - & + z4_p1 + z1_p1 ) - z1 = z1_p1 - z2 = z2_p1 - z3 = z3_p1 - z4 = z4_p1 - enddo - enddo - enddo -!DVM$ END REGION - - else -!DVM$ REGION -!DVM$ PARALLEL (i3,i1) ON u(2*i1, *, 2*i3), -!DVM$& SHADOW_RENEW(z(CORNER)), cuda_block(32,6) -!DVM$& ,private(i2,z1,z1_p1, z2,z2_p1, z3,z3_p1, z4,z4_p1) - do i3=1,mm3-1 - do i1=1, mm1-1 - z1 = z(i1,1,i3) - z2 = z(i1+1,1,i3) - z3 = z(i1,1,i3+1) - z4 = z(i1+1,1,i3+1) - do i2=1,mm2-1 - z1_p1 = z(i1,i2+1,i3) - z2_p1 = z(i1+1,i2+1,i3) - z3_p1 = z(i1,i2+1,i3+1) - z4_p1 = z(i1+1,i2+1,i3+1) - u(2*i1-1,2*i2-1,2*i3-1) = u(2*i1-1,2*i2-1,2*i3-1) + z1 - u(2*i1,2*i2-1,2*i3-1) = u(2*i1,2*i2-1,2*i3-1) + - & 0.5d0 * ( z2 + z1 ) - u(2*i1-1,2*i2,2*i3-1) = u(2*i1-1,2*i2,2*i3-1) + - & 0.5d0 * ( z1_p1 + z1 ) - u(2*i1,2*i2,2*i3-1) = u(2*i1,2*i2,2*i3-1) + - & 0.25d0*( z1_p1 + z1 + z2_p1 + z2) - u(2*i1-1,2*i2-1,2*i3) = u(2*i1-1,2*i2-1,2*i3) + - & +0.5d0 * ( z3 + z1 ) - u(2*i1,2*i2-1,2*i3) = u(2*i1,2*i2-1,2*i3) + - & 0.25d0*( z3 + z1 + z4 + z2) - u(2*i1-1,2*i2,2*i3) = u(2*i1-1,2*i2,2*i3) + - & 0.25d0* (z3_p1 + z3 + z1_p1 + z1 ) - u(2*i1,2*i2,2*i3) = u(2*i1,2*i2,2*i3) + - & 0.125d0*( z3_p1 + z3 + z1_p1 + z1 + - & z4_p1 + z4 + z2_p1 + z2 ) - z1 = z1_p1 - z2 = z2_p1 - z3 = z3_p1 - z4 = z4_p1 - enddo - enddo - enddo -!DVM$ END REGION - endif - - else - - if(n1.eq.3) then; d1 = 2; t1 = 1; else; d1 = 1; t1 = 0; endif - if(n2.eq.3) then; d2 = 2; t2 = 1; else; d2 = 1; t2 = 0; endif - if(n3.eq.3) then; d3 = 2; t3 = 1; else; d3 = 1; t3 = 0; endif -!DVM$ REGION -!DVM$ PARALLEL (i3,i2,i1) ON u(2*i1-d1,2*i2-d2,2*i3-d3), -!DVM$& SHADOW_RENEW(z(CORNER)), PRIVATE(i3,i2,i1) -!DVM$& ,cuda_block(32,6,1) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-d2,2*i3-d3)=u(2*i1-d1,2*i2-d2,2*i3-d3) - & +z(i1,i2,i3) - u(2*i1-t1,2*i2-d2,2*i3-d3)=u(2*i1-t1,2*i2-d2,2*i3-d3) - & +0.5D0*(z(i1+1,i2,i3)+z(i1,i2,i3)) - u(2*i1-d1,2*i2-t2,2*i3-d3)=u(2*i1-d1,2*i2-t2,2*i3-d3) - & +0.5D0*(z(i1,i2+1,i3)+z(i1,i2,i3)) - u(2*i1-t1,2*i2-t2,2*i3-d3)=u(2*i1-t1,2*i2-t2,2*i3-d3) - & +0.25D0*(z(i1+1,i2+1,i3)+z(i1+1,i2,i3) - & +z(i1, i2+1,i3)+z(i1, i2,i3)) - u(2*i1-d1,2*i2-d2,2*i3-t3)=u(2*i1-d1,2*i2-d2,2*i3-t3) - & +0.5D0*(z(i1,i2,i3+1)+z(i1,i2,i3)) - u(2*i1-t1,2*i2-d2,2*i3-t3)=u(2*i1-t1,2*i2-d2,2*i3-t3) - & +0.25D0*(z(i1+1,i2,i3+1)+z(i1,i2,i3+1) - & +z(i1+1,i2,i3 )+z(i1,i2,i3 )) - u(2*i1-d1,2*i2-t2,2*i3-t3)=u(2*i1-d1,2*i2-t2,2*i3-t3) - & +0.25D0*(z(i1,i2+1,i3+1)+z(i1,i2,i3+1) - & +z(i1,i2+1,i3 )+z(i1,i2,i3 )) - u(2*i1-t1,2*i2-t2,2*i3-t3)=u(2*i1-t1,2*i2-t2,2*i3-t3) - & +0.125D0*(z(i1+1,i2+1,i3+1)+z(i1+1,i2,i3+1) - & +z(i1 ,i2+1,i3+1)+z(i1 ,i2,i3+1) - & +z(i1+1,i2+1,i3 )+z(i1+1,i2,i3 ) - & +z(i1 ,i2+1,i3 )+z(i1 ,i2,i3 )) - enddo - enddo - enddo - -!DVM$ END REGION - endif -!DVM$ end interval - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg.fdv deleted file mode 100644 index 45c42f6..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg.fdv +++ /dev/null @@ -1,369 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! D V M V E R S I O N ! -! ! -! M G ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is an OpenMP version of the NPB MG code. ! -! It is described in NAS Technical Report 99-011. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - - -c--------------------------------------------------------------------- -c -c Authors: -c Original: -c E. Barszcz -c P. Frederickson -c A. Woo -c M. Yarrow -c H. Jin -c DVM/DVMH vesion: -c A. Shubert -c Optimized for DVM/DVMH: -c A. Kolganov -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Программа Ñ€ÐµÑˆÐ°ÑŽÑ‰Ð°Ñ ÑƒÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ðµ ПуаÑона многоÑеточным методом (V-цикл) -c--------------------------------------------------------------------- - program mg -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - include 'dvmvars.h' - -c---------------------------------------------------------------------------c -c k is the current level. It is passed down through subroutine args -c and is NOT global. it is the current iteration -c---------------------------------------------------------------------------c - - integer k, it, pdim, pi - - external timer_read - double precision t, tinit, mflops, timer_read - -c---------------------------------------------------------------------------c -c These arrays are in common because they are quite large -c and probably shouldn't be allocated on the stack. They -c are always passed as subroutine args. -c---------------------------------------------------------------------------c - - double precision rnm2, rnmu, epsilon - integer n1, n2, n3, nit - double precision nn, verify_value, err, t_1,t_2 - logical verified - - integer i, fstatus - character t_names(t_last)*8 - double precision tmax, elapsed_time - - do i = T_init, T_last - call timer_clear(i) - end do - -c--------------------------------------------------------------------- -c Read in and broadcast input data -c--------------------------------------------------------------------- - - open(unit=7,file='timer.flag', status='old', iostat=fstatus) - if (fstatus .eq. 0) then - timeron = .true. - t_names(t_init) = 'init' - t_names(t_bench) = 'benchmk' - t_names(t_mg3P) = 'mg3P' - t_names(t_psinv) = 'psinv' - t_names(t_resid) = 'resid' - t_names(t_rprj3) = 'rprj3' - t_names(t_interp) = 'interp' - t_names(t_norm2) = 'norm2' - t_names(t_comm3) = 'comm3' - close(7) - else - timeron = .false. - endif - - write (*, 1000) - - open(unit=7,file="mg.input", status="old", iostat=fstatus) - if (fstatus .eq. 0) then - write(*,50) - 50 format(' Reading from input file mg.input') - read(7,*) lt - read(7,*) nx(lt), ny(lt), nz(lt) - read(7,*) nit - read(7,*) (debug_vec(i),i=0,7) - else - write(*,51) - 51 format(' No input file. Using compiled defaults ') - lt = lt_default - nit = nit_default - nx(lt) = nx_default - ny(lt) = ny_default - nz(lt) = nz_default - do i = 0,7 - debug_vec(i) = debug_default - end do - endif - - - if ( (nx(lt) .ne. ny(lt)) .or. (nx(lt) .ne. nz(lt)) ) then - Class = 'U' - else if( nx(lt) .eq. 32 .and. nit .eq. 4 ) then - Class = 'S' - else if( nx(lt) .eq. 128 .and. nit .eq. 4 ) then - Class = 'W' - else if( nx(lt) .eq. 256 .and. nit .eq. 4 ) then - Class = 'A' - else if( nx(lt) .eq. 256 .and. nit .eq. 20 ) then - Class = 'B' - else if( nx(lt) .eq. 512 .and. nit .eq. 20 ) then - Class = 'C' - else if( nx(lt) .eq. 1024 .and. nit .eq. 50 ) then - Class = 'D' - else if( nx(lt) .eq. 2048 .and. nit .eq. 50 ) then - Class = 'E' - else - Class = 'U' - endif - -c--------------------------------------------------------------------- -c Use these for debug info: -c--------------------------------------------------------------------- -c debug_vec(0) = 1 !=> report all norms -c debug_vec(1) = 1 !=> some setup information -c debug_vec(1) = 2 !=> more setup information -c debug_vec(2) = k => at level k or below, show result of resid -c debug_vec(3) = k => at level k or below, show result of psinv -c debug_vec(4) = k => at level k or below, show result of rprj -c debug_vec(5) = k => at level k or below, show result of interp -c debug_vec(6) = 1 => (unused) -c debug_vec(7) = 1 => (unused) -c--------------------------------------------------------------------- - a(0) = -8.0D0/3.0D0 - a(1) = 0.0D0 - a(2) = 1.0D0/6.0D0 - a(3) = 1.0D0/12.0D0 - - if(Class .eq. 'A' .or. Class .eq. 'S'.or. Class .eq.'W') then -c--------------------------------------------------------------------- -c Coefficients for the S(a) smoother -c--------------------------------------------------------------------- - c(0) = -3.0D0/8.0D0 - c(1) = +1.0D0/32.0D0 - c(2) = -1.0D0/64.0D0 - c(3) = 0.0D0 - else -c--------------------------------------------------------------------- -c Coefficients for the S(b) smoother -c--------------------------------------------------------------------- - c(0) = -3.0D0/17.0D0 - c(1) = +1.0D0/33.0D0 - c(2) = -1.0D0/61.0D0 - c(3) = 0.0D0 - endif - lb = 1 - k = lt - -c********************************************************************** -c********************************************************************** -c********************* START HERE ************************************* -c********************************************************************** -c********************************************************************** - - call setup(n1,n2,n3,k) - call setupDVM(0) - - call timer_start(T_init) - - call zero3(u(pu),n1,n2,n3) - call zran3(v(pv),n1,n2,n3,nx(lt),ny(lt),k,class) - - write (*, 1001) nx(lt),ny(lt),nz(lt), Class - write (*, 1002) nit - write (*, *) - - pdim = PROCESSORS_RANK() - write (*, 310) pdim - do pi=1, pdim - write (*, 311) pi, PROCESSORS_SIZE(pi) - enddo - write (*, *) ' ' - - 310 format(' Processors grid rank: ', i4) - 311 format(' Grid dimension [', i4, '] size: ', i4) - - 1000 format(//,' NAS Parallel Benchmarks (NPB3.3-DVMH)', - > ' - MG Benchmark', /) - 1001 format(' Size: ', i4, 'x', i4, 'x', i4, ' (class ', A, ')' ) - 1002 format(' Iterations: ', i5) - - call resid(u(pu),v(pv),r(pr),n1,n2,n3,a,k) - -c--------------------------------------------------------------------- -c One iteration for startup -c--------------------------------------------------------------------- - call mg3P(n1,n2,n3,k) - call resid(u(pu),v(pv),r(pr),n1,n2,n3,a,k) - call norm2u3(r(pr),n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) - call setup(n1,n2,n3,k) - - call zero3(u(pu),n1,n2,n3) - call zran3(v(pv),n1,n2,n3,nx(lt),ny(lt),k,class) - - call timer_stop(T_init) - tinit = timer_read(T_init) - - write( *,'(A,F15.3,A/)' ) - > ' Initialization time: ',tinit, ' seconds' - - do i = T_bench, T_last - call timer_clear(i) - end do - - call timer_start(T_bench) - call resid(u(pu),v(pv),r(pr),n1,n2,n3,a,k) - call norm2u3(r(pr),n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) - -! временный вызов -! call timer_start(T_bench) -c***************************************************************** -c********************MAIN LOOP *********************************** -c***************************************************************** - - do it = 1, nit - if (it.eq.1 .or. it.eq.nit .or. mod(it,5).eq.0) then - write(*,80) it - 80 format(' iter ',i3) - endif - call mg3P(n1,n2,n3,k) - call resid(u(pu),v(pv),r(pr),n1,n2,n3,a,k) - enddo - - call norm2u3(r(pr),n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) - - call timer_stop(T_bench) - - t = timer_read(T_bench) - - verified = .FALSE. - verify_value = 0.0 - - write(*,100) - 100 format(/' Benchmark completed ') - - epsilon = 1.d-8 - if (Class .ne. 'U') then - if(Class.eq.'S') then - verify_value = 0.5307707005734d-04 - elseif(Class.eq.'W') then - verify_value = 0.6467329375339d-05 - elseif(Class.eq.'A') then - verify_value = 0.2433365309069d-05 - elseif(Class.eq.'B') then - verify_value = 0.1800564401355d-05 - elseif(Class.eq.'C') then - verify_value = 0.5706732285740d-06 - elseif(Class.eq.'D') then - verify_value = 0.1583275060440d-09 - elseif(Class.eq.'E') then - verify_value = 0.5630442584711d-10 - endif - - err = abs( rnm2 - verify_value ) / verify_value - if( err .le. epsilon ) then - verified = .TRUE. - write(*, 200) - write(*, 201) rnm2 - write(*, 202) err - 200 format(' VERIFICATION SUCCESSFUL ') - 201 format(' L2 Norm is ', E20.13) - 202 format(' Error is ', E20.13) - else - verified = .FALSE. - write(*, 300) - write(*, 301) rnm2 - write(*, 302) verify_value - 300 format(' VERIFICATION FAILED') - 301 format(' L2 Norm is ', E20.13) - 302 format(' The correct L2 Norm is ', E20.13) - endif - else - verified = .FALSE. - write (*, 400) - write (*, 401) - write (*, 201) rnm2 - 400 format(' Problem size unknown') - 401 format(' NO VERIFICATION PERFORMED') - endif - - nn = 1.0d0*nx(lt)*ny(lt)*nz(lt) - - if( t .ne. 0. ) then - mflops = 58.*nit*nn*1.0D-6 /t - else - mflops = 0.0 - endif - - call print_results('MG', class, nx(lt), ny(lt), nz(lt), - > nit, t, - > mflops, ' floating point', - > verified, npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - - 600 format( i4, 2e19.12) - -c--------------------------------------------------------------------- -c More timers -c--------------------------------------------------------------------- - if (.not.timeron) goto 999 - - tmax = timer_read(t_bench) - if (tmax .eq. 0.0) tmax = 1.0 - - write(*,800) - 800 format(' SECTION Time (secs)') - do i=t_bench, t_last - t = timer_read(i) - if (i.eq.t_resid2) then - t = timer_read(T_resid) - t - write(*,820) 'mg-resid', t, t*100./tmax - else - write(*,810) t_names(i), t, t*100./tmax - endif - 810 format(2x,a8,':',f9.3,' (',f6.2,'%)') - 820 format(' --> ',a8,':',f9.3,' (',f6.2,'%)') - end do - - 999 continue - - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg3p.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg3p.fdv deleted file mode 100644 index da735d3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/mg3p.fdv +++ /dev/null @@ -1,167 +0,0 @@ -c--------------------------------------------------------------------- -c Èòåðàöèÿ ñïóñêà ïî V-öèêëó -c--------------------------------------------------------------------- -c @param integer d1, d2, d3 - ñìåùåíèå íà êðàåâûå óñëîâèÿ -c @param integer k - íîìåð ñåòêè -c--------------------------------------------------------------------- - subroutine VDownIteration(d1, d2, d3, k) - - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer k - integer d1, d2, d3 - -! !DVM$ GET_ACTUAL(p_curr_r_k) - !write (*,*) 'R(',k,') down: ' - !call printMatrix(r(p_curr_r_k), m1(k),m2(k),m3(k)); - !stop - - call rprj3( - > r(p_curr_r_k),m1(k),m2(k),m3(k), - > r(p_curr_r_j),m1(k-1),m2(k-1),m3(k-1), - > k, d1, d2, d3 - > ) - -! !DVM$ GET_ACTUAL(p_curr_r_j) - !write (*,*) 'R(',k-1,') down: ' - !call printMatrix(r(p_curr_r_j), m1(k-1),m2(k-1),m3(k-1)); - !stop - - return - end - -c--------------------------------------------------------------------- -c Èòåðàöèÿ ïîäúåìà ïî V-öèêëó -c--------------------------------------------------------------------- -c @param integer k - íîìåð ñåòêè -c--------------------------------------------------------------------- - subroutine VUpIteration(k) - - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer k - integer m1k, m2k, m3k - -c--------------------------------------------------------------------- -c prolongate from level k-1 to k -c--------------------------------------------------------------------- - call zero3(u(p_curr_u_k),m1(k),m2(k),m3(k)) - - call interp( - > u(p_curr_u_j),m1(k-1),m2(k-1),m3(k-1), - > u(p_curr_u_k),m1(k),m2(k),m3(k), - > k - > ) - -c--------------------------------------------------------------------- -c compute residual for level k -c--------------------------------------------------------------------- - call resid( - > u(p_curr_u_k), - > r(p_curr_r_k), - > r(p_curr_r_k), - > m1(k),m2(k),m3(k), - > a,k - > ) - - -c--------------------------------------------------------------------- -c apply smoother -c--------------------------------------------------------------------- - call psinv(r(p_curr_r_k),u(p_curr_u_k),m1(k),m2(k),m3(k),c,k) - - return - end - -c--------------------------------------------------------------------- -c Ìíîãîñåòî÷íûé ðåøàòåëü óðàâíåíèÿ Ïóàñîíà -c--------------------------------------------------------------------- - subroutine mg3P(n1,n2,n3,k) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c multigrid V-cycle routine -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer n1, n2, n3, k - - integer j, d1, d2, d3 - -c--------------------------------------------------------------------- -c down cycle. -c restrict the residual from the find grid to the coarse -c--------------------------------------------------------------------- -!!DVM$ INTERVAL 1 - p_curr_r_j = pr - - do k= lt, lb+1 , -1 - j = k-1 - - p_curr_r_k = p_curr_r_j - p_curr_r_j = p_r_ir(j) - - if(m1(k).eq.3)then; d1 = 2; else; d1 = 1; endif - if(m2(k).eq.3)then; d2 = 2; else; d2 = 1; endif - if(m3(k).eq.3)then; d3 = 2; else; d3 = 1; endif - - call VDownIteration(d1,d2,d3,k) - enddo -!!DVM$ END INTERVAL - -c--------------------------------------------------------------------- -c compute an approximate solution on the coarsest grid -c--------------------------------------------------------------------- -!!DVM$ INTERVAL 5 - k = lb - - p_curr_u_k = p_u_ir(k) - p_curr_r_k = p_r_ir(k) - - call zero3(u(p_curr_u_k),m1(k),m2(k),m3(k)) - call psinv(r(p_curr_r_k),u(p_curr_u_k),m1(k),m2(k),m3(k),c,k) -!!DVM$ END INTERVAL - -c--------------------------------------------------------------------- -c up cycle. -c--------------------------------------------------------------------- -!!DVM$ INTERVAL 6 - do k = lb+1, lt-1 - j = k-1 - - p_curr_u_j = p_curr_u_k - p_curr_u_k = p_u_ir(k) - p_curr_r_k = p_r_ir(k) - - call VUpIteration(k) - enddo -!!DVM$ END INTERVAL - - 200 continue - - j = lt - 1 - k = lt - - p_curr_u_j = p_u_ir(j) - - call interp(u(p_curr_u_j),m1(j) ,m2(j) ,m3(j), - > u(pu),m1(k),m2(k),m3(k), - > k - > ) - - call resid (u(pu),v(pv),r(pr),m1(k),m2(k),m3(k),a,k) - - call psinv (r(pr),u(pu),m1(k),m2(k),m3(k),c,k) - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/norm2u3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/norm2u3.fdv deleted file mode 100644 index a98f21f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/norm2u3.fdv +++ /dev/null @@ -1,51 +0,0 @@ -c--------------------------------------------------------------------- -c Ðàñ÷åò íîðìû -c--------------------------------------------------------------------- - subroutine norm2u3(r,n1,n2,n3,rnm2,rnmu,nx,ny,nz) -c--------------------------------------------------------------------- -!DVM$ INHERIT r -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c norm2u3 evaluates approximations to the L2 norm and the -c uniform (or L-infinity or Chebyshev) norm, under the -c assumption that the boundaries are periodic or zero. Add the -c boundaries in with half weight (quarter weight on the edges -c and eighth weight at the corners) for inhomogeneous boundaries. -c--------------------------------------------------------------------- - implicit none - - integer n1, n2, n3, nx, ny, nz - double precision rnm2, rnmu, r(n1,n2,n3) - double precision s, a - integer i3, i2, i1 - - double precision dn - - integer T_norm2 - parameter (T_norm2=9) - - dn = 1.0d0*nx*ny*nz - s=0.0D0 - rnmu = 0.0D0 - - -!DVM$ REGION -!DVM$ PARALLEL (i3,i2,i1) ON r(i1,i2,i3), -!DVM$& REDUCTION(SUM(s), MAX(rnmu)), PRIVATE(a) -!DVM$& ,cuda_block(32,4,1) - do i3=2,n3-1 - do i2=2,n2-1 - do i1=2,n1-1 - s=s+r(i1,i2,i3)**2 - a=abs(r(i1,i2,i3)) - rnmu=dmax1(rnmu,a) - enddo - enddo - enddo -!DVM$ END REGION -!!DVM$ END INTERVAL - rnm2=sqrt( s / dn ) - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/psinv.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/psinv.fdv deleted file mode 100644 index 97d0723..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/psinv.fdv +++ /dev/null @@ -1,167 +0,0 @@ -c--------------------------------------------------------------------- -c Èíòåðïîëÿöèÿ ðåøåíèÿ íà îñíîâå íåâÿçêè -c--------------------------------------------------------------------- -c u(h) = u(h) + C r(h) -c ãäå C - âåêòîð-ñòîëáåö êîýôèöåíòîâ ñêëàæèâàíèÿ, -c r - íåâÿçêà -c h - øàã ðàçáèåíèÿ -c--------------------------------------------------------------------- -c Èñïîëüçóåòñÿ: -c - ðåøåíèå çàäà÷è íà ãðóáîé ñåòêå íà äíå V-öèêëà; -c - ñãëàæèâàíèå âûñîêî÷àñòîòíûõ êîìïîíåíò ïðè âîçõîæäåíèè ïî V-öèêëó -c--------------------------------------------------------------------- -c @param double precission :: r(n1,n2,n3) ? r(h) - íåâÿçêà -c @param double precission :: u(n1,n2,n3) ? u(H) - ãðóáàÿ ñåòêà -c @param double precission :: ñ(3) ? Ñ - êîýôèöåíòû ñãëàæèâàíèÿ -c @param integer :: k - òåêóùèé øàã óêðóïíåíèÿ ðàçáèåíèÿ ïåðâîíà÷àëüíîé ñåòêè -c--------------------------------------------------------------------- - subroutine psinv( r,u,n1,n2,n3,c,k) -c--------------------------------------------------------------------- -!DVM$ INHERIT r,u,c -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c psinv applies an approximate inverse as smoother: u = u + Cr -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Presuming coefficient c(3) is zero (the NPB assumes this, -c but it is thus not a general case), 2A + 1M may be eliminated, -c resulting in 13A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1,n2,n3,k - double precision u(n1,n2,n3),r(n1,n2,n3),c(0:3) - double precision c_0,c_1,c_2, r1,r1_m1,r1_p1, r2,r2_m1,r2_p1 - double precision r3,r3_m1,r3_p1, r4,r4_m1,r4_p1, r5,r5_m1,r5_p1 - integer i3, i2, i1 - - if(Class .eq. 'A' .or. Class .eq. 'S'.or. Class .eq.'W') then - c_0 = -3.0D0/8.0D0 - c_1 = +1.0D0/32.0D0 - c_2 = -1.0D0/64.0D0 - else - c_0 = -3.0D0/17.0D0 - c_1 = +1.0D0/33.0D0 - c_2 = -1.0D0/61.0D0 - endif - -!DVM$ interval 2 - if( ver ) then -!DVM$ REGION -!DVM$ PARALLEL (i3,i2) ON u(*,i2,i3),cuda_block(32,6), -!DVM$& SHADOW_RENEW(r(CORNER)), -!DVM$& private(i1,r1,r1_m1,r1_p1,r2,r2_m1,r2_p1,r3,r3_m1,r3_p1, -!DVM$& r4,r4_m1,r4_p1, r5,r5_m1,r5_p1) - do i3=2,n3-1 - do i2=2,n2-1 - r1_m1=r(1,i2,i3) - r1=r(2,i2,i3) - r2_m1=r(1,i2-1,i3) - r2=r(2,i2-1,i3) - r3_m1=r(1,i2+1,i3) - r3=r(2,i2+1,i3) - r4_m1=r(1,i2,i3+1) - r4=r(2,i2,i3+1) - r5_m1=r(1,i2,i3-1) - r5=r(2,i2,i3-1) - do i1=2,n1-1 - r1_p1=r(i1+1,i2,i3) - r2_p1=r(i1+1,i2-1,i3) - r3_p1=r(i1+1,i2+1,i3) - r4_p1=r(i1+1,i2,i3+1) - r5_p1=r(i1+1,i2,i3-1) - u(i1,i2,i3) = u(i1,i2,i3) - & + c_0 * r1 - & + c_1 * ( r1_m1 + r1_p1 + r2 + r3 + r5 + r4) - & + c_2 * ( r(i1,i2-1,i3-1) + r(i1,i2+1,i3-1) - & + r(i1,i2-1,i3+1) + r(i1,i2+1,i3+1) - & + r2_m1+r3_m1+r5_m1+r4_m1+r2_p1+r3_p1+r5_p1+r4_p1) - r1_m1 = r1 - r1 = r1_p1 - r2_m1 = r2 - r2 = r2_p1 - r3_m1 = r3 - r3 = r3_p1 - r4_m1 = r4 - r4 = r4_p1 - r5_m1 = r5 - r5 = r5_p1 - enddo - enddo - enddo -!DVM$ END REGION - else -!DVM$ REGION -!DVM$ PARALLEL (i3,i1) ON u(i1,*,i3),cuda_block(32,6) -!DVM$& ,private(i2,r1,r1_m1,r1_p1, r2,r2_m1,r2_p1, r3,r3_m1,r3_p1, -!DVM$& r4,r4_m1,r4_p1, r5,r5_m1,r5_p1), SHADOW_RENEW(r(CORNER)) - do i3=2,n3-1 - do i1=2,n1-1 - r1_m1 = r(i1,1,i3) - r1 = r(i1,2,i3) - - r2_m1 = r(i1-1,1,i3) - r2 = r(i1-1,2,i3) - - r3_m1 = r(i1+1,1,i3) - r3 = r(i1+1,2,i3) - - r4_m1 = r(i1,1,i3+1) - r4 = r(i1,2,i3+1) - - r5_m1 = r(i1,1,i3-1) - r5 = r(i1,2,i3-1) - - do i2=2,n2-1 - r1_p1 = r(i1,i2+1,i3) - r2_p1 = r(i1-1,i2+1,i3) - r3_p1 = r(i1+1,i2+1,i3) - r4_p1 = r(i1,i2+1,i3+1) - r5_p1 = r(i1,i2+1,i3-1) - u(i1,i2,i3) = u(i1,i2,i3) - & + c_0 * r1 - & + c_1 * ( r2 + r3 - & + r1_m1 + r1_p1 - & + r4 + r5 - & ) - & + c_2 * ( - & r4_m1 + r4_p1 - & + r5_m1 + r5_p1 - & + r2_m1 + r2_p1 - & + r(i1-1,i2,i3-1) + r(i1-1,i2,i3+1) - & + r3_m1 + r3_p1 - & + r(i1+1,i2,i3-1) + r(i1+1,i2,i3+1) - & ) - r1_m1 = r1 - r1 = r1_p1 - - r2_m1 = r2 - r2 = r2_p1 - - r3_m1 = r3 - r3 = r3_p1 - - r4_m1 = r4 - r4 = r4_p1 - - r5_m1 = r5 - r5 = r5_p1 - enddo - enddo - enddo -!DVM$ END REGION - endif -!DVM$ end interval -c--------------------------------------------------------------------- -c exchange boundary points -c--------------------------------------------------------------------- - call comm3(u,n1,n2,n3,k) - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/resid.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/resid.fdv deleted file mode 100644 index 27c57e8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/resid.fdv +++ /dev/null @@ -1,196 +0,0 @@ -c--------------------------------------------------------------------- -c Óòî÷íåíèå íåâÿçêè -c--------------------------------------------------------------------- -c r(h) = v - A u(h) -c ãäå A - âåêòîð-ñòîëáåö êîýôèöåíòîâ, -c v - ïîãðåøíîñòü (íà âíóòðåííèõ óçëàõ V-öèêëà, îïðåäåëÿåòñÿ íåâÿçêîé) -c h - øàã ðàçáèåíèÿ -c--------------------------------------------------------------------- -c Èñïîëüçóåòñÿ äëÿ óòî÷íåíèÿ íåâÿçêè, ïðè âîñõîæäåíèè ïî V-öèêëó -c--------------------------------------------------------------------- -c @param double precission :: r(n1,n2,n3) ? r(h) - íåâÿçêà -c @param double precission :: v(n1,n2,n3) ? v - ïîãðåøíîñòü -c @param double precission :: a(3) ? A - êîýôèöèåíòû -c @param integer :: k - òåêóùèé øàã óêðóïíåíèÿ ðàçáèåíèÿ ïåðâîíà÷àëüíîé ñåòêè -c--------------------------------------------------------------------- - subroutine resid( u,v,r,n1,n2,n3,a,k ) -c--------------------------------------------------------------------- -!DVM$ INHERIT r, u, a, v -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c resid computes the residual: r = v - Au -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition (or Subtraction) and -c Multiplication, respectively. -c Presuming coefficient a(1) is zero (the NPB assumes this, -c but it is thus not a general case), 3A + 1M may be eliminated, -c resulting in 12A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1,n2,n3,k - double precision u(n1,n2,n3),v(n1,n2,n3),r(n1,n2,n3),a(0:3) - integer i3, i2, i1 - double precision u1_m1,u1,u1_p1, u2_m1,u2,u2_p1, u3_m1,u3,u3_p1 - double precision u4_m1,u4,u4_p1, u5_m1,u5,u5_p1, u6_m1,u6,u6_p1 - double precision u7_m1,u7,u7_p1, u8_m1,u8,u8_p1 - -!DVM$ interval 3 - if ( ver ) then - -!DVM$ REGION -!DVM$ PARALLEL (i3,i2) ON r(*,i2,i3), cuda_block(32,6) -!DVM$& ,private(i1, u1_m1,u1,u1_p1, u2_m1,u2,u2_p1, u3_m1,u3,u3_p1, -!DVM$& u4_m1,u4,u4_p1, u5_m1,u5,u5_p1, u6_m1,u6,u6_p1, -!DVM$& u7_m1,u7,u7_p1, u8_m1,u8,u8_p1),SHADOW_RENEW(u(CORNER)) - do i3=2,n3-1 - do i2=2,n2-1 - u1_m1 = u(1,i2-1,i3-1) - u1 = u(2,i2-1,i3-1) - u2_m1 = u(1,i2+1,i3+1) - u2 = u(2,i2+1,i3+1) - u3_m1 = u(1,i2-1,i3+1) - u3 = u(2,i2-1,i3+1) - u4_m1 = u(1,i2+1,i3-1) - u4 = u(2,i2+1,i3-1) - u5_m1 = u(1,i2+1,i3) - u5 = u(2,i2+1,i3) - u6_m1 = u(1,i2-1,i3) - u6 = u(2,i2-1,i3) - u7_m1 = u(1,i2,i3-1) - u7 = u(2,i2,i3-1) - u8_m1 = u(1,i2,i3+1) - u8 = u(2,i2,i3+1) - do i1=2,n1-1 - u1_p1 = u(i1+1,i2-1,i3-1) - u2_p1 = u(i1+1,i2+1,i3+1) - u3_p1 = u(i1+1,i2-1,i3+1) - u4_p1 = u(i1+1,i2+1,i3-1) - u5_p1 = u(i1+1,i2+1,i3) - u6_p1 = u(i1+1,i2-1,i3) - u7_p1 = u(i1+1,i2,i3-1) - u8_p1 = u(i1+1,i2,i3+1) - r(i1,i2,i3) = v(i1,i2,i3) - & + 8.0D0/3.0D0 * u(i1,i2,i3) - 1.0D0/6.0D0 * - & (u1+u4+u3+u2+u6_m1+u5_m1+u7_m1+u8_m1+u6_p1+u5_p1+u7_p1+u8_p1) - & -1.0D0/12.0D0*(u1_m1+u4_m1+u3_m1+u2_m1+u1_p1+u4_p1+u3_p1+u2_p1) - u1_m1 = u1 - u1 = u1_p1 - u2_m1 = u2 - u2 = u2_p1 - u3_m1 = u3 - u3 = u3_p1 - u4_m1 = u4 - u4 = u4_p1 - u5_m1 = u5 - u5 = u5_p1 - u6_m1 = u6 - u6 = u6_p1 - u7_m1 = u7 - u7 = u7_p1 - u8_m1 = u8 - u8 = u8_p1 - enddo - enddo - enddo -!DVM$ END REGION - - else -!DVM$ REGION -!DVM$ PARALLEL (i3,i1) ON r(i1,*,i3), cuda_block(32,6) -!DVM$& ,private(i2, u1_m1,u1,u1_p1, u2_m1,u2,u2_p1, u3_m1,u3,u3_p1, -!DVM$& u4_m1,u4,u4_p1, u5_m1,u5,u5_p1, u6_m1,u6,u6_p1, -!DVM$& u7_m1,u7,u7_p1, u8_m1,u8,u8_p1),SHADOW_RENEW(u(CORNER)) - do i3=2,n3-1 - do i1=2,n1-1 - u1_m1 = u(i1,1,i3-1) - u1 = u(i1,2,i3-1) - - u2_m1 = u(i1,1,i3+1) - u2 = u(i1,2,i3+1) - - u3_m1 = u(i1-1,1,i3) - u3 = u(i1-1,2,i3) - - u4_m1 = u(i1-1,1,i3-1) - u4 = u(i1-1,2,i3-1) - - u5_m1 = u(i1-1,1,i3+1) - u5 = u(i1-1,2,i3+1) - - u6_m1 = u(i1+1,1,i3) - u6 = u(i1+1,2,i3) - - u7_m1 = u(i1+1,1,i3-1) - u7 = u(i1+1,2,i3-1) - - u8_m1 = u(i1+1,1,i3+1) - u8 = u(i1+1,2,i3+1) - do i2=2,n2-1 - u1_p1 = u(i1,i2+1,i3-1) - u2_p1 = u(i1,i2+1,i3+1) - u3_p1 = u(i1-1,i2+1,i3) - u4_p1 = u(i1-1,i2+1,i3-1) - u5_p1 = u(i1-1,i2+1,i3+1) - u6_p1 = u(i1+1,i2+1,i3) - u7_p1 = u(i1+1,i2+1,i3-1) - u8_p1 = u(i1+1,i2+1,i3+1) - - r(i1,i2,i3) = v(i1,i2,i3) - & + 8.0D0/3.0D0 * u(i1,i2,i3) - & - 1.0D0/6.0D0 * ( - & u1_m1 + u1_p1 - & + u2_m1 + u2_p1 - & + u3_m1 + u3_p1 - & + u4 + u5 - & + u6_m1 + u6_p1 - & + u7 + u8 - & ) - & - 1.0D0/12.0D0 * ( - & u4_m1 + u4_p1 - & + u5_m1 + u5_p1 - & + u7_m1 + u7_p1 - & + u8_m1 + u8_p1 - & ) - u1_m1 = u1 - u1 = u1_p1 - - u2_m1 = u2 - u2 = u2_p1 - - u3_m1 = u3 - u3 = u3_p1 - - u4_m1 = u4 - u4 = u4_p1 - - u5_m1 = u5 - u5 = u5_p1 - - u6_m1 = u6 - u6 = u6_p1 - - u7_m1 = u7 - u7 = u7_p1 - - u8_m1 = u8 - u8 = u8_p1 - enddo - enddo - enddo -!DVM$ END REGION - endif -!DVM$ end interval -c--------------------------------------------------------------------- -c exchange boundary data -c--------------------------------------------------------------------- - call comm3(r,n1,n2,n3,k) - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/rjrp3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/rjrp3.fdv deleted file mode 100644 index 6b8170e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/rjrp3.fdv +++ /dev/null @@ -1,169 +0,0 @@ -c--------------------------------------------------------------------- -c Òðèëèíåéíàÿ ïðîåêöèÿ (îãðàíè÷åíèå) íåâÿçêè íà ãðóáóþ ñåòêó -c--------------------------------------------------------------------- -c r(H) = P r(h) -c ãäå H = 2h - øàã ðàçáèåíèÿ ñåòêè, -c P - ëèíåéíûé îïåðàòîð òðèëèíåéíîé ïðîåêöèè, -c r - íåâÿçêà -c--------------------------------------------------------------------- -c Èñïîëüçóåòñÿ äëÿ ïîñòðîåíèå ãðóáîé ñåòêè íåâÿçêè, ïðè âîñõîæäåíèè ïî V-öèêëó -c--------------------------------------------------------------------- -c @param double precission :: r(m1k,m2k,m3k) ? r(h) - ïîäðîáíàÿ ñåòêà -c @param double precission :: s(m1j,m2j,m3j) ? r(H) - ãðóáàÿ ñåòêà -c @param double precission :: d1, d2, d3 - ñìåùåíèå íà êðàåâûå óñëîâèÿ -c @param integer :: k - òåêóùèé øàã óêðóïíåíèÿ ðàçáèåíèÿ ïåðâîíà÷àëüíîé ñåòêè -c--------------------------------------------------------------------- - subroutine rprj3( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k, d1,d2,d3) -c--------------------------------------------------------------------- -!DVM$ INHERIT r,s -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c rprj3 projects onto the next coarser grid, -c using a trilinear Finite Element projection: s = r' = P r -c -c This implementation costs 20A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer m1k, m2k, m3k, m1j, m2j, m3j,k - double precision r(m1k,m2k,m3k), s(m1j,m2j,m3j) - integer j3, j2, j1, i3, i2, i1, d1, d2, d3, j - double precision r1_m1,r1_p1, r2_m1,r2_p1, r3_m1,r3_p1 - double precision r4_m1,r4_p1, r5_m1,r5_p1, r6_m1,r6_p1 - double precision r7_m1,r7_p1, r8_m1,r8_p1, r9_m1,r9_p1,y2,x2 - -!DVM$ interval 4 - if( ver ) then - -!DVM$ REGION -!DVM$ PARALLEL (j3,j2) ON s(*,j2,j3), SHADOW_RENEW(r(CORNER)), -!DVM$& cuda_block(32,6), PRIVATE(i1, i2, i3, j1, -!DVM$& r1_m1,r1_p1, r2_m1,r2_p1, r3_m1,r3_p1, r4_m1,r4_p1, r5_m1,r5_p1 -!DVM$&,r6_m1,r6_p1, r7_m1,r7_p1, r8_m1,r8_p1, r9_m1,r9_p1,y2,x2) - do j3=2,m3j-1 - do j2=2,m2j-1 - i3 = 2*j3-d3 - i2 = 2*j2-d2 - - r1_m1 = r(2*2-d1-1,i2+1,i3) - r2_m1 = r(2*2-d1-1,i2,i3+1) - r3_m1 = r(2*2-d1-1,i2+1,i3+1) - r4_m1 = r(2*2-d1-1,i2-1,i3) - r5_m1 = r(2*2-d1-1,i2,i3-1) - r6_m1 = r(2*2-d1-1,i2-1,i3-1) - r7_m1 = r(2*2-d1-1,i2,i3) - r8_m1 = r(2*2-d1-1,i2-1,i3+1) - r9_m1 = r(2*2-d1-1,i2+1,i3-1) - - do j1=2,m1j-1 - i1 = 2*j1-d1 - r1_p1 = r(i1+1,i2+1,i3) - r2_p1 = r(i1+1,i2,i3+1) - r3_p1 = r(i1+1,i2+1,i3+1) - r4_p1 = r(i1+1,i2-1,i3) - r5_p1 = r(i1+1,i2,i3-1) - r6_p1 = r(i1+1,i2-1,i3-1) - r7_p1 = r(i1+1,i2,i3) - r8_p1 = r(i1+1,i2-1,i3+1) - r9_p1 = r(i1+1,i2+1,i3-1) - - y2 = r(i1, i2-1,i3-1) + r(i1, i2-1,i3+1) - & + r(i1, i2+1,i3-1) + r(i1, i2+1,i3+1) - x2 = r(i1, i2-1,i3 ) + r(i1, i2+1,i3 ) - & + r(i1, i2, i3-1) + r(i1, i2, i3+1) - s(j1,j2,j3) = - & 0.5D0 * r(i1,i2,i3) - & + 0.25D0 * ( r7_m1 + r7_p1 + x2) - & + 0.125D0 * ( r4_m1 + r1_m1 + r5_m1 + r2_m1 + - & r4_p1 + r1_p1 + r5_p1 + r2_p1 + y2) - & + 0.0625D0 * ( r6_m1 + r8_m1 - & + r9_m1 + r3_m1 + r6_p1 + r8_p1 + r9_p1 + r3_p1) - r1_m1 = r1_p1 - r2_m1 = r2_p1 - r3_m1 = r3_p1 - r4_m1 = r4_p1 - r5_m1 = r5_p1 - r6_m1 = r6_p1 - r7_m1 = r7_p1 - r8_m1 = r8_p1 - r9_m1 = r9_p1 - enddo - enddo - enddo -!DVM$ END REGION - - else -!DVM$ REGION -!DVM$ PARALLEL (j3,j1) ON s(j1,*,j3), SHADOW_RENEW(r(CORNER)), -!DVM$& cuda_block(32,6), PRIVATE(i1, i2, i3, j2, -!DVM$& r1_m1,r1_p1, r2_m1,r2_p1, r3_m1,r3_p1, r4_m1,r4_p1, r5_m1,r5_p1 -!DVM$&,r6_m1,r6_p1, r7_m1,r7_p1, r8_m1,r8_p1, r9_m1,r9_p1) - do j3=2,m3j-1 - do j1=2,m1j-1 - i3 = 2*j3-d3 - i1 = 2*j1-d1 - - r1_m1 = r(i1,2*2-d2-1,i3) - r2_m1 = r(i1-1,2*2-d2-1,i3) - r3_m1 = r(i1+1,2*2-d2-1,i3) - r4_m1 = r(i1,2*2-d2-1,i3+1) - r5_m1 = r(i1,2*2-d2-1,i3-1) - r6_m1 = r(i1+1,2*2-d2-1,i3+1) - r7_m1 = r(i1+1,2*2-d2-1,i3-1) - r8_m1 = r(i1-1,2*2-d2-1,i3-1) - r9_m1 = r(i1-1,2*2-d2-1,i3+1) - do j2=2,m2j-1 - i2 = 2*j2-d2 - r1_p1 = r(i1,i2+1,i3) - r2_p1 = r(i1-1,i2+1,i3) - r3_p1 = r(i1+1,i2+1,i3) - r4_p1 = r(i1,i2+1,i3+1) - r5_p1 = r(i1,i2+1,i3-1) - r6_p1 = r(i1+1,i2+1,i3+1) - r7_p1 = r(i1+1,i2+1,i3-1) - r8_p1 = r(i1-1,i2+1,i3-1) - r9_p1 = r(i1-1,i2+1,i3+1) - s(j1,j2,j3) = - & 0.5D0 * r(i1,i2,i3) - & + 0.25D0 * ( r1_m1 + r1_p1 + - & r(i1-1,i2,i3) + r(i1+1,i2,i3) - & + r(i1,i2,i3-1) + r(i1,i2,i3+1)) - & + 0.125D0 * ( - & r2_m1 + r2_p1 + r3_m1 + r3_p1 - & + r5_m1 + r4_m1 - & + r5_p1 + r4_p1 - & + r(i1-1,i2, i3-1) + r(i1-1,i2, i3+1) - & + r(i1+1,i2, i3-1) + r(i1+1,i2, i3+1)) - & + 0.0625D0 * ( - & r8_m1 + r9_m1 - & + r8_p1 + r9_p1 - & + r7_m1 + r6_m1 - & + r7_p1 + r6_p1) - - r1_m1 = r1_p1 - r2_m1 = r2_p1 - r3_m1 = r3_p1 - r4_m1 = r4_p1 - r5_m1 = r5_p1 - r6_m1 = r6_p1 - r7_m1 = r7_p1 - r8_m1 = r8_p1 - r9_m1 = r9_p1 - enddo - - enddo - enddo -!DVM$ END REGION - endif -!DVM$ end interval - j = k-1 - call comm3(s,m1j,m2j,m3j,j) - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/setupDVM.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/setupDVM.fdv deleted file mode 100644 index 2b3a49c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/setupDVM.fdv +++ /dev/null @@ -1,226 +0,0 @@ - -c--------------------------------------------------------------------- -c Âûðàâíèâàíèå ìàññèâîâ äëÿ ñïóñêà ïî V-öèêëó -c @param integer d1, d2, d3 - ñìåùåíèå íà êðàåâûå óñëîâèÿ -c @param integer k - íîìåð ñåòêè -c--------------------------------------------------------------------- - subroutine dvmAlignDownCycle(d1, d2, d3, k) - - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer k - integer d1, d2, d3 - - integer t1, t2, t3 - -!DVM$ TEMPLATE EXT_V_DOWN (m1(k)+1, m2(k)+1, m3(k)+1) -!DVM$ DISTRIBUTE EXT_V_DOWN (BLOCK, BLOCK, BLOCK) - - t1 = d1 - 1; t2 = d2 - 1; t3 = d3 - 1; - -!DVM$ REALIGN p_curr_r_j(i,j,k) WITH EXT_V_DOWN(2*i-1, 2*j-1, 2*k-1) -!DVM$ REALIGN p_curr_r_k(i,j,k) WITH EXT_V_DOWN(i+t1, j+t2, k+t3) - - return - end - -c--------------------------------------------------------------------- -c Âûðàâíèâàíèå ìàññèâîâ äëÿ ïîäúåìà ïî V-öèêëó -c @param integer d1, d2, d3 - ñìåùåíèå íà êðàåâûå óñëîâèÿ -c @param integer k - íîìåð ñåòêè -c--------------------------------------------------------------------- - subroutine dvmAlignUpCycle(k) - - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer k - -!!DVM$ SHADOW p_curr_u_k(1:1,1:1,1:1) -!!DVM$ SHADOW p_curr_u_j(1:1,1:1,1:1) - -!DVM$ TEMPLATE EXT_V_UP (m1(k)+1, m2(k)+1, m3(k)+1) -!DVM$ DISTRIBUTE EXT_V_UP (BLOCK, BLOCK, BLOCK) - -!DVM$ REALIGN p_curr_u_j(i,j,k) WITH EXT_V_UP(2*i-1, 2*j-1, 2*k-1) -!DVM$ REALIGN p_curr_u_k(i,j,k) WITH EXT_V_UP(i, j, k) -!DVM$ REALIGN p_curr_r_k(i,j,k) WITH EXT_V_UP(i, j, k) - - return - end - -c--------------------------------------------------------------------- -c Èíèöèàëèçàöèÿ ïàðàìåòðîâ DVM -c @param integer isSecond - 1 ïðè ïîâòîðíîì âûçîâå -c--------------------------------------------------------------------- - subroutine setupDVM(isSecond) - implicit none - - include 'globals.h' - include 'dvmvars.h' - - integer allocate, k, j, isSecond - integer pdim(3) - integer d1, d2, d3 - -!DVM$ TEMPLATE EXT_BOTTOM (m1(lb), m2(lb), m3(lb)) -!DVM$ DISTRIBUTE EXT_BOTTOM (BLOCK, BLOCK, BLOCK) - -!DVM$ TEMPLATE EXT_LAST (m1(lt)+1, m2(lt)+1, m3(lt)+1) -!DVM$ DISTRIBUTE EXT_LAST (BLOCK, BLOCK, BLOCK) - - if (isSecond .eq. 0) then - ! Âûäåëÿåì ìàññèâ óêîçàòåëåé - do k = lt, 1, -1 - pdim =(/ m1(k), m2(k), m3(k) /) - p_u_ir(k) = allocate(pdim, ir(k)) - p_r_ir(k) = allocate(pdim, ir(k)) - enddo - - ! Âûäåëÿåì ïàìÿòü â êó÷å ïîä íåâÿçêó - pdim =(/ m1(lt), m2(lt), m3(lt) /) - pv = allocate(pdim, 1) - - ! Äîáàâëÿåì ñîêðàùåíèÿ - pu = p_u_ir(lt) - pr = p_r_ir(lt) - endif - - ! Âûðàâíèâàåì íà ñïóñê - p_curr_r_j = pr - do k= lt, lb+1 , -1 - j = k-1 - p_curr_r_k = p_curr_r_j - p_curr_r_j = p_r_ir(j) - - if(m1(k).eq.3)then; d1 = 2; else; d1 = 1; endif - if(m2(k).eq.3)then; d2 = 2; else; d2 = 1; endif - if(m3(k).eq.3)then; d3 = 2; else; d3 = 1; endif - - call dvmAlignDownCycle(d1, d2, d3, k) - enddo - - ! Âûðàâíèâàåì äíî - k = lb - p_curr_u_k = p_u_ir(k) - p_curr_r_k = p_r_ir(k) -!DVM$ REALIGN (i, j, k) WITH EXT_BOTTOM(i,j,k) :: p_curr_u_k -!DVM$ REALIGN (i, j, k) WITH EXT_BOTTOM(i,j,k) :: p_curr_r_k - - ! Âûðàâíèâàåì ïîäúåì - do k = lb+1, lt-1 - j = k-1 - - p_curr_u_j = p_curr_u_k - p_curr_u_k = p_u_ir(k) - p_curr_r_k = p_r_ir(k) - - call dvmAlignUpCycle(k) - enddo - - ! Âûðàâíèâàåì ïîñëåäíþþ èòåðàöèþ - j = lt - 1 - k = lt - - p_curr_u_j = p_u_ir(j) - -!DVM$ REALIGN p_curr_u_j(i,j,k) WITH EXT_LAST(2*i-1, 2*j-1, 2*k-1) -!DVM$ REALIGN pu(i,j,k) WITH EXT_LAST(i, j, k) -!DVM$ REALIGN pr(i,j,k) WITH EXT_LAST(i, j, k) -!DVM$ REALIGN pv(i,j,k) WITH EXT_LAST(i, j, k) - - end subroutine setupDVM - - -c--------------------------------------------------------------------- -c Çàãëóøêà äëÿ DVM -c--------------------------------------------------------------------- - function allocate(dims, disp) - integer allocate - allocate = disp - return - end function allocate - -c--------------------------------------------------------------------- -c Èíèöèàëèçàöèÿ ïàðàìåòðîâ ïðîãðàììû -c--------------------------------------------------------------------- - subroutine setup(n1,n2,n3,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - include 'globals.h' - - integer is1, is2, is3, ie1, ie2, ie3 - common /grid/ is1,is2,is3,ie1,ie2,ie3 - - integer n1,n2,n3,k - integer j - - integer ax, mi(3,maxlevel) - integer ng(3,maxlevel) - - ng(1,lt) = nx(lt) - ng(2,lt) = ny(lt) - ng(3,lt) = nz(lt) - do ax=1,3 - do k=lt-1,1,-1 - ng(ax,k) = ng(ax,k+1)/2 - enddo - enddo - 61 format(10i4) - do k=lt,1,-1 - nx(k) = ng(1,k) - ny(k) = ng(2,k) - nz(k) = ng(3,k) - enddo - - do k = lt,1,-1 - do ax = 1,3 - mi(ax,k) = 2 + ng(ax,k) - enddo - - m1(k) = mi(1,k) - m2(k) = mi(2,k) - m3(k) = mi(3,k) - - enddo - - k = lt - is1 = 2 + ng(1,k) - ng(1,lt) - ie1 = 1 + ng(1,k) - n1 = 3 + ie1 - is1 - is2 = 2 + ng(2,k) - ng(2,lt) - ie2 = 1 + ng(2,k) - n2 = 3 + ie2 - is2 - is3 = 2 + ng(3,k) - ng(3,lt) - ie3 = 1 + ng(3,k) - n3 = 3 + ie3 - is3 - - - ir(lt)=1 - do j = lt-1, 1, -1 - ir(j)=ir(j+1)+one*m1(j+1)*m2(j+1)*m3(j+1) - enddo - - if( debug_vec(1) .ge. 1 )then - write(*,*)' in setup, ' - write(*,*)' k lt nx ny nz ', - & ' n1 n2 n3 is1 is2 is3 ie1 ie2 ie3' - write(*,9) k,lt,ng(1,k),ng(2,k),ng(3,k), - & n1,n2,n3,is1,is2,is3,ie1,ie2,ie3 - 9 format(15i4) - endif - - k = lt - - return - end - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/utilities.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/utilities.fdv deleted file mode 100644 index 25056c7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/utilities.fdv +++ /dev/null @@ -1,415 +0,0 @@ -c--------------------------------------------------------------------- -c Çàïîëíåíèå òðåõìåðíîé ìàòðèöè íóëÿìè -c--------------------------------------------------------------------- -c @param double precission :: z(n1 ,n2 ,n3) - íåêîòîðàÿ ìàòðèöà -c--------------------------------------------------------------------- - subroutine zero3(z,n1,n2,n3) -c--------------------------------------------------------------------- -!DVM$ INHERIT z -c--------------------------------------------------------------------- - - implicit none - - integer n1, n2, n3 - double precision z(n1,n2,n3) - integer i1, i2, i3 - -!!DVM$ INTERVAL 3 -!DVM$ REGION -!DVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3), PRIVATE(i3,i2,i1) -!DVM$&, cuda_block(32,6) - do i3=1,n3 - do i2=1,n2 - do i1=1,n1 - z(i1,i2,i3)=0.0D0 - enddo - enddo - enddo -!DVM$ END REGION -!!DVM$ END INTERVAL - - return - end - - -c----- end of program ------------------------------------------------ - -c -- DEBUG -------------------------------------------------------- - - subroutine printMatrix(a,n1,n2,n3) -c--------------------------------------------------------------------- -!DVM$ INHERIT a - integer n1,n2,n3,i1,i2,i3 - double precision a(n1,n2,n3), z(n2) - integer m1, m2, m3 - - write(*,*) 'MATRIX ------------------' - write(*,*) a - write(*,*) ' ' -! m1 = min(n1,18) -! m2 = min(n2,14) -! m3 = min(n3,18) - -! write(*,*)' ' -! do i3=1,m3 -! do i1=1,m1 -! do i2=1,m2 -! z(i2) = a(i1,i2,i3) -! enddo -! write(*,6)(z(i2),i2=1,m2) -! enddo -! write(*,*)' - - - - - - - ' -! enddo -! write(*,*)' ' -! 6 format(15f6.3) - - return - end - - subroutine printMatrixNN(a,n1,n2,n3) -c--------------------------------------------------------------------- -!DVM$ INHERIT a - integer n1, n2, n3 - double precision a(n1,n2,n3), z - - do i3=1,n3 - do i2=1,n2 - do i1=1,n1 - z = a(i1,i2,i3) - if (z.ne.0) then - write(*,*) '(',i1,',',i2,',',i3,')=',z - endif - enddo - enddo - enddo - - end - - -c -- EXTERNAL -------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - return - end - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - return - end - - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none - - double precision t - double precision dvtime - - data t/0.d0/ -c This function must measure wall clock time, not CPU time. -c Since there is no portable timer in Fortran (77) -c we call a routine compiled in C (though the C source may have -c to be tweaked). - t = dvtime() -c The following is not ok for "official" results because it reports -c CPU time not wall clock time. It may be useful for developing/testing -c on timeshared Crays, though. -c call second(t) - - elapsed_time = t - - return - end - - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion) -c ,compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character*2 name - character*1 class - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*13 - logical verified - character*5 npbversion -c > , compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7 - - write (*, 2) name - 2 format(//, ' ', A2, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f12.0)' ) 2.d0**n1 - do j =13,1,-1 - if (size(j:j) .eq. '.') size(j:j) = ' ' - end do - write (*,42) size - 42 format(' Size = ',12x, a14) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',12x, i3,'x',i3,'x',i3) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - -c write(*,14) compiletime -c 14 format(' Compile date = ', 12x, a12) - - -c write (*,121) cs1 -c 121 format(/, ' Compile options:', /, -c > ' F77 = ', A) - -c write (*,122) cs2 -c 122 format(' FLINK = ', A) - -c write (*,123) cs3 -c 123 format(' F_LIB = ', A) -c -c write (*,124) cs4 -c 124 format(' F_INC = ', A) -c -c write (*,125) cs5 -c 125 format(' FFLAGS = ', A) -c -c write (*,126) cs6 -c 126 format(' FLINKFLAGS = ', A) -c -c write(*, 127) cs7 -c 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send the results of this run to:'// - > ' NPB Development Team '/ - > ' Internet: npb@nas.nasa.gov'/ - > ' '/ - > ' If email is not available, send this to:'// - > ' MS T27A-1'/ - > ' NASA Ames Research Center'/ - > ' Moffett Field, CA 94035-1000'// - > ' Fax: 415-604-3957'//) - - - return - end - - - double precision function randlc (x, a) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine returns a uniform pseudorandom double precision number in the -c range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The returned value RANDLC is normalized to be -c between 0 and 1, i.e. RANDLC = 2^(-46) * x_1. X is updated to contain -c the new seed x_1, so that subsequent calls to RANDLC using the same -c arguments will generate a continuous sequence. -c -c This routine should produce the same results on any computer with at least -c 48 mantissa bits in double precision floating point data. On 64 bit -c systems, double precision should be disabled. -c -c David H. Bailey October 26, 1990 -c -c--------------------------------------------------------------------- - - implicit none - - double precision r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - randlc = r46 * x - - return - end - - subroutine vranlc (n, x, a, y) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine generates N uniform pseudorandom double precision numbers in -c the range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The N results are placed in Y and are normalized -c to be between 0 and 1. X is updated to contain the new seed, so that -c subsequent calls to VRANLC using the same arguments will generate a -c continuous sequence. If N is zero, only initialization is performed, and -c the variables X, A and Y are ignored. -c -c This routine is the standard version designed for scalar or RISC systems. -c However, it should produce the same results on any single processor -c computer with at least 48 mantissa bits in double precision floating point -c data. On 64 bit systems, double precision should be disabled. -c -c--------------------------------------------------------------------- - - implicit none - - integer i,n - double precision y,r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - dimension y(*) - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Generate N results. This loop is not vectorizable. -c--------------------------------------------------------------------- - do i = 1, n - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - y(i) = r46 * x - enddo - return - end -c--------------------------------------------------------------------- \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/zran3.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/zran3.fdv deleted file mode 100644 index 8311672..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG/zran3.fdv +++ /dev/null @@ -1,431 +0,0 @@ - -c--------------------------------------------------------------------- -c Çàïîëíåíèå òðåõìåðíîé ìàòðèöè ïñåâäî-ñëó÷àéíûìè ÷èñëàìè -c--------------------------------------------------------------------- -c @param double precission :: z(n1 ,n2 ,n3) - íåêîòîðàÿ ìàòðèöà -c @param integer :: k - ôèêòèâíûé ïàðàìåòð -c--------------------------------------------------------------------- - subroutine zran3(z,n1,n2,n3,nx,ny,k,class) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c zran3 loads +1 at ten randomly chosen points, -c loads -1 at a different ten random points, -c and zero elsewhere. -c--------------------------------------------------------------------- - implicit none - include 'npbparams.h' -!DVM$ INHERIT z -!DVM$ DYNAMIC z - integer is1, is2, is3, ie1, ie2, ie3,i3b,i3e,i2b,i1b - common /grid/ is1,is2,is3,ie1,ie2,ie3 - - integer n1, n2, n3, k, nx, ny, ierr, i0, m0, m1 - double precision z(n1,n2,n3),zz(2+2**ndim1) - - character*1 class - integer mm, i1, i2, i3, d1, e1, e2, e3,ii2,ii1 - double precision x, a, max_val, min_val - double precision xx, x0, x1, a1, a2, ai - parameter( mm = 10, a = 5.D0 ** 13, x = 314159265.D0) - double precision ten( mm, 0:1 ), temp, best - integer i, j1( mm, 0:1 ), j2( mm, 0:1 ), j3( mm, 0:1 ) - integer jg( 0:3, mm, 0:1 ), jg_temp(4) - integer id1,id2,id3,idx1,idx2,idx3,nj,x22 - - call zero3(z,n1,n2,n3) - - if(Class .eq. 'S') then - j1( 10,1)= 9 - j1( 10,0)= 2 - j2( 10,1)= 3 - j2( 10,0)= 13 - j3( 10,1)= 22 - j3( 10,0)= 4 - ten( 10,1)= 0.9999958165E+00 - ten( 10,0)= 0.1621806298E-04 - j1( 9,1)= 21 - j1( 9,0)= 15 - j2( 9,1)= 31 - j2( 9,0)= 10 - j3( 9,1)= 33 - j3( 9,0)= 19 - ten( 9,1)= 0.9999389618E+00 - ten( 9,0)= 0.7495597642E-04 - j1( 8,1)= 4 - j1( 8,0)= 7 - j2( 8,1)= 2 - j2( 8,0)= 16 - j3( 8,1)= 5 - j3( 8,0)= 2 - ten( 8,1)= 0.9999174510E+00 - ten( 8,0)= 0.1889568795E-03 - j1( 7,1)= 6 - j1( 7,0)= 6 - j2( 7,1)= 24 - j2( 7,0)= 30 - j3( 7,1)= 5 - j3( 7,0)= 17 - ten( 7,1)= 0.9998666211E+00 - ten( 7,0)= 0.1958622020E-03 - j1( 6,1)= 3 - j1( 6,0)= 14 - j2( 6,1)= 18 - j2( 6,0)= 4 - j3( 6,1)= 23 - j3( 6,0)= 3 - ten( 6,1)= 0.9998273669E+00 - ten( 6,0)= 0.2522906835E-03 - j1( 5,1)= 23 - j1( 5,0)= 7 - j2( 5,1)= 33 - j2( 5,0)= 19 - j3( 5,1)= 8 - j3( 5,0)= 10 - ten( 5,1)= 0.9997817402E+00 - ten( 5,0)= 0.2966875037E-03 - j1( 4,1)= 14 - j1( 4,0)= 22 - j2( 4,1)= 17 - j2( 4,0)= 21 - j3( 4,1)= 14 - j3( 4,0)= 13 - ten( 4,1)= 0.9997789044E+00 - ten( 4,0)= 0.3082809722E-03 - j1( 3,1)= 32 - j1( 3,0)= 28 - j2( 3,1)= 6 - j2( 3,0)= 17 - j3( 3,1)= 27 - j3( 3,0)= 33 - ten( 3,1)= 0.9997405518E+00 - ten( 3,0)= 0.3944731504E-03 - j1( 2,1)= 30 - j1( 2,0)= 10 - j2( 2,1)= 2 - j2( 2,0)= 27 - j3( 2,1)= 30 - j3( 2,0)= 24 - ten( 2,1)= 0.9997394292E+00 - ten( 2,0)= 0.4423527428E-03 - j1( 1,1)= 19 - j1( 1,0)= 9 - j2( 1,1)= 28 - j2( 1,0)= 16 - j3( 1,1)= 19 - j3( 1,0)= 28 - ten( 1,1)= 0.9996874580E+00 - ten( 1,0)= 0.4726676489E-03 - else if(class .eq. 'W') then - j1( 10,1)= 115 - j1( 10,0)= 17 - j2( 10,1)= 87 - j2( 10,0)= 24 - j3( 10,1)= 52 - j3( 10,0)= 125 - ten( 10,1)= 0.9999999670E+00 - ten( 10,0)= 0.4097578454E-06 - j1( 9,1)= 129 - j1( 9,0)= 104 - j2( 9,1)= 47 - j2( 9,0)= 119 - j3( 9,1)= 34 - j3( 9,0)= 61 - ten( 9,1)= 0.9999996061E+00 - ten( 9,0)= 0.9408003763E-06 - j1( 8,1)= 16 - j1( 8,0)= 16 - j2( 8,1)= 112 - j2( 8,0)= 123 - j3( 8,1)= 120 - j3( 8,0)= 77 - ten( 8,1)= 0.9999987379E+00 - ten( 8,0)= 0.1220169409E-05 - j1( 7,1)= 36 - j1( 7,0)= 111 - j2( 7,1)= 23 - j2( 7,0)= 89 - j3( 7,1)= 102 - j3( 7,0)= 123 - ten( 7,1)= 0.9999973226E+00 - ten( 7,0)= 0.1432884929E-05 - j1( 6,1)= 31 - j1( 6,0)= 11 - j2( 6,1)= 19 - j2( 6,0)= 3 - j3( 6,1)= 111 - j3( 6,0)= 23 - ten( 6,1)= 0.9999970764E+00 - ten( 6,0)= 0.1917141063E-05 - j1( 5,1)= 29 - j1( 5,0)= 97 - j2( 5,1)= 50 - j2( 5,0)= 36 - j3( 5,1)= 13 - j3( 5,0)= 56 - ten( 5,1)= 0.9999968171E+00 - ten( 5,0)= 0.2780729588E-05 - j1( 4,1)= 82 - j1( 4,0)= 40 - j2( 4,1)= 92 - j2( 4,0)= 128 - j3( 4,1)= 22 - j3( 4,0)= 14 - ten( 4,1)= 0.9999964096E+00 - ten( 4,0)= 0.3077687282E-05 - j1( 3,1)= 28 - j1( 3,0)= 94 - j2( 3,1)= 86 - j2( 3,0)= 85 - j3( 3,1)= 75 - j3( 3,0)= 37 - ten( 3,1)= 0.9999960890E+00 - ten( 3,0)= 0.3419091698E-05 - j1( 2,1)= 41 - j1( 2,0)= 72 - j2( 2,1)= 34 - j2( 2,0)= 4 - j3( 2,1)= 3 - j3( 2,0)= 66 - ten( 2,1)= 0.9999958165E+00 - ten( 2,0)= 0.3899679498E-05 - j1( 1,1)= 117 - j1( 1,0)= 116 - j2( 1,1)= 88 - j2( 1,0)= 105 - j3( 1,1)= 22 - j3( 1,0)= 7 - ten( 1,1)= 0.9999953932E+00 - ten( 1,0)= 0.4564590384E-05 - else if(class .eq. 'A' .or. class .eq. 'B') then - j1( 10,1)= 54 - j1( 10,0)= 223 - j2( 10,1)= 209 - j2( 10,0)= 42 - j3( 10,1)= 40 - j3( 10,0)= 240 - ten( 10,1)= 0.9999999811E+00 - ten( 10,0)= 0.1058528198E-07 - j1( 9,1)= 243 - j1( 9,0)= 154 - j2( 9,1)= 172 - j2( 9,0)= 162 - j3( 9,1)= 14 - j3( 9,0)= 36 - ten( 9,1)= 0.9999999670E+00 - ten( 9,0)= 0.6491002580E-07 - j1( 8,1)= 203 - j1( 8,0)= 82 - j2( 8,1)= 18 - j2( 8,0)= 184 - j3( 8,1)= 198 - j3( 8,0)= 255 - ten( 8,1)= 0.9999999092E+00 - ten( 8,0)= 0.1261776816E-06 - j1( 7,1)= 202 - j1( 7,0)= 250 - j2( 7,1)= 83 - j2( 7,0)= 170 - j3( 7,1)= 209 - j3( 7,0)= 157 - ten( 7,1)= 0.9999999006E+00 - ten( 7,0)= 0.2087648028E-06 - j1( 6,1)= 115 - j1( 6,0)= 199 - j2( 6,1)= 123 - j2( 6,0)= 7 - j3( 6,1)= 207 - j3( 6,0)= 203 - ten( 6,1)= 0.9999998605E+00 - ten( 6,0)= 0.3218575699E-06 - j1( 5,1)= 212 - j1( 5,0)= 92 - j2( 5,1)= 7 - j2( 5,0)= 63 - j3( 5,1)= 248 - j3( 5,0)= 205 - ten( 5,1)= 0.9999998070E+00 - ten( 5,0)= 0.3231413785E-06 - j1( 4,1)= 45 - j1( 4,0)= 17 - j2( 4,1)= 194 - j2( 4,0)= 205 - j3( 4,1)= 234 - j3( 4,0)= 32 - ten( 4,1)= 0.9999997641E+00 - ten( 4,0)= 0.4097578454E-06 - j1( 3,1)= 176 - j1( 3,0)= 101 - j2( 3,1)= 246 - j2( 3,0)= 156 - j3( 3,1)= 164 - j3( 3,0)= 59 - ten( 3,1)= 0.9999997464E+00 - ten( 3,0)= 0.4272763050E-06 - j1( 2,1)= 5 - j1( 2,0)= 102 - j2( 2,1)= 118 - j2( 2,0)= 138 - j3( 2,1)= 175 - j3( 2,0)= 112 - ten( 2,1)= 0.9999997340E+00 - ten( 2,0)= 0.4331109977E-06 - j1( 1,1)= 57 - j1( 1,0)= 211 - j2( 1,1)= 120 - j2( 1,0)= 154 - j3( 1,1)= 167 - j3( 1,0)= 98 - ten( 1,1)= 0.9999996868E+00 - ten( 1,0)= 0.4353645551E-06 - else if(class .eq. 'C') then - j1( 10,1)= 310 - j1( 10,0)= 399 - j2( 10,1)= 361 - j2( 10,0)= 312 - j3( 10,1)= 11 - j3( 10,0)= 200 - ten( 10,1)= 0.9999999811E+00 - ten( 10,0)= 0.6358860105E-08 - j1( 9,1)= 11 - j1( 9,0)= 96 - j2( 9,1)= 493 - j2( 9,0)= 401 - j3( 9,1)= 118 - j3( 9,0)= 238 - ten( 9,1)= 0.9999999808E+00 - ten( 9,0)= 0.7946667324E-08 - j1( 8,1)= 451 - j1( 8,0)= 223 - j2( 8,1)= 270 - j2( 8,0)= 278 - j3( 8,1)= 443 - j3( 8,0)= 61 - ten( 8,1)= 0.9999999778E+00 - ten( 8,0)= 0.1058528198E-07 - j1( 7,1)= 149 - j1( 7,0)= 344 - j2( 7,1)= 117 - j2( 7,0)= 139 - j3( 7,1)= 199 - j3( 7,0)= 168 - ten( 7,1)= 0.9999999700E+00 - ten( 7,0)= 0.2456904724E-07 - j1( 6,1)= 243 - j1( 6,0)= 383 - j2( 6,1)= 87 - j2( 6,0)= 74 - j3( 6,1)= 5 - j3( 6,0)= 283 - ten( 6,1)= 0.9999999670E+00 - ten( 6,0)= 0.2954460854E-07 - j1( 5,1)= 509 - j1( 5,0)= 352 - j2( 5,1)= 43 - j2( 5,0)= 194 - j3( 5,1)= 127 - j3( 5,0)= 418 - ten( 5,1)= 0.9999999666E+00 - ten( 5,0)= 0.4643648310E-07 - j1( 4,1)= 163 - j1( 4,0)= 18 - j2( 4,1)= 280 - j2( 4,0)= 21 - j3( 4,1)= 75 - j3( 4,0)= 457 - ten( 4,1)= 0.9999999358E+00 - ten( 4,0)= 0.4987107616E-07 - j1( 3,1)= 146 - j1( 3,0)= 154 - j2( 3,1)= 93 - j2( 3,0)= 338 - j3( 3,1)= 312 - j3( 3,0)= 10 - ten( 3,1)= 0.9999999149E+00 - ten( 3,0)= 0.6491002580E-07 - j1( 2,1)= 203 - j1( 2,0)= 402 - j2( 2,1)= 10 - j2( 2,0)= 504 - j3( 2,1)= 51 - j3( 2,0)= 449 - ten( 2,1)= 0.9999999092E+00 - ten( 2,0)= 0.6990178747E-07 - j1( 1,1)= 151 - j1( 1,0)= 74 - j2( 1,1)= 401 - j2( 1,0)= 2 - j3( 1,1)= 331 - j3( 1,0)= 107 - ten( 1,1)= 0.9999999069E+00 - ten( 1,0)= 0.8774652827E-07 - endif - - i1 = mm - i0 = mm - do i=mm,1,-1 - - best = 0.d0 - if(best .lt. ten( i1, 1 ))then - jg( 0, i, 1) = 0 - jg( 1, i, 1) = is1 - 2 + j1( i1, 1 ) - jg( 2, i, 1) = is2 - 2 + j2( i1, 1 ) - jg( 3, i, 1) = is3 - 2 + j3( i1, 1 ) - i1 = i1-1 - else - jg( 0, i, 1) = 0 - jg( 1, i, 1) = 0 - jg( 2, i, 1) = 0 - jg( 3, i, 1) = 0 - endif - - best = 1.d0 - if(best .gt. ten( i0, 0 ))then - jg( 0, i, 0) = 0 - jg( 1, i, 0) = is1 - 2 + j1( i0, 0 ) - jg( 2, i, 0) = is2 - 2 + j2( i0, 0 ) - jg( 3, i, 0) = is3 - 2 + j3( i0, 0 ) - i0 = i0-1 - else - jg( 0, i, 0) = 0 - jg( 1, i, 0) = 0 - jg( 2, i, 0) = 0 - jg( 3, i, 0) = 0 - endif - - enddo - -!DVM$ region -!DVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3), private(i),cuda_block(32,6) - do i3=1,n3 - do i2=1,n2 - do i1=1,n1 - z(i1,i2,i3) = 0.0D0 - do i = mm,1,-1 - if(i1 .eq. jg(1,i,0) .and. i2 .eq. jg(2,i,0) - & .and. i3 .eq. jg(3,i,0)) then - z(i1,i2,i3) = -1.0D0 - endif - if(i1 .eq. jg(1,i,1) .and. i2 .eq. jg(2,i,1) - & .and. i3 .eq. jg(3,i,1)) then - z(i1,i2,i3) = 1.0D0 - endif - enddo - enddo - enddo - enddo - -!DVM$ end region - - - call comm3(z,n1,n2,n3,k) - -c--------------------------------------------------------------------- -c call showall(z,n1,n2,n3) -c--------------------------------------------------------------------- - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dtime.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dtime.h deleted file mode 100644 index eabcb83..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dtime.h +++ /dev/null @@ -1,4 +0,0 @@ - integer dvm_debug -C dvm_debug = 0 - standard mode, dvm_debug > 0 - debugging mode - parameter (dvm_debug=0) - \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dvmvar.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dvmvar.h deleted file mode 100644 index 77d0fbe..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/dvmvar.h +++ /dev/null @@ -1,21 +0,0 @@ -c--------------------------------------------------------------------- -c FDVM specifications -c--------------------------------------------------------------------- -!! integer pv,pv1,pu1,pr1,pu(maxlevel),pr(maxlevel),pus,pus1 - integer psize(3),pdim - common /pointers/ pv,pu1,pr1,pu,pr,pv1,pus,pus1 - common/processors/ psize,pdim - DOUBLE PRECISION,POINTER,DIMENSION(:,:,:) :: - & pv,pu1,pr1,pv1,pus,pus1 -!! DOUBLE PRECISION,POINTER,DIMENSION(:,:,:) :: -!! & pu(maxlevel),pr(maxlevel) -CDVM$ TEMPLATE tmp (1+2**(lt+1),1+2**(lt+1),1+2**(lt+1)) -CDVM$ DISTRIBUTE tmp (*,*,BLOCK) -CDVM$ ALIGN :: pr1,pv,pu1,pus,pus1 -CDVM$ DYNAMIC pv,tmp,pus,pus1,pu1,pr1 - TYPE P - DOUBLE PRECISION,POINTER,DIMENSION(:,:,:) :: p -CDVM$ ALIGN :: p -CDVM$ DYNAMIC p - END TYPE - TYPE(P) pu(maxlevel),pr(maxlevel) diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/globals.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/globals.h deleted file mode 100644 index 1816894..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/globals.h +++ /dev/null @@ -1,52 +0,0 @@ -c--------------------------------------------------------------------- -c Parameter lm (declared and set in "npbparams.h") is the log-base2 of -c the edge size max for the partition on a given node, so must be changed -c either to save space (if running a small case) or made bigger for larger -c cases, for example, 512^3. Thus lm=7 means that the largest dimension -c of a partition that can be solved on a node is 2^7 = 128. lm is set -c automatically in npbparams.h -c Parameters ndim1, ndim2, ndim3 are the local problem dimensions. -c--------------------------------------------------------------------- - - include 'npbparams.h' -! nm - actual dimension including ghost cells for communications -! nv - size of rhs array -! nr - size of residual array -! nm2 - size of communication buffer -! maxlevel- maximum number of levels - integer nm - > , nv - > , nr - > , nm2 - > , maxlevel - - parameter( nm=2+2**lm, nv=(2+2**ndim1)*(2+2**ndim2)*(2+2**ndim3) ) - parameter( nm2=2*nm*nm, maxlevel=11 ) - parameter( nr = (8*(nv+nm**2+5*nm+7*lm))/7 ) -c--------------------------------------------------------------------- - integer nx(maxlevel),ny(maxlevel),nz(maxlevel) - common /mg3/ nx,ny,nz - - character class - common /ClassType/class - - integer debug_vec(0:7) - common /my_debug/ debug_vec - - integer ir(maxlevel), m1(maxlevel), m2(maxlevel), m3(maxlevel) - integer lt, lb, mi(3,maxlevel),nreq,lbdvm - common /fap/ ir,m1,m2,m3,lt,lb,mi,nreq,lbdvm - logical proc1 - parameter (proc1 = .TRUE.) -c--------------------------------------------------------------------- -c Set at m=1024, can handle cases up to 1024^3 case -c--------------------------------------------------------------------- - integer m - parameter( m=1037 ) - - double precision buff(nm2,4) - common /buffer/ buff - - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/mgdv3al.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/mgdv3al.fdv deleted file mode 100644 index 33ae884..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/MG_DVM/mgdv3al.fdv +++ /dev/null @@ -1,2564 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 2.3 ! -! ! -! D V M V E R S I O N S ! -! ! -! M G ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is DVM version of the NPB MG code. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 2.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 2.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/NAS/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! Send bug reports to npb-bugs@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (415) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - - -c--------------------------------------------------------------------- -c -c Authors: E. Barszcz -c P. Frederickson -c A. Woo -c M. Yarrow -c -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- - program mgdv3 -c--------------------------------------------------------------------- - - implicit none - - include 'globals.h' - -c---------------------------------------------------------------------------c -c k is the current level. It is passed down through subroutine args -c and is NOT global. it is the current iteration -c---------------------------------------------------------------------------c - - integer k, it - - external timer_read - double precision t, tinit, mflops, timer_read - -c---------------------------------------------------------------------------c -c These arrays are in common because they are quite large -c and probably shouldn't be allocated on the stack. They -c are always passed as subroutine args. -c---------------------------------------------------------------------------c - -!! double precision u(nr),v(nv),r(nr) - double precision a(0:3),c(0:3) -!! common /noautom/ u,v,r -!!CDVM$ HEAP u,v,r - double precision rnm2, rnmu, old2, oldu, epsilon - integer n1, n2, n3, nn, nit - double precision verify_value - logical verified - - integer ierr,i, fstatus - integer T_bench, T_init - parameter (T_bench=1, T_init=2) -c---------------------------------------------------------------------------c - include 'dvmvar.h' -c---------------------------------------------------------------------------c - - call timer_clear(T_bench) - call timer_clear(T_init) - - - call timer_start(T_init) - - -c--------------------------------------------------------------------- -c Read in and broadcast input data -c--------------------------------------------------------------------- - - write (*, 1000) - - open(unit=7,file='mg.input', status='old', iostat=fstatus) - if (fstatus .eq. 0) then - write(*,50) - 50 format(' Reading from input file mg.input') - read(7,*) lt - read(7,*) nx(lt), ny(lt), nz(lt) - read(7,*) nit - read(7,*) (debug_vec(i),i=0,7) - else - write(*,51) - 51 format(' No input file. Using compiled defaults ') - lt = lt_default - nit = nit_default - nx(lt) = nx_default - ny(lt) = ny_default - nz(lt) = nz_default - do i = 0,7 - debug_vec(i) = debug_default - end do - endif - - - if ( (nx(lt) .ne. ny(lt)) .or. (nx(lt) .ne. nz(lt)) ) then - Class = 'U' - else if( nx(lt) .eq. 32 .and. nit .eq. 4 ) then - Class = 'S' - else if( nx(lt) .eq. 64 .and. nit .eq. 40 ) then - Class = 'W' - else if( nx(lt) .eq. 256 .and. nit .eq. 20 ) then - Class = 'B' - else if( nx(lt) .eq. 512 .and. nit .eq. 20 ) then - Class = 'C' - else if( nx(lt) .eq. 256 .and. nit .eq. 4 ) then - Class = 'A' - else - Class = 'U' - endif - -c--------------------------------------------------------------------- -c Use these for debug info: -c--------------------------------------------------------------------- -c debug_vec(0) = 1 !=> report all norms -c debug_vec(1) = 1 !=> some setup information -c debug_vec(1) = 2 !=> more setup information -c debug_vec(2) = k => at level k or below, show result of resid -c debug_vec(3) = k => at level k or below, show result of psinv -c debug_vec(4) = k => at level k or below, show result of rprj -c debug_vec(5) = k => at level k or below, show result of interp -c debug_vec(6) = 1 => (unused) -c debug_vec(7) = 1 => (unused) -c--------------------------------------------------------------------- - a(0) = -8.0D0/3.0D0 - a(1) = 0.0D0 - a(2) = 1.0D0/6.0D0 - a(3) = 1.0D0/12.0D0 - - if(Class .eq. 'A' .or. Class .eq. 'S'.or. Class .eq.'W') then -c--------------------------------------------------------------------- -c Coefficients for the S(a) smoother -c--------------------------------------------------------------------- - c(0) = -3.0D0/8.0D0 - c(1) = +1.0D0/32.0D0 - c(2) = -1.0D0/64.0D0 - c(3) = 0.0D0 - else -c--------------------------------------------------------------------- -c Coefficients for the S(b) smoother -c--------------------------------------------------------------------- - c(0) = -3.0D0/17.0D0 - c(1) = +1.0D0/33.0D0 - c(2) = -1.0D0/61.0D0 - c(3) = 0.0D0 - endif - lb = 1 - k = lt - - call setup(n1,n2,n3,k) - call setdvm() - - call zero3(pu(lt)%p,n1,n2,n3) - - call zran3(pv,n1,n2,n3,nx(lt),ny(lt),k) - - call norm2u3(pv,n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) -c write(*,*) -c write(*,*)' norms of random v are' -c write(*,600) 0, rnm2, rnmu -c write(*,*)' about to evaluate resid, k=',k - - write (*, 1001) nx(lt),ny(lt),nz(lt), Class - write (*, 1002) nit - - 1000 format(//,' NAS Parallel Benchmarks 2.3- DVM version', - > ' - MG Benchmark', /) - 1001 format(' Size: ', i3, 'x', i3, 'x', i3, ' (class ', A, ')' ) - 1002 format(' Iterations: ', i3) - - - if(psize(1).ne.1) then - call resid(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - else - call residd2(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - endif - call norm2u3(pr(lt)%p,n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) - old2 = rnm2 - oldu = rnmu - -c--------------------------------------------------------------------- -c One iteration for startup -c--------------------------------------------------------------------- - call mg3P(a,c,n1,n2,n3,k) - - if(psize(1).ne.1) then - call resid(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - else - call residd2(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - endif - - -C call setup(n1,n2,n3,k) - call zero3(pu(lt)%p,n1,n2,n3) - - call zran3(pv,n1,n2,n3,nx(lt),ny(lt),k) - - call timer_stop(T_init) - call timer_start(T_bench) - -CDVM$ INTERVAL 1 - - if(psize(1).ne.1) then - call resid(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - else - call residd2(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - endif - call norm2u3(pr(lt)%p,n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) - old2 = rnm2 - oldu = rnmu - - do it=1,nit - call mg3P(a,c,n1,n2,n3,k) - - if(psize(1).ne.1) then - call resid(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - else - call residd2(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - endif - - enddo - call norm2u3(pr(lt)%p,n1,n2,n3,rnm2,rnmu,nx(lt),ny(lt),nz(lt)) -CDVM$ END INTERVAL - call timer_stop(T_bench) - t = timer_read(T_bench) - tinit = timer_read(T_init) - verified = .FALSE. - verify_value = 0.0 - - write( *,'(/A,F15.3,A/)' ) - > ' Initialization time: ',tinit, ' seconds' - write(*,100) - 100 format(' Benchmark completed ') - - epsilon = 1.d-8 - if (Class .ne. 'U') then - if(Class.eq.'S') then - verify_value = 0.530770700573d-04 - elseif(Class.eq.'W') then - verify_value = 0.250391406439E-17 ! 40 iterations -! 0.183103168997d-044 iterations - elseif(Class.eq.'A') then - verify_value = 0.2433365309d-5 - elseif(Class.eq.'B') then - verify_value = 0.180056440132d-5 - elseif(Class.eq.'C') then - verify_value = 0.570674826298d-06 - endif - - if( abs( rnm2 - verify_value ) .le. epsilon ) then - verified = .TRUE. - write(*, 200) - write(*, 201) rnm2 - write(*, 202) rnm2 - verify_value - 200 format(' VERIFICATION SUCCESSFUL ') - 201 format(' L2 Norm is ', E20.12) - 202 format(' Error is ', E20.12) - else - verified = .FALSE. - write(*, 300) - write(*, 301) rnm2 - write(*, 302) verify_value - 300 format(' VERIFICATION FAILED') - 301 format(' L2 Norm is ', E20.12) - 302 format(' The correct L2 Norm is ', E20.12) - endif - else - verified = .FALSE. - write (*, 400) - write (*, 401) - 400 format(' Problem size unknown') - 401 format(' NO VERIFICATION PERFORMED') - endif - - nn = nx(lt)*ny(lt)*nz(lt) - - if( t .ne. 0. ) then - mflops = 58.*nit*nn*1.0D-6 /t - else - mflops = 0.0 - endif - - call print_results('MG', class, nx(lt), ny(lt), nz(lt), - > nit, t, - > mflops, ' floating point', - > verified, npbversion) -c , compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - - 600 format( i4, 2e19.12) - - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup(n1,n2,n3,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - include 'globals.h' - - integer is1, is2, is3, ie1, ie2, ie3 - common /grid/ is1,is2,is3,ie1,ie2,ie3 - - integer n1,n2,n3,k - integer d, i, j - integer ax - integer ng(3,10) - integer s, dir,ierr - - - ng(1,lt) = nx(lt) - ng(2,lt) = ny(lt) - ng(3,lt) = nz(lt) - do ax=1,3 - do k=lt-1,1,-1 - ng(ax,k) = ng(ax,k+1)/2 - enddo - enddo - 61 format(10i4) - do k=lt,1,-1 - nx(k) = ng(1,k) - ny(k) = ng(2,k) - nz(k) = ng(3,k) - enddo - - do k = lt,1,-1 - do ax = 1,3 - mi(ax,k) = 2 + ng(ax,k) - enddo - - m1(k) = mi(1,k) - m2(k) = mi(2,k) - m3(k) = mi(3,k) - - enddo - - - k = lt - is1 = 2 + ng(1,k) - ng(1,lt) - ie1 = 1 + ng(1,k) - n1 = 3 + ie1 - is1 - is2 = 2 + ng(2,k) - ng(2,lt) - ie2 = 1 + ng(2,k) - n2 = 3 + ie2 - is2 - is3 = 2 + ng(3,k) - ng(3,lt) - ie3 = 1 + ng(3,k) - n3 = 3 + ie3 - is3 - - - -c--------------------------------------------------------------------- - ir(lt)=1 - - do j = lt-1, 1, -1 - ir(j)=ir(j+1)+m1(j+1)*m2(j+1)*m3(j+1) - enddo -c--------------------------------------------------------------------- - - if( debug_vec(1) .ge. 1 )then - write(*,*)' in setup, ' - write(*,*)' k lt nx ny nz ', - > ' n1 n2 n3 is1 is2 is3 ie1 ie2 ie3' - write(*,9) k,lt,ng(1,k),ng(2,k),ng(3,k), - > n1,n2,n3,is1,is2,is3,ie1,ie2,ie3 - 9 format(15i4) - endif - - k = lt - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine setdvm() -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - include 'dvmvar.h' - integer kg1,kg2,j,i,k -!! double precision u(nr),v(nv),r(nr) -!! common /noautom/ u,v,r -!!CDVM$ HEAP u,v,r - integer PROCESSORS_SIZE,PROCESSORS_RANK - integer np,nsp,np1,lbdv(3) -c integer pdim,psize(3) - integer ngb(64,3),ngb1(64), ngb2(64), ngb3(64) - PROCESSORS_RANK() = 3 - PROCESSORS_SIZE(i) = 1 -CDVM$ DEBUG 1 (D=0) - pdim = PROCESSORS_RANK() - if(pdim.ne.3) then - print *, 'PROCESSORS_RANK must be equal to 3' - stop - endif - do i=1,pdim - psize(i)=PROCESSORS_SIZE(i) - enddo - print *, 'pdim=',pdim,':',(psize(i),i=1,pdim) - -C Must satisfy -C 2**(lbdvm-1) >= NUMBER_OF_PROCESSORS() -C lb <= lbdvm < lt - do k=1,pdim - np=psize(k) - np1=psize(k) - do i=1,10 - np1=np1/2 - if(np1.le.1) go to 100 - enddo - print *,'You must decrease the number of processors' - stop -100 lbdv(k)=i+1 - if(lbdv(k).lt.lb) lbdv(k)=lb - if(lbdv(k).ge.lt) then - print *,'You must decrease the number of processors or - > increase size of problem' - stop - endif -c print *, 'lbdvm=',lbdvm - if(np.eq.1) then - ngb(1,k)= 2**(lt+1)+1 - else - nsp = (2**lt)/np - ngb(1,k) = nsp+1 - do i=2,np-1 - ngb(i,k)=nsp - enddo - ngb(np,k) = 2**(lt+1)-nsp*(np-1) - endif - enddo - lbdvm=1 - do k=1,pdim - if(lbdvm .lt. lbdv(k)) lbdvm=lbdv(k) - enddo - do i=1,psize(1) - ngb1(i) = ngb(i,1) - enddo - if(pdim .gt.1) then - do i=1,psize(2) - ngb2(i) = ngb(i,2) - enddo - endif - if(pdim .gt.2) then - do i=1,psize(3) - ngb3(i) = ngb(i,3) - enddo - endif -CDVM$ ENDDEBUG 1 - -c print *, (ngb1(i),i=1,psize(1)) -c print *, (ngb2(i),i=1,psize(2)) -c print *, (ngb3(i),i=1,psize(3)) - - if(pdim .eq.1) then -CDVM$ REDISTRIBUTE tmp(*,*,GEN_BLOCK(ngb1)) - else if(pdim .eq.2) then -CDVM$ REDISTRIBUTE tmp(*,GEN_BLOCK(ngb1),GEN_BLOCK(ngb2)) - else -CDVM$ REDISTRIBUTE tmp(GEN_BLOCK(ngb1),GEN_BLOCK(ngb2),GEN_BLOCK(ngb3)) - endif - ALLOCATE(pv(mi(1,lt),mi(2,lt),mi(3,lt))) - ALLOCATE(pr(lt)%p(mi(1,lt),mi(2,lt),mi(3,lt))) - ALLOCATE(pu(lt)%p(mi(1,lt),mi(2,lt),mi(3,lt))) -!! pv1 => pu1 -! pr(lt)%p=>pr1 -! pu(lt)%p=>pu1 - do j = lt-1, 1, -1 - ALLOCATE(pr(j)%p(mi(1,j),mi(2,j),mi(3,j))) - ! pr(j) = ALLOCATE(pr(j) mi(1,j),r,ir(j)) - ALLOCATE(pu(j)%p(mi(1,j),mi(2,j),mi(3,j))) - !pu(j) = ALLOCATE(mi(1,j),u,ir(j)) - if(j.eq.lbdvm) then - ALLOCATE(pus1(mi(1,j),mi(2,j),mi(3,j))) !pus1 = ALLOCATE(mi(1,j),u,ir(j)) - endif - if(j.eq.lbdvm-1) then - ALLOCATE(pus(mi(1,j),mi(2,j),mi(3,j))) !pus = ALLOCATE(mi(1,j),u,ir(j)) - endif - enddo - - kg1=1 - kg2=0 - do j = lt, 1, -1 - pu1 => pu(j)%p - if(j.ge.lbdvm) then -CDVM$ REALIGN (i,j,k) WITH tmp(kg1*i-kg2,kg1*j-kg2,kg1*k-kg2)::pu1 - else - if(proc1) then -CDVM$ REALIGN (*,*,*) WITH tmp(2**(lt-1)+1,2**(lt-1)+1,2**(lt-1)+1) -CDVM$* :: pu1 - else -CDVM$ REALIGN (*,*,*) WITH tmp(*,*,*) :: pu1 - endif - endif - pu(j)%p => pu1 - kg1 = kg1*2 - kg2 = kg1-1 - enddo - -CDVM$ REALIGN (i,j,k) WITH tmp(i,j,k):: pv - - kg1=1 - kg2=0 - do j = lt, 1, -1 - pr1 => pr(j)%p - if(j.ge.lbdvm) then -CDVM$ REALIGN (i,j,k) WITH tmp(kg1*i-kg2,kg1*j-kg2,kg1*k-kg2)::pr1 - else - if(proc1) then -CDVM$ REALIGN (*,*,*) WITH tmp(2**(lt-1)+1,2**(lt-1)+1,2**(lt-1)+1) -CDVM$* :: pr1 - else -CDVM$ REALIGN (*,*,*) WITH tmp(*,*,*) :: pr1 - endif - endif - pr(j)%p => pr1 - kg1 = kg1*2 - kg2 = kg1-1 - enddo - - kg1=2 - kg2=1 - do j = lt-1, 1, -1 - if(j.eq.lbdvm) then -CDVM$ REALIGN (i,j,k) WITH tmp(kg1*i-kg2,kg1*j-kg2,kg1*k-kg2)::pus1 - endif - if(j.eq.lbdvm-1) then -CDVM$ REALIGN (i,j,k) WITH tmp(kg1*i-kg2,kg1*j-kg2,kg1*k-kg2)::pus - endif - kg1 = kg1*2 - kg2 = kg1-1 - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine mg3P(a,c,n1,n2,n3,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c multigrid V-cycle routine -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - include 'dvmvar.h' - integer n1, n2, n3, k -!! double precision u(nr),v(nv),r(nr) - double precision a(0:3),c(0:3) -!! common /noautom/ u,v,r -!!CDVM$ HEAP u,v,r - integer j - -c--------------------------------------------------------------------- -c down cycle. -c restrict the residual from the find grid to the coarse -c--------------------------------------------------------------------- - - do k= lt, lb+1 , -1 - j = k-1 - if(psize(1).ne.1) then - call rprj3(pr(k)%p,m1(k),m2(k),m3(k), - > pr(j)%p,m1(j),m2(j),m3(j),k,pus,pu(lb)%p, - > mi(1,lb),mi(2,lb),mi(3,lb)) - else - call rprj3d2(pr(k)%p,m1(k),m2(k),m3(k), - > pr(j)%p,m1(j),m2(j),m3(j),k,pus,pu(lb)%p, - > mi(1,lb),mi(2,lb),mi(3,lb)) - endif - enddo - - k = lb -c--------------------------------------------------------------------- -c compute an approximate solution on the coarsest grid -c--------------------------------------------------------------------- - call zero3(pu(k)%p,m1(k),m2(k),m3(k)) - - if(psize(1).ne.1) then - call psinv(pr(k)%p,pu(k)%p,m1(k),m2(k),m3(k),c,k) - else - call psinvd2(pr(k)%p,pu(k)%p,m1(k),m2(k),m3(k),c,k) - endif - do k = lb+1, lt-1 - j = k-1 - -c--------------------------------------------------------------------- -c prolongate from level k-1 to k -c--------------------------------------------------------------------- - if(k.ne.lbdvm .or..not.proc1) - > call zero3(pu(k)%p,m1(k),m2(k),m3(k)) - - if(psize(1).ne.1) then - call interp(pu(j)%p,m1(j),m2(j),m3(j), - > pu(k)%p,m1(k),m2(k),m3(k),k,pus1,pu(lb)%p, - > mi(1,lb),mi(2,lb),mi(3,lb)) - -c--------------------------------------------------------------------- -c compute residual for level k -c--------------------------------------------------------------------- - call resid(pu(k)%p,pr(k)%p,pr(k)%p,m1(k),m2(k),m3(k),a,k) -c--------------------------------------------------------------------- -c apply smoother -c--------------------------------------------------------------------- - call psinv(pr(k)%p,pu(k)%p,m1(k),m2(k),m3(k),c,k) - else - call interpd2(pu(j)%p,m1(j),m2(j),m3(j), - > pu(k)%p,m1(k),m2(k),m3(k),k,pus1,pu(lb)%p, - > mi(1,lb),mi(2,lb),mi(3,lb)) - call residd2(pu(k)%p,pr(k)%p,pr(k)%p,m1(k),m2(k),m3(k), - > a,k) - call psinvd2(pr(k)%p,pu(k)%p,m1(k),m2(k),m3(k),c,k) - endif - - enddo - 200 continue - j = lt - 1 - k = lt - if(psize(1).ne.1) then - call interp(pu(j)%p,m1(j),m2(j),m3(j),pu(lt)%p,n1,n2,n3,k, - > pus1,pu(lb)%p,mi(1,lb),mi(2,lb),mi(3,lb)) - call resid(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - call psinv(pr(lt)%p,pu(lt)%p,n1,n2,n3,c,k) - else - call interpd2(pu(j)%p,m1(j),m2(j),m3(j),pu(lt)%p,n1,n2,n3,k, - > pus1,pu(lb)%p,mi(1,lb),mi(2,lb),mi(3,lb)) - - call residd2(pu(lt)%p,pv,pr(lt)%p,n1,n2,n3,a,k) - call psinvd2(pr(lt)%p,pu(lt)%p,n1,n2,n3,c,k) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine psinv( r,u,n1,n2,n3,c,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c psinv applies an approximate inverse as smoother: u = u + Cr -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Presuming coefficient c(3) is zero (the NPB assumes this, -c but it is thus not a general case), 2A + 1M may be eliminated, -c resulting in 13A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1,n2,n3,k - double precision u(n1,n2,n3),r(n1,n2,n3),c(0:3) - integer i3, i2, i1 -CDVM$ INHERIT r,u - double precision r1(m), r2(m) -CDVM$ SHADOW_GROUP gr(r(CORNER)) -CDVM$ SHADOW_START gr -CDVM$ PARALLEL (i3,i2,i1) ON u(i1,i2,i3), SHADOW_WAIT gr - do i3=2,n3-1 - do i2=2,n2-1 - do i1=2,n1-1 - u(i1,i2,i3) = u(i1,i2,i3) - > + c(0) * r(i1,i2,i3) - > + c(1) * ( r(i1-1,i2,i3) + r(i1+1,i2,i3) - > + r(i1,i2-1,i3) + r(i1,i2+1,i3) - > + r(i1,i2,i3-1) + r(i1,i2,i3+1) ) - > + c(2) * (r(i1,i2-1,i3-1) + r(i1,i2+1,i3-1) - > + r(i1,i2-1,i3+1) + r(i1,i2+1,i3+1) - > + r(i1-1,i2-1,i3) + r(i1-1,i2+1,i3) - > + r(i1-1,i2,i3-1) + r(i1-1,i2,i3+1) - > + r(i1+1,i2-1,i3) + r(i1+1,i2+1,i3) - > + r(i1+1,i2,i3-1) + r(i1+1,i2,i3+1) ) -c--------------------------------------------------------------------- -c Assume c(3) = 0 (Enable line below if c(3) not= 0) -c--------------------------------------------------------------------- -c > + c(3) * ( r2(i1-1) + r2(i1+1) ) -c--------------------------------------------------------------------- - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c exchange boundary points -c--------------------------------------------------------------------- - call comm3(u,n1,n2,n3,k) - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(u,n1,n2,n3,' psinv',k) - endif - - if( debug_vec(3) .ge. k )then - call showall(u,n1,n2,n3) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine psinvd2( r,u,n1,n2,n3,c,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c psinv applies an approximate inverse as smoother: u = u + Cr -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Presuming coefficient c(3) is zero (the NPB assumes this, -c but it is thus not a general case), 2A + 1M may be eliminated, -c resulting in 13A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1,n2,n3,k - double precision u(n1,n2,n3),r(n1,n2,n3),c(0:3) - integer i3, i2, i1 -CDVM$ INHERIT r,u - double precision r1(m), r2(m) -CDVM$ SHADOW_GROUP gr(r(CORNER)) -CDVM$ SHADOW_START gr -CDVM$ PARALLEL (i3,i2) ON u(*,i2,i3), SHADOW_WAIT gr - do i3=2,n3-1 - do i2=2,n2-1 - do i1=1,n1 - r1(i1) = r(i1,i2-1,i3) + r(i1,i2+1,i3) - > + r(i1,i2,i3-1) + r(i1,i2,i3+1) - r2(i1) = r(i1,i2-1,i3-1) + r(i1,i2+1,i3-1) - > + r(i1,i2-1,i3+1) + r(i1,i2+1,i3+1) - enddo - do i1=2,n1-1 - u(i1,i2,i3) = u(i1,i2,i3) - > + c(0) * r(i1,i2,i3) - > + c(1) * ( r(i1-1,i2,i3) + r(i1+1,i2,i3) - > + r1(i1) ) - > + c(2) * ( r2(i1) + r1(i1-1) + r1(i1+1) ) -c--------------------------------------------------------------------- -c Assume c(3) = 0 (Enable line below if c(3) not= 0) -c--------------------------------------------------------------------- -c > + c(3) * ( r2(i1-1) + r2(i1+1) ) -c--------------------------------------------------------------------- - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c exchange boundary points -c--------------------------------------------------------------------- - call comm3(u,n1,n2,n3,k) - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(u,n1,n2,n3,' psinv',k) - endif - - if( debug_vec(3) .ge. k )then - call showall(u,n1,n2,n3) - endif - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine resid( u,v,r,n1,n2,n3,a,k ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c resid computes the residual: r = v - Au -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition (or Subtraction) and -c Multiplication, respectively. -c Presuming coefficient a(1) is zero (the NPB assumes this, -c but it is thus not a general case), 3A + 1M may be eliminated, -c resulting in 12A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' -CDVM$ INHERIT u,v,r - integer n1,n2,n3,k - double precision u(n1,n2,n3),v(n1,n2,n3),r(n1,n2,n3),a(0:3) - integer i3, i2, i1 - double precision u1(m), u2(m) -CDVM$ SHADOW_GROUP gu(u(CORNER)) -CDVM$ SHADOW_START gu -C DVM$ SHADOW_WAIT gu -CDVM$ PARALLEL (i3,i2,i1) ON r(i1,i2,i3), SHADOW_WAIT gu - do i3=2,n3-1 - do i2=2,n2-1 - do i1=2,n1-1 - r(i1,i2,i3) = v(i1,i2,i3) - > - a(0) * u(i1,i2,i3) -c--------------------------------------------------------------------- -c Assume a(1) = 0 (Enable 2 lines below if a(1) not= 0) -c--------------------------------------------------------------------- -c > - a(1) * ( u(i1-1,i2,i3) + u(i1+1,i2,i3) -c > + u1(i1) ) -c--------------------------------------------------------------------- - > - a(2) * (u(i1,i2-1,i3-1) + u(i1,i2+1,i3-1) - > + u(i1,i2-1,i3+1) + u(i1,i2+1,i3+1) - > + u(i1-1,i2-1,i3) + u(i1-1,i2+1,i3) - > + u(i1-1,i2,i3-1) + u(i1-1,i2,i3+1) - > + u(i1+1,i2-1,i3) + u(i1+1,i2+1,i3) - > + u(i1+1,i2,i3-1) + u(i1+1,i2,i3+1) ) - > - a(3) * (u(i1-1,i2-1,i3-1) - > + u(i1-1,i2+1,i3-1) - > + u(i1-1,i2-1,i3+1) + u(i1-1,i2+1,i3+1) - > + u(i1+1,i2-1,i3-1) + u(i1+1,i2+1,i3-1) - > + u(i1+1,i2-1,i3+1) + u(i1+1,i2+1,i3+1) ) - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c exchange boundary data -c--------------------------------------------------------------------- - call comm3(r,n1,n2,n3,k) - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(r,n1,n2,n3,' resid',k) - endif - - if( debug_vec(2) .ge. k )then - call showall(r,n1,n2,n3) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine residd2( u,v,r,n1,n2,n3,a,k ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c resid computes the residual: r = v - Au -c -c This implementation costs 15A + 4M per result, where -c A and M denote the costs of Addition (or Subtraction) and -c Multiplication, respectively. -c Presuming coefficient a(1) is zero (the NPB assumes this, -c but it is thus not a general case), 3A + 1M may be eliminated, -c resulting in 12A + 3M. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' -CDVM$ INHERIT u,v,r - integer n1,n2,n3,k - double precision u(n1,n2,n3),v(n1,n2,n3),r(n1,n2,n3),a(0:3) - integer i3, i2, i1 - double precision u1(m), u2(m) -CDVM$ SHADOW_GROUP gu(u(CORNER)) -CDVM$ SHADOW_START gu -C DVM$ SHADOW_WAIT gu -CDVM$ PARALLEL (i3,i2) ON r(*,i2,i3), SHADOW_WAIT gu - do i3=2,n3-1 - do i2=2,n2-1 - do i1=1,n1 - u1(i1) = u(i1,i2-1,i3) + u(i1,i2+1,i3) - > + u(i1,i2,i3-1) + u(i1,i2,i3+1) - u2(i1) = u(i1,i2-1,i3-1) + u(i1,i2+1,i3-1) - > + u(i1,i2-1,i3+1) + u(i1,i2+1,i3+1) - enddo - do i1=2,n1-1 - r(i1,i2,i3) = v(i1,i2,i3) - > - a(0) * u(i1,i2,i3) -c--------------------------------------------------------------------- -c Assume a(1) = 0 (Enable 2 lines below if a(1) not= 0) -c--------------------------------------------------------------------- -c > - a(1) * ( u(i1-1,i2,i3) + u(i1+1,i2,i3) -c > + u1(i1) ) -c--------------------------------------------------------------------- - > - a(2) * ( u2(i1) + u1(i1-1) + u1(i1+1) ) - > - a(3) * ( u2(i1-1) + u2(i1+1) ) - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c exchange boundary data -c--------------------------------------------------------------------- - call comm3(r,n1,n2,n3,k) - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(r,n1,n2,n3,' resid',k) - endif - - if( debug_vec(2) .ge. k )then - call showall(r,n1,n2,n3) - endif - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rprj3( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k,r1,r2, - > m1i,m2i,m3i ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c rprj3 projects onto the next coarser grid, -c using a trilinear Finite Element projection: s = r' = P r -c -c This implementation costs 20A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' -CDVM$ INHERIT r,s,r1,r2 -CDVM$ DYNAMIC s - integer m1k, m2k, m3k, m1j, m2j, m3j,k,m1i,m2i,m3i - double precision r(m1k,m2k,m3k), s(m1j,m2j,m3j),r1(m1j,m2j,m3j) - double precision r2(m1i,m2i,m3i) - integer j3, j2, j1, i3, i2, i1, d1, d2, d3, j - - double precision x1(m), y1(m), x2,y2 - - if(k.eq.lbdvm) then -CDVM$ NEW_VALUE -CDVM$ REALIGN s(i,j,k) WITH r1(i,j,k) - endif - if(m1k.eq.3)then - d1 = 2 - else - d1 = 1 - endif - - if(m2k.eq.3)then - d2 = 2 - else - d2 = 1 - endif - - if(m3k.eq.3)then - d3 = 2 - else - d3 = 1 - endif - -CDVM$ SHADOW_GROUP gr(r(CORNER)) -CDVM$ SHADOW_START gr -CDVM$ PARALLEL (j3,j2,j1) ON s(j1,j2,j3), SHADOW_WAIT gr - do j3=2,m3j-1 - do j2=2,m2j-1 - do j1=2,m1j-1 - i3 = 2*j3-d3 - i2 = 2*j2-d2 - - i1 = 2*j1-d1 - - y2 = r(i1, i2-1,i3-1) + r(i1, i2-1,i3+1) - > + r(i1, i2+1,i3-1) + r(i1, i2+1,i3+1) - x2 = r(i1, i2-1,i3 ) + r(i1, i2+1,i3 ) - > + r(i1, i2, i3-1) + r(i1, i2, i3+1) - s(j1,j2,j3) = - > 0.5D0 * r(i1,i2,i3) - > + 0.25D0 * ( r(i1-1,i2,i3) + r(i1+1,i2,i3) + x2) - > + 0.125D0 * ( r(i1-1,i2-1,i3 ) + r(i1-1,i2+1,i3 ) - > + r(i1-1,i2, i3-1) + r(i1-1,i2, i3+1) - > + r(i1+1,i2-1,i3 ) + r(i1+1,i2+1,i3 ) - > + r(i1+1,i2, i3-1) + r(i1+1,i2, i3+1) + y2) - > + 0.0625D0 * (r(i1-1,i2-1,i3-1) + r(i1-1,i2-1,i3+1) - > + r(i1-1,i2+1,i3-1) + r(i1-1,i2+1,i3+1) - > + r(i1+1,i2-1,i3-1) + r(i1+1,i2-1,i3+1) - > + r(i1+1,i2+1,i3-1) + r(i1+1,i2+1,i3+1) ) - enddo - - enddo - enddo - - - j = k-1 - - call comm3(s,m1j,m2j,m3j,j) - - if(k.eq.lbdvm) then - if(proc1) then -CDVM$ REALIGN s(*,*,*) WITH r2(*,*,*) - else -CDVM$ REALIGN s(*,*,*) WITH r1(*,*,*) - endif - endif - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(s,m1j,m2j,m3j,' rprj3',k-1) - endif - if( debug_vec(4) .ge. k )then - call showall(s,m1j,m2j,m3j) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rprj3d2( r,m1k,m2k,m3k,s,m1j,m2j,m3j,k,r1,r2, - > m1i,m2i,m3i ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c rprj3 projects onto the next coarser grid, -c using a trilinear Finite Element projection: s = r' = P r -c -c This implementation costs 20A + 4M per result, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' -CDVM$ INHERIT r,s,r1,r2 -CDVM$ DYNAMIC s - integer m1k, m2k, m3k, m1j, m2j, m3j,k,m1i,m2i,m3i - double precision r(m1k,m2k,m3k), s(m1j,m2j,m3j),r1(m1j,m2j,m3j) - double precision r2(m1i,m2i,m3i) - integer j3, j2, j1, i3, i2, i1, d1, d2, d3, j - - double precision x1(m), y1(m), x2,y2 - - if(k.eq.lbdvm) then -CDVM$ NEW_VALUE -CDVM$ REALIGN s(i,j,k) WITH r1(i,j,k) - endif - if(m1k.eq.3)then - d1 = 2 - else - d1 = 1 - endif - - if(m2k.eq.3)then - d2 = 2 - else - d2 = 1 - endif - - if(m3k.eq.3)then - d3 = 2 - else - d3 = 1 - endif - -CDVM$ SHADOW_GROUP gr(r(CORNER)) -CDVM$ SHADOW_START gr -CDVM$ PARALLEL (j3,j2) ON s(*,j2,j3), SHADOW_WAIT gr - do j3=2,m3j-1 - do j2=2,m2j-1 - i3 = 2*j3-d3 - i2 = 2*j2-d2 - - do j1=2,m1j - i1 = 2*j1-d1 - x1(i1-1) = r(i1-1,i2-1,i3 ) + r(i1-1,i2+1,i3 ) - > + r(i1-1,i2, i3-1) + r(i1-1,i2, i3+1) - y1(i1-1) = r(i1-1,i2-1,i3-1) + r(i1-1,i2-1,i3+1) - > + r(i1-1,i2+1,i3-1) + r(i1-1,i2+1,i3+1) - enddo - - do j1=2,m1j-1 - i1 = 2*j1-d1 - y2 = r(i1, i2-1,i3-1) + r(i1, i2-1,i3+1) - > + r(i1, i2+1,i3-1) + r(i1, i2+1,i3+1) - x2 = r(i1, i2-1,i3 ) + r(i1, i2+1,i3 ) - > + r(i1, i2, i3-1) + r(i1, i2, i3+1) - s(j1,j2,j3) = - > 0.5D0 * r(i1,i2,i3) - > + 0.25D0 * ( r(i1-1,i2,i3) + r(i1+1,i2,i3) + x2) - > + 0.125D0 * ( x1(i1-1) + x1(i1+1) + y2) - > + 0.0625D0 * ( y1(i1-1) + y1(i1+1) ) - enddo - - enddo - enddo - - - j = k-1 - - call comm3(s,m1j,m2j,m3j,j) - - if(k.eq.lbdvm) then - if(proc1) then -CDVM$ REALIGN s(*,*,*) WITH r2(*,*,*) - else -CDVM$ REALIGN s(*,*,*) WITH r1(*,*,*) - endif - endif - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(s,m1j,m2j,m3j,' rprj3',k-1) - endif - if( debug_vec(4) .ge. k )then - call showall(s,m1j,m2j,m3j) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine interp( z,mm1,mm2,mm3,u,n1,n2,n3,k,u1,u2, - > m1i,m2i,m3i) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c interp adds the trilinear interpolation of the correction -c from the coarser grid to the current approximation: u = u + Qu' -c -c Observe that this implementation costs 16A + 4M, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. Vector machines may get slightly better -c performance however, with 8 separate "do i1" loops, rather than 4. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer mm1, mm2, mm3, n1, n2, n3,k,m1i,m2i,m3i - double precision z(mm1,mm2,mm3),u(n1,n2,n3),u1(n1,n2,n3) - double precision u2(m1i,m2i,m3i) - integer i3, i2, i1, d1, d2, d3, t1, t2, t3 - -c note that m = 1037 in globals.h but for this only need to be -c 535 to handle up to 1024^3 -c integer m -c parameter( m=535 ) - double precision z1(m),z2(m),z3(m) -CDVM$ INHERIT z,u,u1,u2 -CDVM$ DYNAMIC u - - if(k.eq.lbdvm .and. proc1) then -CDVM$ NEW_VALUE -CDVM$ REALIGN u(*,*,*) WITH u2(*,*,*) - call zero3(u,n1,n2,n3) - endif - - if( n1 .ne. 3 .and. n2 .ne. 3 .and. n3 .ne. 3 ) then -CDVM$ SHADOW_GROUP gz(z(CORNER)) -CDVM$ SHADOW_START gz -CDVM$ SHADOW_WAIT gz -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-1,2*i2-1,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - - u(2*i1-1,2*i2-1,2*i3-1)=u(2*i1-1,2*i2-1,2*i3-1) - > +z(i1,i2,i3) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1,2*i2-1,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1,2*i2-1,2*i3-1)=u(2*i1,2*i2-1,2*i3-1) - > +0.5d0*(z(i1+1,i2,i3)+z(i1,i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-1,2*i2,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1-1,2*i2,2*i3-1)=u(2*i1-1,2*i2,2*i3-1) - > +0.5d0 * ( z(i1,i2+1,i3) + z(i1,i2,i3) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1,2*i2,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1,2*i2,2*i3-1)=u(2*i1,2*i2,2*i3-1) - > +0.25d0*( z(i1,i2+1,i3) + z(i1,i2,i3) - > + z(i1+1,i2+1,i3) + z(i1+1,i2,i3) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-1,2*i2-1,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1-1,2*i2-1,2*i3)=u(2*i1-1,2*i2-1,2*i3) - > +0.5d0 * ( z(i1,i2,i3+1) + z(i1,i2,i3) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1,2*i2-1,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1,2*i2-1,2*i3)=u(2*i1,2*i2-1,2*i3) - > +0.25d0*( z(i1,i2,i3+1) + z(i1,i2,i3) - > + z(i1+1,i2,i3+1) + z(i1+1,i2,i3) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-1,2*i2,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1-1,2*i2,2*i3)=u(2*i1-1,2*i2,2*i3) - > +0.25d0* (z(i1,i2+1,i3+1) + z(i1,i2,i3+1) - > + z(i1,i2+1,i3) + z(i1,i2,i3) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1,2*i2,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1-1 - u(2*i1,2*i2,2*i3)=u(2*i1,2*i2,2*i3) - > +0.125d0*(z(i1,i2+1,i3+1) + z(i1,i2,i3+1) - > + z(i1,i2+1,i3) + z(i1,i2,i3) - > + z(i1+1,i2+1,i3+1) + z(i1+1,i2,i3+1) - > + z(i1+1,i2+1,i3) + z(i1+1,i2,i3) ) - enddo - enddo - enddo - - else - - if(n1.eq.3)then - d1 = 2 - t1 = 1 - else - d1 = 1 - t1 = 0 - endif - - if(n2.eq.3)then - d2 = 2 - t2 = 1 - else - d2 = 1 - t2 = 0 - endif - - if(n3.eq.3)then - d3 = 2 - t3 = 1 - else - d3 = 1 - t3 = 0 - endif - -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-d1,2*i2-d2,2*i3-d3) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-d2,2*i3-d3)=u(2*i1-d1,2*i2-d2,2*i3-d3) - > +z(i1,i2,i3) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-t1,2*i2-d2,2*i3-d3) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=1,mm1-1 - u(2*i1-t1,2*i2-d2,2*i3-d3)=u(2*i1-t1,2*i2-d2,2*i3-d3) - > +0.5D0*(z(i1+1,i2,i3)+z(i1,i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-d1,2*i2-t2,2*i3-d3) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-t2,2*i3-d3)=u(2*i1-d1,2*i2-t2,2*i3-d3) - > +0.5D0*(z(i1,i2+1,i3)+z(i1,i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-t1,2*i2-t2,2*i3-d3) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=1,mm1-1 - u(2*i1-t1,2*i2-t2,2*i3-d3)=u(2*i1-t1,2*i2-t2,2*i3-d3) - > +0.25D0*(z(i1+1,i2+1,i3)+z(i1+1,i2,i3) - > +z(i1, i2+1,i3)+z(i1, i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-d1,2*i2-d2,2*i3-t3) - do i3=1,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-d2,2*i3-t3)=u(2*i1-d1,2*i2-d2,2*i3-t3) - > +0.5D0*(z(i1,i2,i3+1)+z(i1,i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-t1,2*i2-d2,2*i3-t3) - do i3=1,mm3-1 - do i2=d2,mm2-1 - do i1=1,mm1-1 - u(2*i1-t1,2*i2-d2,2*i3-t3)=u(2*i1-t1,2*i2-d2,2*i3-t3) - > +0.25D0*(z(i1+1,i2,i3+1)+z(i1,i2,i3+1) - > +z(i1+1,i2,i3 )+z(i1,i2,i3 )) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-d1,2*i2-t2,2*i3-t3) - do i3=1,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-t2,2*i3-t3)=u(2*i1-d1,2*i2-t2,2*i3-t3) - > +0.25D0*(z(i1,i2+1,i3+1)+z(i1,i2,i3+1) - > +z(i1,i2+1,i3 )+z(i1,i2,i3 )) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2,i1) ON u(2*i1-t1,2*i2-t2,2*i3-t3) - do i3=1,mm3-1 - do i2=d2,mm2-1 - do i1=1,mm1-1 - u(2*i1-t1,2*i2-t2,2*i3-t3)=u(2*i1-t1,2*i2-t2,2*i3-t3) - > +0.125D0*(z(i1+1,i2+1,i3+1)+z(i1+1,i2,i3+1) - > +z(i1 ,i2+1,i3+1)+z(i1 ,i2,i3+1) - > +z(i1+1,i2+1,i3 )+z(i1+1,i2,i3 ) - > +z(i1 ,i2+1,i3 )+z(i1 ,i2,i3 )) - enddo - enddo - enddo - - - - endif - - if(k.eq.lbdvm) then - if(proc1) then -CDVM$ REALIGN u(i,j,k) WITH u1(i,j,k) - endif - endif - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(z,mm1,mm2,mm3,'z: inter',k-1) - call rep_nrm(u,n1,n2,n3,'u: inter',k) - endif - - if( debug_vec(5) .ge. k )then - call showall(z,mm1,mm2,mm3) - call showall(u,n1,n2,n3) - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine interpd2( z,mm1,mm2,mm3,u,n1,n2,n3,k,u1,u2, - > m1i,m2i,m3i) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c interp adds the trilinear interpolation of the correction -c from the coarser grid to the current approximation: u = u + Qu' -c -c Observe that this implementation costs 16A + 4M, where -c A and M denote the costs of Addition and Multiplication. -c Note that this vectorizes, and is also fine for cache -c based machines. Vector machines may get slightly better -c performance however, with 8 separate "do i1" loops, rather than 4. -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer mm1, mm2, mm3, n1, n2, n3,k,m1i,m2i,m3i - double precision z(mm1,mm2,mm3),u(n1,n2,n3),u1(n1,n2,n3) - double precision u2(m1i,m2i,m3i) - integer i3, i2, i1, d1, d2, d3, t1, t2, t3 - -c note that m = 1037 in globals.h but for this only need to be -c 535 to handle up to 1024^3 -c integer m -c parameter( m=535 ) - double precision z1(m),z2(m),z3(m) -CDVM$ INHERIT z,u,u1,u2 -CDVM$ DYNAMIC u - - if(k.eq.lbdvm .and. proc1) then -CDVM$ NEW_VALUE -CDVM$ REALIGN u(*,*,*) WITH u2(*,*,*) - call zero3(u,n1,n2,n3) - endif - - if( n1 .ne. 3 .and. n2 .ne. 3 .and. n3 .ne. 3 ) then -CDVM$ SHADOW_GROUP gz(z(CORNER)) -CDVM$ SHADOW_START gz -CDVM$ SHADOW_WAIT gz -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2-1,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - -CDVM$ DEBUG 3(D=0) - do i1=1,mm1 - z1(i1) = z(i1,i2+1,i3) + z(i1,i2,i3) - z2(i1) = z(i1,i2,i3+1) + z(i1,i2,i3) - z3(i1) = z(i1,i2+1,i3+1) + z(i1,i2,i3+1) + z1(i1) - enddo -CDVM$ END DEBUG 3 - do i1=1,mm1-1 - u(2*i1-1,2*i2-1,2*i3-1)=u(2*i1-1,2*i2-1,2*i3-1) - > +z(i1,i2,i3) - u(2*i1,2*i2-1,2*i3-1)=u(2*i1,2*i2-1,2*i3-1) - > +0.5d0*(z(i1+1,i2,i3)+z(i1,i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2,2*i3-1) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1 - z1(i1) = z(i1,i2+1,i3) + z(i1,i2,i3) - enddo - do i1=1,mm1-1 - u(2*i1-1,2*i2,2*i3-1)=u(2*i1-1,2*i2,2*i3-1) - > +0.5d0 * z1(i1) - u(2*i1,2*i2,2*i3-1)=u(2*i1,2*i2,2*i3-1) - > +0.25d0*( z1(i1) + z1(i1+1) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2-1,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1 - z2(i1) = z(i1,i2,i3+1) + z(i1,i2,i3) - enddo - do i1=1,mm1-1 - u(2*i1-1,2*i2-1,2*i3)=u(2*i1-1,2*i2-1,2*i3) - > +0.5d0 * z2(i1) - u(2*i1,2*i2-1,2*i3)=u(2*i1,2*i2-1,2*i3) - > +0.25d0*( z2(i1) + z2(i1+1) ) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2,2*i3) - do i3=1,mm3-1 - do i2=1,mm2-1 - do i1=1,mm1 - z1(i1) = z(i1,i2+1,i3) + z(i1,i2,i3) - z3(i1) = z(i1,i2+1,i3+1) + z(i1,i2,i3+1) + z1(i1) - enddo - - do i1=1,mm1-1 - u(2*i1-1,2*i2,2*i3)=u(2*i1-1,2*i2,2*i3) - > +0.25d0* z3(i1) - u(2*i1,2*i2,2*i3)=u(2*i1,2*i2,2*i3) - > +0.125d0*( z3(i1) + z3(i1+1) ) - enddo - enddo - enddo - - else - - if(n1.eq.3)then - d1 = 2 - t1 = 1 - else - d1 = 1 - t1 = 0 - endif - - if(n2.eq.3)then - d2 = 2 - t2 = 1 - else - d2 = 1 - t2 = 0 - endif - - if(n3.eq.3)then - d3 = 2 - t3 = 1 - else - d3 = 1 - t3 = 0 - endif -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2-d2,2*i3-d3) - do i3=d3,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-d2,2*i3-d3)=u(2*i1-d1,2*i2-d2,2*i3-d3) - > +z(i1,i2,i3) - enddo - do i1=1,mm1-1 - u(2*i1-t1,2*i2-d2,2*i3-d3)=u(2*i1-t1,2*i2-d2,2*i3-d3) - > +0.5D0*(z(i1+1,i2,i3)+z(i1,i2,i3)) - enddo - - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-t2,2*i3-d3)=u(2*i1-d1,2*i2-t2,2*i3-d3) - > +0.5D0*(z(i1,i2+1,i3)+z(i1,i2,i3)) - enddo - do i1=1,mm1-1 - u(2*i1-t1,2*i2-t2,2*i3-d3)=u(2*i1-t1,2*i2-t2,2*i3-d3) - > +0.25D0*(z(i1+1,i2+1,i3)+z(i1+1,i2,i3) - > +z(i1, i2+1,i3)+z(i1, i2,i3)) - enddo - enddo - enddo -CDVM$ PARALLEL (i3,i2) ON u(*,2*i2-d2,2*i3-t3) - do i3=1,mm3-1 - do i2=d2,mm2-1 - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-d2,2*i3-t3)=u(2*i1-d1,2*i2-d2,2*i3-t3) - > +0.5D0*(z(i1,i2,i3+1)+z(i1,i2,i3)) - enddo - do i1=1,mm1-1 - u(2*i1-t1,2*i2-d2,2*i3-t3)=u(2*i1-t1,2*i2-d2,2*i3-t3) - > +0.25D0*(z(i1+1,i2,i3+1)+z(i1,i2,i3+1) - > +z(i1+1,i2,i3 )+z(i1,i2,i3 )) - enddo - - do i1=d1,mm1-1 - u(2*i1-d1,2*i2-t2,2*i3-t3)=u(2*i1-d1,2*i2-t2,2*i3-t3) - > +0.25D0*(z(i1,i2+1,i3+1)+z(i1,i2,i3+1) - > +z(i1,i2+1,i3 )+z(i1,i2,i3 )) - enddo - do i1=1,mm1-1 - u(2*i1-t1,2*i2-t2,2*i3-t3)=u(2*i1-t1,2*i2-t2,2*i3-t3) - > +0.125D0*(z(i1+1,i2+1,i3+1)+z(i1+1,i2,i3+1) - > +z(i1 ,i2+1,i3+1)+z(i1 ,i2,i3+1) - > +z(i1+1,i2+1,i3 )+z(i1+1,i2,i3 ) - > +z(i1 ,i2+1,i3 )+z(i1 ,i2,i3 )) - enddo - enddo - enddo - - endif - - if(k.eq.lbdvm) then - if(proc1) then -CDVM$ REALIGN u(i,j,k) WITH u1(i,j,k) - endif - endif - - if( debug_vec(0) .ge. 1 )then - call rep_nrm(z,mm1,mm2,mm3,'z: inter',k-1) - call rep_nrm(u,n1,n2,n3,'u: inter',k) - endif - - if( debug_vec(5) .ge. k )then - call showall(z,mm1,mm2,mm3) - call showall(u,n1,n2,n3) - endif - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine norm2u3(r,n1,n2,n3,rnm2,rnmu,nx,ny,nz) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c norm2u3 evaluates approximations to the L2 norm and the -c uniform (or L-infinity or Chebyshev) norm, under the -c assumption that the boundaries are periodic or zero. Add the -c boundaries in with half weight (quarter weight on the edges -c and eighth weight at the corners) for inhomogeneous boundaries. -c--------------------------------------------------------------------- - implicit none - - - integer n1, n2, n3, nx, ny, nz - double precision rnm2, rnmu, r(n1,n2,n3) - double precision s, a, ss - integer i3, i2, i1, ierr -CDVM$ INHERIT r - integer n - - n = nx*ny*nz - - s=0.0D0 - rnmu = 0.0D0 -CDVM$ PARALLEL (i3,i2,i1) ON r(i1,i2,i3),REDUCTION (SUM(s),MAX(rnmu)) - do i3=2,n3-1 - do i2=2,n2-1 - do i1=2,n1-1 - s=s+r(i1,i2,i3)**2 - a=abs(r(i1,i2,i3)) - if(a.gt.rnmu)rnmu=a - enddo - enddo - enddo - - rnm2=sqrt( s / float( n )) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rep_nrm(u,n1,n2,n3,title,kk) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c report on norm -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' - - integer n1, n2, n3, kk - double precision u(n1,n2,n3) - character*8 title -CDVM$ INHERIT u - double precision rnm2, rnmu - - - call norm2u3(u,n1,n2,n3,rnm2,rnmu,nx(kk),ny(kk),nz(kk)) - write(*,7)kk,title,rnm2,rnmu - 7 format(' Level',i2,' in ',a8,': norms =',D21.14,D21.14) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine comm3(u,n1,n2,n3,kk) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c comm3 organizes the communication on all borders -c--------------------------------------------------------------------- - implicit none - - include 'globals.h' -CDVM$ INHERIT u - integer n1, n2, n3, kk - double precision u(n1,n2,n3) - integer axis - - do axis = 1, 3 - call comm1p( axis, u, n1, n2, n3, kk ) - enddo - - return - end - -c-------------------------------------------------------------------- - -c-------------------------------------------------------------------- - - - subroutine comm1p( axis, u, n1, n2, n3, kk ) - -c-------------------------------------------------------------------- - -c-------------------------------------------------------------------- - - - implicit none - - include 'globals.h' -CDVM$ INHERIT u -CDVM$ ASYNCID W - integer axis, dir, n1, n2, n3 - double precision u( n1, n2, n3 ) - - integer i3, i2, i1, buff_len,buff_id - integer i, kk, indx - - if( axis .eq. 1 )then -CDVM$ ASYNCHRONOUS W -CDVM$ F90 u(n1,2:n2-1,2:n3-1) = u(2,2:n2-1,2:n3-1) -CDVM$ F90 u(1,2:n2-1,2:n3-1) = u(n1-1,2:n2-1,2:n3-1) - do i3=2,n3-1 - do i2=2,n2-1 - u(n1,i2,i3) = u(2,i2,i3) - u(1,i2,i3) = u(n1-1,i2,i3) - enddo - enddo -CDVM$ END ASYNCHRONOUS - endif - - if( axis .eq. 2 )then -CDVM$ ASYNCHRONOUS W -CDVM$ F90 u(1:n1,n2,2:n3-1) = u(1:n1,2,2:n3-1) -CDVM$ F90 u(1:n1,1,2:n3-1) = u(1:n1,n2-1,2:n3-1) - do i3=2,n3-1 - do i1=1,n1 - u(i1,n2,i3) = u(i1,2,i3) - u(i1,1,i3) = u(i1,n2-1,i3) - enddo - enddo -CDVM$ END ASYNCHRONOUS - endif - - if( axis .eq. 3 )then -CDVM$ ASYNCHRONOUS W -CDVM$ F90 u(1:n1,1:n2,n3) = u(1:n1,1:n2,2) -CDVM$ F90 u(1:n1,1:n2,1) = u(1:n1,1:n2,n3-1) - do i2=1,n2 - do i1=1,n1 - u(i1,i2,n3) = u(i1,i2,2) - u(i1,i2,1) = u(i1,i2,n3-1) - enddo - enddo -CDVM$ END ASYNCHRONOUS - endif -CDVM$ ASYNCWAIT W - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine zran3(z,n1,n2,n3,nx,ny,k) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c zran3 loads +1 at ten randomly chosen points, -c loads -1 at a different ten random points, -c and zero elsewhere. -c--------------------------------------------------------------------- - implicit none - include 'npbparams.h' -CDVM$ INHERIT z -CDVM$ DYNAMIC z - integer is1, is2, is3, ie1, ie2, ie3,i3b,i3e,i2b,i1b - common /grid/ is1,is2,is3,ie1,ie2,ie3 - - integer n1, n2, n3, k, nx, ny, ierr, i0, m0, m1 - double precision z(n1,n2,n3),zz(2+2**ndim1) - - integer mm, i1, i2, i3, d1, e1, e2, e3,ii2,ii1 - double precision x, a - double precision xx, x0, x1, a1, a2, ai, power - parameter( mm = 10, a = 5.D0 ** 13, x = 314159265.D0) - double precision ten( mm, 0:1 ), temp, best - integer i, j1( mm, 0:1 ), j2( mm, 0:1 ), j3( mm, 0:1 ) - integer jg( 0:3, mm, 0:1 ), jg_temp(4) - external randlc - double precision randlc, rdummy - -CDVM$ DEBUG 8 (D=1) - a1 = power( a, nx ) - a2 = power( a, nx*ny ) - call zero3(z,n1,n2,n3) - - i = is1-2+nx*(is2-2+ny*(is3-2)) - - - d1 = ie1 - is1 + 1 - e1 = ie1 - is1 + 2 - e2 = ie2 - is2 + 2 - e3 = ie3 - is3 + 2 - x0 = x -c i0=0 - i3b=2 - i3e=e3 - i2b=2 - i1b=2 -CDVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3),NEW(i3b,i3e,i2b,i1b) - - do i3 = i3b, i3e - do i2 = i2b, e2 - do i1=i1b,e1 - if(i1.eq.i1b) then - if(i3 .eq.i3b .and. i2 .eq. i2b) then - i = is1-2+nx*(i2b-2+ny*(i3b-2)) - ai = power( a, i ) - x0 = x - rdummy = randlc( x0, ai ) - x1 = x0 - endif - - if(i2 .eq.i2b .and.i3.ne.i3b ) then - rdummy = randlc( x0, a2 ) - x1 = x0 - endif - xx = x1 - call vranlc( d1, xx, a, zz( 2)) -c call vranlc( d1, xx, a, z( 2, i2, i3 )) - rdummy = randlc( x1, a1 ) - endif - z(i1,i2,i3) = zz(i1) - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c call comm3(z,n1,n2,n3) -c call showall(z,n1,n2,n3) -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c each processor looks for twenty candidates -c--------------------------------------------------------------------- - - do i=1,mm - ten( i, 1 ) = 0.0D0 - j1( i, 1 ) = 0 - j2( i, 1 ) = 0 - j3( i, 1 ) = 0 - ten( i, 0 ) = 1.0D0 - j1( i, 0 ) = 0 - j2( i, 0 ) = 0 - j3( i, 0 ) = 0 - enddo -CDVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3) - - do i3=2,n3-1 - do i2=2,n2-1 - do i1=2,n1-1 - if( z(i1,i2,i3) .gt. ten( 1, 1 ) )then - ten(1,1) = z(i1,i2,i3) - j1(1,1) = i1 - j2(1,1) = i2 - j3(1,1) = i3 - call bubble( ten, j1, j2, j3, mm, 1 ) - endif - if( z(i1,i2,i3) .lt. ten( 1, 0 ) )then - ten(1,0) = z(i1,i2,i3) - j1(1,0) = i1 - j2(1,0) = i2 - j3(1,0) = i3 - call bubble( ten, j1, j2, j3, mm, 0 ) - endif - enddo - enddo - enddo - - -c--------------------------------------------------------------------- -c Now which of these are globally best? -c--------------------------------------------------------------------- - i1 = mm - i0 = mm - do i=mm,1,-1 - - best=0. -CDVM$ PARALLEL (i3,ii2,ii1) ON z(ii1,ii2,i3),REDUCTION(MAX(best)) - do i3=2,n3-1 - do ii2=2,n2-1 - do ii1=2,n1-1 - if(best.eq.0.) best= z( j1(i1,1), j2(i1,1), j3(i1,1) ) - enddo - enddo - enddo - - if(best.eq.z(j1(i1,1),j2(i1,1),j3(i1,1)))then - jg( 0, i, 1) = 0 - jg( 1, i, 1) = is1 - 2 + j1( i1, 1 ) - jg( 2, i, 1) = is2 - 2 + j2( i1, 1 ) - jg( 3, i, 1) = is3 - 2 + j3( i1, 1 ) - i1 = i1-1 - else - jg( 0, i, 1) = 0 - jg( 1, i, 1) = 0 - jg( 2, i, 1) = 0 - jg( 3, i, 1) = 0 - endif - ten( i, 1 ) = best - - best=0. -CDVM$ PARALLEL (i3,ii2,ii1) ON z(ii1,ii2,i3),REDUCTION(MIN(best)) - do i3=2,n3-1 - do ii2=2,n2-1 - do ii1=2,n1-1 - if(best.eq.0.) best= z( j1(i0,0),j2(i0,0),j3(i0,0) ) - enddo - enddo - enddo - if(best.eq.z(j1(i0,0),j2(i0,0),j3(i0,0)))then - jg( 0, i, 0) = 0 - jg( 1, i, 0) = is1 - 2 + j1( i0, 0 ) - jg( 2, i, 0) = is2 - 2 + j2( i0, 0 ) - jg( 3, i, 0) = is3 - 2 + j3( i0, 0 ) - i0 = i0-1 - else - jg( 0, i, 0) = 0 - jg( 1, i, 0) = 0 - jg( 2, i, 0) = 0 - jg( 3, i, 0) = 0 - endif - ten( i, 0 ) = best - - enddo - m1 = i1+1 - m0 = i0+1 - -c write(*,*)' ' -c write(*,*)' negative charges at' -c write(*,9)(jg(1,i,0),jg(2,i,0),jg(3,i,0),i=1,mm) -c write(*,*)' positive charges at' -c write(*,9)(jg(1,i,1),jg(2,i,1),jg(3,i,1),i=1,mm) -c write(*,*)' small random numbers were' -c write(*,8)(ten( i,0),i=mm,1,-1) -c write(*,*)' and they were found on processor number' -c write(*,7)(jg(0,i,0),i=mm,1,-1) -c write(*,*)' large random numbers were' -c write(*,8)(ten( i,1),i=mm,1,-1) -c write(*,*)' and they were found on processor number' -c write(*,7)(jg(0,i,1),i=mm,1,-1) -c 9 format(5(' (',i3,2(',',i3),')')) -c 8 format(5D15.8) -c 7 format(10i4) -CDVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3) - do i3=1,n3 - do i2=1,n2 - do i1=1,n1 - z(i1,i2,i3) = 0.0D0 - enddo - enddo - enddo - do i=mm,m0,-1 - z( j1(i,0), j2(i,0), j3(i,0) ) = -1.0D0 - enddo - do i=mm,m1,-1 - z( j1(i,1), j2(i,1), j3(i,1) ) = +1.0D0 - enddo - call comm3(z,n1,n2,n3,k) - -c--------------------------------------------------------------------- -c call showall(z,n1,n2,n3) -c--------------------------------------------------------------------- -CDVM$ END DEBUG 8 - return - end - - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine showall(z,n1,n2,n3) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - -CDVM$ INHERIT z - integer n1,n2,n3,i1,i2,i3,i,ierr - double precision z(n1,n2,n3) - integer m1, m2, m3 - - m1 = min(n1,18) - m2 = min(n2,14) - m3 = min(n3,18) - - write(*,*)' ' -C do i3=1,m3 -C do i1=1,m1 -C write(*,6)(z(i1,i2,i3),i2=1,m2) -C enddo - -C write(*,*)' - - - - - - - ' -C enddo - - write (*,*) z - - write(*,*)' ' - 6 format(15f6.3) - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function power( a, n ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c power raises an integer, disguised as a double -c precision real, to an integer power -c--------------------------------------------------------------------- - implicit none - - double precision a, aj - integer n, nj - external randlc - double precision randlc, rdummy - - power = 1.0D0 - nj = n - aj = a - 100 continue - - if( nj .eq. 0 ) goto 200 - if( mod(nj,2) .eq. 1 ) rdummy = randlc( power, aj ) - rdummy = randlc( aj, aj ) - nj = nj/2 - go to 100 - - 200 continue - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine bubble( ten, j1, j2, j3, m, ind ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c bubble does a bubble sort in direction dir -c--------------------------------------------------------------------- - implicit none - - - integer m, ind, j1( m, 0:1 ), j2( m, 0:1 ), j3( m, 0:1 ) - double precision ten( m, 0:1 ) - double precision temp - integer i, j_temp - - if( ind .eq. 1 )then - - do i=1,m-1 - if( ten(i,ind) .gt. ten(i+1,ind) )then - - temp = ten( i+1, ind ) - ten( i+1, ind ) = ten( i, ind ) - ten( i, ind ) = temp - - j_temp = j1( i+1, ind ) - j1( i+1, ind ) = j1( i, ind ) - j1( i, ind ) = j_temp - - j_temp = j2( i+1, ind ) - j2( i+1, ind ) = j2( i, ind ) - j2( i, ind ) = j_temp - - j_temp = j3( i+1, ind ) - j3( i+1, ind ) = j3( i, ind ) - j3( i, ind ) = j_temp - - else - go to 5 - endif - enddo - 5 return - else - - do i=1,m-1 - if( ten(i,ind) .lt. ten(i+1,ind) )then - - temp = ten( i+1, ind ) - ten( i+1, ind ) = ten( i, ind ) - ten( i, ind ) = temp - - j_temp = j1( i+1, ind ) - j1( i+1, ind ) = j1( i, ind ) - j1( i, ind ) = j_temp - - j_temp = j2( i+1, ind ) - j2( i+1, ind ) = j2( i, ind ) - j2( i, ind ) = j_temp - - j_temp = j3( i+1, ind ) - j3( i+1, ind ) = j3( i, ind ) - j3( i, ind ) = j_temp - - else - go to 6 - endif - enddo -6 return - endif - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine zero3(z,n1,n2,n3) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - -CDVM$ INHERIT z - integer n1, n2, n3 - double precision z(n1,n2,n3) - integer i1, i2, i3 - -CDVM$ PARALLEL (i3,i2,i1) ON z(i1,i2,i3) - do i3=1,n3 - do i2=1,n2 - do i1=1,n1 - z(i1,i2,i3)=0.0D0 - enddo - enddo - enddo - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -! function ALLOCATE(size,ar,adp) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -! integer size(3),adp,ALLOCATE -! double precision ar(1) -!CDVM$ DEBUG 2 (D=0) -! ALLOCATE = adp -!CDVM$ ENDDEBUG 2 -! return -! end - -c----- end of program ------------------------------------------------ - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion) -c ,compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character*2 name - character*1 class - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*13 - logical verified - character*(*) npbversion -c > , compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7 - - write (*, 2) name - 2 format(//, ' ', A2, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f12.0)' ) 2.d0**n1 - do j =13,1,-1 - if (size(j:j) .eq. '.') size(j:j) = ' ' - end do - write (*,42) size - 42 format(' Size = ',12x, a14) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',12x, i3,'x',i3,'x',i3) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - -c write(*,14) compiletime -c 14 format(' Compile date = ', 12x, a12) - - -c write (*,121) cs1 -c 121 format(/, ' Compile options:', /, -c > ' F77 = ', A) - -c write (*,122) cs2 -c 122 format(' FLINK = ', A) - -c write (*,123) cs3 -c 123 format(' F_LIB = ', A) -c -c write (*,124) cs4 -c 124 format(' F_INC = ', A) -c -c write (*,125) cs5 -c 125 format(' FFLAGS = ', A) -c -c write (*,126) cs6 -c 126 format(' FLINKFLAGS = ', A) -c -c write(*, 127) cs7 -c 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send the results of this run to:'// - > ' NPB Development Team '/ - > ' Internet: npb@nas.nasa.gov'/ - > ' '/ - > ' If email is not available, send this to:'// - > ' MS T27A-1'/ - > ' NASA Ames Research Center'/ - > ' Moffett Field, CA 94035-1000'// - > ' Fax: 415-604-3957'//) - - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function randlc (x, a) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine returns a uniform pseudorandom double precision number in the -c range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The returned value RANDLC is normalized to be -c between 0 and 1, i.e. RANDLC = 2^(-46) * x_1. X is updated to contain -c the new seed x_1, so that subsequent calls to RANDLC using the same -c arguments will generate a continuous sequence. -c -c This routine should produce the same results on any computer with at least -c 48 mantissa bits in double precision floating point data. On 64 bit -c systems, double precision should be disabled. -c -c David H. Bailey October 26, 1990 -c -c--------------------------------------------------------------------- - - implicit none - - double precision r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - randlc = r46 * x - - return - end - - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine vranlc (n, x, a, y) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This routine generates N uniform pseudorandom double precision numbers in -c the range (0, 1) by using the linear congruential generator -c -c x_{k+1} = a x_k (mod 2^46) -c -c where 0 < x_k < 2^46 and 0 < a < 2^46. This scheme generates 2^44 numbers -c before repeating. The argument A is the same as 'a' in the above formula, -c and X is the same as x_0. A and X must be odd double precision integers -c in the range (1, 2^46). The N results are placed in Y and are normalized -c to be between 0 and 1. X is updated to contain the new seed, so that -c subsequent calls to VRANLC using the same arguments will generate a -c continuous sequence. If N is zero, only initialization is performed, and -c the variables X, A and Y are ignored. -c -c This routine is the standard version designed for scalar or RISC systems. -c However, it should produce the same results on any single processor -c computer with at least 48 mantissa bits in double precision floating point -c data. On 64 bit systems, double precision should be disabled. -c -c--------------------------------------------------------------------- - - implicit none - - integer i,n - double precision y,r23,r46,t23,t46,a,x,t1,t2,t3,t4,a1,a2,x1,x2,z - dimension y(*) - parameter (r23 = 0.5d0 ** 23, r46 = r23 ** 2, t23 = 2.d0 ** 23, - > t46 = t23 ** 2) - - -c--------------------------------------------------------------------- -c Break A into two parts such that A = 2^23 * A1 + A2. -c--------------------------------------------------------------------- - t1 = r23 * a - a1 = int (t1) - a2 = a - t23 * a1 - -c--------------------------------------------------------------------- -c Generate N results. This loop is not vectorizable. -c--------------------------------------------------------------------- - do i = 1, n - -c--------------------------------------------------------------------- -c Break X into two parts such that X = 2^23 * X1 + X2, compute -c Z = A1 * X2 + A2 * X1 (mod 2^23), and then -c X = 2^23 * Z + A2 * X2 (mod 2^46). -c--------------------------------------------------------------------- - t1 = r23 * x - x1 = int (t1) - x2 = x - t23 * x1 - t1 = a1 * x2 + a2 * x1 - t2 = int (r23 * t1) - z = t1 - t23 * t2 - t3 = t23 * z + a2 * x2 - t4 = int (r46 * t3) - x = t3 - t46 * t4 - y(i) = r46 * x - enddo - return - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - double precision t, now - - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - implicit none -CC external wtime -CC double precision wtime - - double precision t - double precision dvtime - include 'dtime.h' - data t/0.d0/ -c This function must measure wall clock time, not CPU time. -c Since there is no portable timer in Fortran (77) -c we call a routine compiled in C (though the C source may have -c to be tweaked). -c call wtime(t) -c The following is not ok for "official" results because it reports -c CPU time not wall clock time. It may be useful for developing/testing -c on timeshared Crays, though. -c call second(t) - - if(dvm_debug.ne.0) then - t=t+1.D0 - elapsed_time = t - else - elapsed_time = dvtime() - end if - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/Makefile deleted file mode 100644 index 8497efb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=sp -BENCHMARKU=SP - -include ../config/make.def -include ../sys/make.common - -SOURCES = sp.for \ - set_constants.for \ - initialize.for \ - exact_rhs.for \ - compute_rhs.for \ - verify.for \ - compute_errors.for \ - timers.for \ - print_result.for - -SOURCES_SINGLE = z_solve.for x_solve.for y_solve.for -SOURCES_MPI = x_solve_mpi.for y_solve_mpi.for z_solve_mpi.for - -OBJS = ${SOURCES:.for=.o} -OBJS_SINGLE = ${SOURCES_SINGLE:.for=.o} -OBJS_MPI = ${SOURCES_MPI:.for=.o} - -${PROGRAM}: config - @if [ $(VERSION) = MPI ] ; then \ - ${MAKE} MPI_VER; \ - else \ - ${MAKE} SINGLE_VER; \ - fi - -MPI_VER: $(OBJS) $(OBJS_MPI) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_MPI) - -SINGLE_VER: $(OBJS) $(OBJS_SINGLE) - ${FLINK} flink -shared-dvm -o ${PROGRAM} ${OBJS} $(OBJS_SINGLE) - -%.o: %.for npbparams.h header.h - ${F77} f ${FFLAGS} -c -o $@ $< - -clean: - rm -f npbparams.h - rm -f *.o *~ - rm -f *.cu *.cuf *.c *.f diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/TODO_make.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/TODO_make.bat deleted file mode 100644 index fabc282..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/TODO_make.bat +++ /dev/null @@ -1,12 +0,0 @@ -@echo off - -set CLASS=%1 -set OPT=%2 - -CALL ..\sys\setparams SP %CLASS% -CALL %F77% %OPT% sp 1>out_%CLASS%.txt 2>err_%CLASS%.txt -if exist sp.exe ( - copy sp.exe %BIN%\sp.%CLASS%.x.exe - del sp.exe -) - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_errors.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_errors.for deleted file mode 100644 index 8741a0c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_errors.for +++ /dev/null @@ -1,116 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine error_norm(rms) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function computes the norm of the difference between the -c computed solution and the exact solution -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, m, d - double precision xi, eta, zeta, u_exact(5), rms(5), add - double precision r1,r2,r3,r4,r5 - do m = 1, 5 - rms(m) = 0.0d0 - enddo - r1 = 0.0d0 - r2 = 0.0d0 - r3 = 0.0d0 - r4 = 0.0d0 - r5 = 0.0d0 -!DVM$ region -!DVM$ parallel (k,j,i) on u(*,i,j,k),private(zeta,eta,xi,add,u_exact,m) -!DVM$& ,reduction(SUM(r1),SUM(r2),SUM(r3),SUM(r4),SUM(r5)) -! DVM$& ,shadow_renew(u, rhs) - do k = 0, problem_size-1 - do j = 0, problem_size-1 - do i = 0, problem_size-1 - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - xi = dble(i) * dnxm1 - do m = 1, 5 - u_exact(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - - add = u(1,i,j,k)-u_exact(1) - r1 = r1 + add*add - add = u(2,i,j,k)-u_exact(2) - r2 = r2 + add*add - add = u(3,i,j,k)-u_exact(3) - r3 = r3 + add*add - add = u(4,i,j,k)-u_exact(4) - r4 = r4 + add*add - add = u(5,i,j,k)-u_exact(5) - r5 = r5 + add*add - end do - end do - end do -!DVM$ end region - - rms(1) = r1 - rms(2) = r2 - rms(3) = r3 - rms(4) = r4 - rms(5) = r5 - do m = 1, 5 - do d = 1, 3 - rms(m) = rms(m) / dble(grid_points(d)-2) - end do - rms(m) = dsqrt(rms(m)) - end do - - return - end - - - - subroutine rhs_norm(rms) - - include 'header.h' - - integer i, j, k, d, m - double precision rms(5), add - - do m = 1, 5 - rms(m) = 0.0d0 - enddo - -!DVM$ region -!DVM$ parallel (k,j,i) on u(*,i,j,k),private(add) -!DVM$& ,reduction(SUM(rms)) - do k = 1, nz2 - do j = 1, ny2 - do i = 1, nx2 - add = rhs(1,i,j,k) - rms(1) = rms(1) + add*add - add = rhs(2,i,j,k) - rms(2) = rms(2) + add*add - add = rhs(3,i,j,k) - rms(3) = rms(3) + add*add - add = rhs(4,i,j,k) - rms(4) = rms(4) + add*add - add = rhs(5,i,j,k) - rms(5) = rms(5) + add*add - end do - end do - end do -!DVM$ end region - do m = 1, 5 - do d = 1, 3 - rms(m) = rms(m) / dble(grid_points(d)-2) - end do - rms(m) = dsqrt(rms(m)) - end do - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_rhs.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_rhs.for deleted file mode 100644 index 9fb1ed0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/compute_rhs.for +++ /dev/null @@ -1,339 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine compute_rhs(aditional_comp) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, m - double precision aux, rho_inv, uijk, up1, um1, vijk, vp1, vm1, - > wijk, wp1, wm1,rhs_(5) - double precision t1, t2, t3, ac, ru1, uu, vv, ww,ac2inv - integer aditional_comp - - if (timeron) call timer_start(t_rhs) - -!DVM$ region out(us,vs,ws,qs,rho_i,speed,square) - -!DVM$ parallel (k,j,i) on u(*,i,j,k),private(rho_inv,aux,m) -!DVM$& ,shadow_renew(u(0:0,2:3,2:3,2:3)),SHADOW_COMPUTE - do k = 0, problem_size-1 - do j = 0, problem_size-1 - do i = 0, problem_size-1 - rho_inv = 1.0d0/u(1,i,j,k) - rho_i(i,j,k) = rho_inv - us(i,j,k) = u(2,i,j,k) * rho_inv - vs(i,j,k) = u(3,i,j,k) * rho_inv - ws(i,j,k) = u(4,i,j,k) * rho_inv - square(i,j,k) = 0.5d0* ( - > u(2,i,j,k)*u(2,i,j,k) + - > u(3,i,j,k)*u(3,i,j,k) + - > u(4,i,j,k)*u(4,i,j,k) ) * rho_inv - qs(i,j,k) = square(i,j,k) * rho_inv -c--------------------------------------------------------------------- -c (don't need speed and ainx until the lhs computation) -c--------------------------------------------------------------------- - aux = c1c2*rho_inv* (u(5,i,j,k) - square(i,j,k)) - speed(i,j,k) = dsqrt(aux) - do m = 1, 5 - rhs(m,i,j,k) = forcing(m,i,j,k) - end do - end do - end do - end do - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k),private(uijk,up1,um1,m -!DVM$& ,vijk,vp1,vm1,wijk,wp1,wm1,rhs_, -!DVM$& t1, t2, t3, ac, ru1, uu, vv, ww,ac2inv), CUDA_BLOCK(32,4) - do k = 1, nz2 - do j = 1, ny2 - do i = 1, nx2 - uijk = us(i,j,k) - up1 = us(i+1,j,k) - um1 = us(i-1,j,k) - - rhs_(1) = rhs(1,i,j,k) - rhs_(2) = rhs(2,i,j,k) - rhs_(3) = rhs(3,i,j,k) - rhs_(4) = rhs(4,i,j,k) - rhs_(5) = rhs(5,i,j,k) - - rhs_(1) = rhs_(1) + dx1tx1 * - > (u(1,i+1,j,k) - 2.0d0*u(1,i,j,k) + - > u(1,i-1,j,k)) - - > tx2 * (u(2,i+1,j,k) - u(2,i-1,j,k)) - - rhs_(2) = rhs_(2) + dx2tx1 * - > (u(2,i+1,j,k) - 2.0d0*u(2,i,j,k) + - > u(2,i-1,j,k)) + - > xxcon2*con43 * (up1 - 2.0d0*uijk + um1) - - > tx2 * (u(2,i+1,j,k)*up1 - - > u(2,i-1,j,k)*um1 + - > (u(5,i+1,j,k)- square(i+1,j,k)- - > u(5,i-1,j,k)+ square(i-1,j,k))* - > c2) - - rhs_(3) = rhs_(3) + dx3tx1 * - > (u(3,i+1,j,k) - 2.0d0*u(3,i,j,k) + - > u(3,i-1,j,k)) + - > xxcon2 * (vs(i+1,j,k) - 2.0d0*vs(i,j,k) + - > vs(i-1,j,k)) - - > tx2 * (u(3,i+1,j,k)*up1 - - > u(3,i-1,j,k)*um1) - - rhs_(4) = rhs_(4) + dx4tx1 * - > (u(4,i+1,j,k) - 2.0d0*u(4,i,j,k) + - > u(4,i-1,j,k)) + - > xxcon2 * (ws(i+1,j,k) - 2.0d0*ws(i,j,k) + - > ws(i-1,j,k)) - - > tx2 * (u(4,i+1,j,k)*up1 - - > u(4,i-1,j,k)*um1) - - rhs_(5) = rhs_(5) + dx5tx1 * - > (u(5,i+1,j,k) - 2.0d0*u(5,i,j,k) + - > u(5,i-1,j,k)) + - > xxcon3 * (qs(i+1,j,k) - 2.0d0*qs(i,j,k) + - > qs(i-1,j,k)) + - > xxcon4 * (up1*up1 - 2.0d0*uijk*uijk + - > um1*um1) + - > xxcon5 * (u(5,i+1,j,k)*rho_i(i+1,j,k) - - > 2.0d0*u(5,i,j,k)*rho_i(i,j,k) + - > u(5,i-1,j,k)*rho_i(i-1,j,k)) - - > tx2 * ( (c1*u(5,i+1,j,k) - - > c2*square(i+1,j,k))*up1 - - > (c1*u(5,i-1,j,k) - - > c2*square(i-1,j,k))*um1 ) - - if(i .eq. 1) then - do m = 1, 5 - rhs_(m) = rhs_(m)- dssp * - > ( 5.0d0*u(m,i,j,k) - 4.0d0*u(m,i+1,j,k) + - > u(m,i+2,j,k)) - end do - elseif(i .eq. 2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*u(m,i-1,j,k) + 6.0d0*u(m,i,j,k) - - > 4.0d0*u(m,i+1,j,k) + u(m,i+2,j,k)) - end do - elseif(i .ge. 3 .and. i .le. nx2-2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i-2,j,k) - 4.0d0*u(m,i-1,j,k) + - > 6.0*u(m,i,j,k) - 4.0d0*u(m,i+1,j,k) + - > u(m,i+2,j,k) ) - end do - elseif(i .eq. nx2-1) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i-2,j,k) - 4.0d0*u(m,i-1,j,k) + - > 6.0d0*u(m,i,j,k) - 4.0d0*u(m,i+1,j,k) ) - end do - elseif( i .eq. nx2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i-2,j,k) - 4.d0*u(m,i-1,j,k) + - > 5.d0*u(m,i,j,k) ) - end do - endif - - vijk = vs(i,j,k) - vp1 = vs(i,j+1,k) - vm1 = vs(i,j-1,k) - rhs_(1) = rhs_(1) + dy1ty1 * - > (u(1,i,j+1,k) - 2.0d0*u(1,i,j,k) + - > u(1,i,j-1,k)) - - > ty2 * (u(3,i,j+1,k) - u(3,i,j-1,k)) - rhs_(2) = rhs_(2) + dy2ty1 * - > (u(2,i,j+1,k) - 2.0d0*u(2,i,j,k) + - > u(2,i,j-1,k)) + - > yycon2 * (us(i,j+1,k) - 2.0d0*us(i,j,k) + - > us(i,j-1,k)) - - > ty2 * (u(2,i,j+1,k)*vp1 - - > u(2,i,j-1,k)*vm1) - rhs_(3) = rhs_(3) + dy3ty1 * - > (u(3,i,j+1,k) - 2.0d0*u(3,i,j,k) + - > u(3,i,j-1,k)) + - > yycon2*con43 * (vp1 - 2.0d0*vijk + vm1) - - > ty2 * (u(3,i,j+1,k)*vp1 - - > u(3,i,j-1,k)*vm1 + - > (u(5,i,j+1,k) - square(i,j+1,k) - - > u(5,i,j-1,k) + square(i,j-1,k)) - > *c2) - rhs_(4) = rhs_(4) + dy4ty1 * - > (u(4,i,j+1,k) - 2.0d0*u(4,i,j,k) + - > u(4,i,j-1,k)) + - > yycon2 * (ws(i,j+1,k) - 2.0d0*ws(i,j,k) + - > ws(i,j-1,k)) - - > ty2 * (u(4,i,j+1,k)*vp1 - - > u(4,i,j-1,k)*vm1) - rhs_(5) = rhs_(5) + dy5ty1 * - > (u(5,i,j+1,k) - 2.0d0*u(5,i,j,k) + - > u(5,i,j-1,k)) + - > yycon3 * (qs(i,j+1,k) - 2.0d0*qs(i,j,k) + - > qs(i,j-1,k)) + - > yycon4 * (vp1*vp1 - 2.0d0*vijk*vijk + - > vm1*vm1) + - > yycon5 * (u(5,i,j+1,k)*rho_i(i,j+1,k) - - > 2.0d0*u(5,i,j,k)*rho_i(i,j,k) + - > u(5,i,j-1,k)*rho_i(i,j-1,k)) - - > ty2 * ((c1*u(5,i,j+1,k) - - > c2*square(i,j+1,k)) * vp1 - - > (c1*u(5,i,j-1,k) - - > c2*square(i,j-1,k)) * vm1) - - if(j .eq. 1) then - do m = 1, 5 - rhs_(m) = rhs_(m)- dssp * - > ( 5.0d0*u(m,i,j,k) - 4.0d0*u(m,i,j+1,k) + - > u(m,i,j+2,k)) - end do - elseif(j .eq. 2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*u(m,i,j-1,k) + 6.0d0*u(m,i,j,k) - - > 4.0d0*u(m,i,j+1,k) + u(m,i,j+2,k)) - end do - elseif(j .ge. 3 .and. j .le. ny2-2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j-2,k) - 4.0d0*u(m,i,j-1,k) + - > 6.0*u(m,i,j,k) - 4.0d0*u(m,i,j+1,k) + - > u(m,i,j+2,k) ) - end do - elseif(j .eq. ny2-1) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j-2,k) - 4.0d0*u(m,i,j-1,k) + - > 6.0d0*u(m,i,j,k) - 4.0d0*u(m,i,j+1,k) ) - end do - elseif(j .eq. ny2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j-2,k) - 4.d0*u(m,i,j-1,k) + - > 5.d0*u(m,i,j,k) ) - end do - endif - - wijk = ws(i,j,k) - wp1 = ws(i,j,k+1) - wm1 = ws(i,j,k-1) - - rhs_(1) = rhs_(1) + dz1tz1 * - > (u(1,i,j,k+1) - 2.0d0*u(1,i,j,k) + - > u(1,i,j,k-1)) - - > tz2 * (u(4,i,j,k+1) - u(4,i,j,k-1)) - rhs_(2) = rhs_(2) + dz2tz1 * - > (u(2,i,j,k+1) - 2.0d0*u(2,i,j,k) + - > u(2,i,j,k-1)) + - > zzcon2 * (us(i,j,k+1) - 2.0d0*us(i,j,k) + - > us(i,j,k-1)) - - > tz2 * (u(2,i,j,k+1)*wp1 - - > u(2,i,j,k-1)*wm1) - rhs_(3) = rhs_(3) + dz3tz1 * - > (u(3,i,j,k+1) - 2.0d0*u(3,i,j,k) + - > u(3,i,j,k-1)) + - > zzcon2 * (vs(i,j,k+1) - 2.0d0*vs(i,j,k) + - > vs(i,j,k-1)) - - > tz2 * (u(3,i,j,k+1)*wp1 - - > u(3,i,j,k-1)*wm1) - rhs_(4) = rhs_(4) + dz4tz1 * - > (u(4,i,j,k+1) - 2.0d0*u(4,i,j,k) + - > u(4,i,j,k-1)) + - > zzcon2*con43 * (wp1 - 2.0d0*wijk + wm1) - - > tz2 * (u(4,i,j,k+1)*wp1 - - > u(4,i,j,k-1)*wm1 + - > (u(5,i,j,k+1) - square(i,j,k+1) - - > u(5,i,j,k-1) + square(i,j,k-1)) - > *c2) - rhs_(5) = rhs_(5) + dz5tz1 * - > (u(5,i,j,k+1) - 2.0d0*u(5,i,j,k) + - > u(5,i,j,k-1)) + - > zzcon3 * (qs(i,j,k+1) - 2.0d0*qs(i,j,k) + - > qs(i,j,k-1)) + - > zzcon4 * (wp1*wp1 - 2.0d0*wijk*wijk + - > wm1*wm1) + - > zzcon5 * (u(5,i,j,k+1)*rho_i(i,j,k+1) - - > 2.0d0*u(5,i,j,k)*rho_i(i,j,k) + - > u(5,i,j,k-1)*rho_i(i,j,k-1)) - - > tz2 * ( (c1*u(5,i,j,k+1) - - > c2*square(i,j,k+1))*wp1 - - > (c1*u(5,i,j,k-1) - - > c2*square(i,j,k-1))*wm1) - - if(k .eq. 1) then - do m = 1, 5 - rhs_(m) = rhs_(m)- dssp * - > ( 5.0d0*u(m,i,j,k) - 4.0d0*u(m,i,j,k+1) + - > u(m,i,j,k+2)) - end do - elseif(k .eq. 2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > (-4.0d0*u(m,i,j,k-1) + 6.0d0*u(m,i,j,k) - - > 4.0d0*u(m,i,j,k+1) + u(m,i,j,k+2)) - end do - elseif(k .ge. 3 .and. k .le. nz2-2) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j,k-2) - 4.0d0*u(m,i,j,k-1) + - > 6.0*u(m,i,j,k) - 4.0d0*u(m,i,j,k+1) + - > u(m,i,j,k+2) ) - end do - elseif(k .eq. nz2-1) then - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j,k-2) - 4.0d0*u(m,i,j,k-1) + - > 6.0d0*u(m,i,j,k) - 4.0d0*u(m,i,j,k+1) ) - end do - else - do m = 1, 5 - rhs_(m) = rhs_(m) - dssp * - > ( u(m,i,j,k-2) - 4.d0*u(m,i,j,k-1) + - > 5.d0*u(m,i,j,k) ) - end do - endif - - rhs_(1) = rhs_(1) * dt - rhs_(2) = rhs_(2) * dt - rhs_(3) = rhs_(3) * dt - rhs_(4) = rhs_(4) * dt - rhs_(5) = rhs_(5) * dt - - rhs(1,i,j,k) = rhs_(1) - rhs(2,i,j,k) = rhs_(2) - rhs(3,i,j,k) = rhs_(3) - rhs(4,i,j,k) = rhs_(4) - rhs(5,i,j,k) = rhs_(5) - - if(aditional_comp .eq. 1) then - ru1 = rho_i(i,j,k) - uu = us(i,j,k) - vv = vs(i,j,k) - ww = ws(i,j,k) - ac = speed(i,j,k) - ac2inv = ac*ac - - t1 = c2 / ac2inv * ( qs(i,j,k)*rhs_(1)-uu*rhs_(2)- - > vv*rhs_(3)- ww*rhs_(4) + rhs_(5) ) - t2 = bt * ru1 * ( uu * rhs_(1) - rhs_(2) ) - t3 = ( bt * ru1 * ac ) * t1 - - rhs(1,i,j,k) = rhs_(1) - t1 - rhs(2,i,j,k) = - ru1 * ( ww*rhs_(1) - rhs_(4)) - rhs(3,i,j,k) = ru1 * ( vv*rhs_(1) - rhs_(3)) - rhs(4,i,j,k) = - t2 + t3 - rhs(5,i,j,k) = t2 + t3 - endif - end do - end do - end do - -!DVM$ end region - if (timeron) call timer_stop(t_rhs) - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/exact_rhs.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/exact_rhs.for deleted file mode 100644 index 862aabd..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/exact_rhs.for +++ /dev/null @@ -1,307 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine exact_rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - - include 'header.h' - - double precision dtemp(5), xi, eta, zeta, dtpp - integer m, i, j, k, ip1, im1, jp1, p, p1, - > jm1, km1, kp1,z - double precision ue_(-2:2, 5), buf_(-2:2, 5),cuf_(-2:2),q_(-2:2) - - -!DVM$ region -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(m) - do k= 0, problem_size-1 - do j = 0, problem_size-1 - do i = 0, problem_size-1 - do m = 1, 5 - forcing(m,i,j,k) = 0.0d0 - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c xi-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m,dtemp -!DVM$& ,buf_,cuf_,q_,dtpp,z,ue_) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - do z = -2, 2 - xi = dble(i + z) * dnxm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,2) * buf_(z,2) - buf_(z,1) = cuf_(z) + buf_(z,3) * buf_(z,3) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > tx2*( ue_(1,2)-ue_(-1,2) )+ - > dx1tx1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - tx2 * ( - > (ue_(1,2)*buf_(1,2)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,2)*buf_(-1,2)+c2*(ue_(-1,5)-q_(-1))))+ - > xxcon1*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dx2tx1*( ue_(1,2)-2.0d0* ue_(0,2)+ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - tx2 * ( - > ue_(1,3)*buf_(1,2)-ue_(-1,3)*buf_(-1,2))+ - > xxcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dx3tx1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - tx2*( - > ue_(1,4)*buf_(1,2)-ue_(-1,4)*buf_(-1,2))+ - > xxcon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dx4tx1*( ue_(1,4)-2.0d0* ue_(0,4)+ ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - tx2*( - > buf_(1,2)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,2)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*xxcon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > xxcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > xxcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dx5tx1*( ue_(1,5)-2.0d0* ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(i .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(i .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(i .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(i .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c eta-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m,dtemp -!DVM$& ,buf_,cuf_,q_,dtpp,z,ue_) - do k = 1, problem_size- 2 - do j = 1, problem_size-2 - do i = 1, problem_size- 2 - zeta = dble(k) * dnzm1 - xi = dble(i) * dnxm1 - do z = -2, 2 - eta = dble(j + z) * dnym1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,3) * buf_(z,3) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,4) * buf_(z,4) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3) - > *ue_(z,3) + buf_(z,4) * ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > ty2*( ue_(1,3)-ue_(-1,3) )+ - > dy1ty1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - ty2*( - > ue_(1,2)*buf_(1,3)-ue_(-1,2)*buf_(-1,3))+ - > yycon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dy2ty1*( ue_(1,2)-2.0* ue_(0,2)+ ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - ty2*( - > (ue_(1,3)*buf_(1,3)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,3)*buf_(-1,3)+c2*(ue_(-1,5)-q_(-1))))+ - > yycon1*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dy3ty1*( ue_(1,3)-2.0d0*ue_(0,3) +ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - ty2*( - > ue_(1,4)*buf_(1,3)-ue_(-1,4)*buf_(-1,3))+ - > yycon2*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dy4ty1*( ue_(1,4)-2.0d0*ue_(0,4)+ ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - ty2*( - > buf_(1,3)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,3)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*yycon3*(buf_(1,1)-2.0d0*buf_(0,1)+ - > buf_(-1,1))+ - > yycon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > yycon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dy5ty1*(ue_(1,5)-2.0d0*ue_(0,5)+ue_(-1,5)) - do m = 1, 5 - if(j .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(j .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(j .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(j .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c zeta-direction flux differences -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(zeta,eta,xi,m -!DVM$& ,buf_,cuf_,q_,ue_,dtpp,dtemp,z) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - xi = dble(i) * dnxm1 - eta = dble(j) * dnym1 - do z = -2, 2 - zeta = dble(k + z) * dnzm1 - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - ue_(z,m) = dtemp(m) - end do - dtpp = 1.0d0 / dtemp(1) - do m = 2, 5 - buf_(z, m) = dtpp * dtemp(m) - end do - - cuf_(z) = buf_(z,4) * buf_(z,4) - buf_(z,1) = cuf_(z) + buf_(z,2) * buf_(z,2) + - > buf_(z,3) * buf_(z,3) - q_(z) = 0.5d0*(buf_(z,2)*ue_(z,2) + buf_(z,3)* - > ue_(z,3) + buf_(z,4)*ue_(z,4)) - enddo - - forcing(1,i,j,k) = forcing(1,i,j,k) - - > tz2*( ue_(1,4)-ue_(-1,4) )+ - > dz1tz1*(ue_(1,1)-2.0d0*ue_(0,1)+ue_(-1,1)) - - forcing(2,i,j,k) = forcing(2,i,j,k) - tz2 * ( - > ue_(1,2)*buf_(1,4)-ue_(-1,2)*buf_(-1,4))+ - > zzcon2*(buf_(1,2)-2.0d0*buf_(0,2)+buf_(-1,2))+ - > dz2tz1*( ue_(1,2)-2.0d0* ue_(0,2)+ ue_(-1,2)) - - forcing(3,i,j,k) = forcing(3,i,j,k) - tz2 * ( - > ue_(1,3)*buf_(1,4)-ue_(-1,3)*buf_(-1,4))+ - > zzcon2*(buf_(1,3)-2.0d0*buf_(0,3)+buf_(-1,3))+ - > dz3tz1*(ue_(1,3)-2.0d0*ue_(0,3)+ue_(-1,3)) - - forcing(4,i,j,k) = forcing(4,i,j,k) - tz2 * ( - > (ue_(1,4)*buf_(1,4)+c2*(ue_(1,5)-q_(1)))- - > (ue_(-1,4)*buf_(-1,4)+c2*(ue_(-1,5)-q_(-1))))+ - > zzcon1*(buf_(1,4)-2.0d0*buf_(0,4)+buf_(-1,4))+ - > dz4tz1*( ue_(1,4)-2.0d0*ue_(0,4) +ue_(-1,4)) - - forcing(5,i,j,k) = forcing(5,i,j,k) - tz2 * ( - > buf_(1,4)*(c1*ue_(1,5)-c2*q_(1))- - > buf_(-1,4)*(c1*ue_(-1,5)-c2*q_(-1)))+ - > 0.5d0*zzcon3*(buf_(1,1)-2.0d0*buf_(0,1) - > +buf_(-1,1))+ - > zzcon4*(cuf_(1)-2.0d0*cuf_(0)+cuf_(-1))+ - > zzcon5*(buf_(1,5)-2.0d0*buf_(0,5)+buf_(-1,5))+ - > dz5tz1*( ue_(1,5)-2.0d0*ue_(0,5)+ ue_(-1,5)) - do m = 1, 5 - if(k .eq. 1) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (5.0d0*ue_(0,m) - 4.0d0*ue_(1,m) +ue_(2,m)) - else if(k .eq. 2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (-4.0d0*ue_(-1,m) + 6.0d0*ue_(0,m) - - > 4.0d0*ue_(1,m) + ue_(2,m)) - else if(k .eq. problem_size-3) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m)) - else if(k .eq. problem_size-2) then - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp * - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + 5.0d0*ue_(0,m)) - else - forcing(m,i,j,k) = forcing(m,i,j,k) - dssp* - > (ue_(-2,m) - 4.0d0*ue_(-1,m) + - > 6.0d0*ue_(0,m) - 4.0d0*ue_(1,m) + ue_(2,m)) - endif - end do - end do - end do - end do - -c--------------------------------------------------------------------- -c now change the sign of the forcing function, -c--------------------------------------------------------------------- -!DVM$ parallel (k,j,i) on forcing(*,i,j,k),private(m) - do k = 1, problem_size-2 - do j = 1, problem_size-2 - do i = 1, problem_size-2 - do m = 1, 5 - forcing(m,i,j,k) = -1.d0 * forcing(m,i,j,k) - end do - end do - end do - end do -!DVM$ end region - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/header.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/header.h deleted file mode 100644 index d8fa07c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/header.h +++ /dev/null @@ -1,120 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - -c--------------------------------------------------------------------- -c The following include file is generated automatically by the -c "setparams" utility. It defines -c problem_size: 12, 64, 102, 162 (for class T, A, B, C) -c dt_default: default time step for this problem size if no -c config file -c niter_default: default number of iterations for this problem size -c--------------------------------------------------------------------- - - include 'npbparams.h' - - integer grid_points(3), nx2, ny2, nz2,stage_n - common /global/ grid_points, nx2, ny2, nz2, timeron - - double precision tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3, - & dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, - & dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt, - & ce(5,13), dxmax, dymax, dzmax, xxcon1, xxcon2, - & xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1, - & dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4, - & yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1, - & zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1, - & dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1, - & dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2, - & c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1, bt, - & dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1, - & c2dtty1, c2dttz1, comz1, comz4, comz5, comz6, - & c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16 - - common /constants/ tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3, - & dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, - & dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt, - & ce, dxmax, dymax, dzmax, xxcon1, xxcon2, - & xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1, - & dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4, - & yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1, - & zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1, - & dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1, - & dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2, - & c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1, bt, - & dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1, - & c2dtty1, c2dttz1, comz1, comz4, comz5, comz6, - & c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16, - & stage_n - - - integer IMAX, JMAX, KMAX, IMAXP, JMAXP - - parameter (IMAX=problem_size,JMAX=problem_size,KMAX=problem_size) - parameter (IMAXP=IMAX/2*2,JMAXP=JMAX/2*2) - -c--------------------------------------------------------------------- -c To improve cache performance, first two dimensions padded by 1 -c for even number sizes only -c--------------------------------------------------------------------- - double precision - & u (5, 0:IMAXP, 0:JMAXP, 0:KMAX), - & us ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & vs ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & ws ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & qs ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & rho_i ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & speed ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & square ( 0:IMAXP, 0:JMAXP, 0:KMAX), - & rhs (5, 0:IMAXP, 0:JMAXP, 0:KMAX), - & forcing (5, 0:IMAXP, 0:JMAXP, 0:KMAX) - - common /fields/ u, us, vs, ws, qs, rho_i, speed, square, - & rhs, forcing - - double precision cv(0:problem_size-1), rhon(0:problem_size-1), - & rhos(0:problem_size-1), rhoq(0:problem_size-1), - & cuf(0:problem_size-1), q(0:problem_size-1), - & ue(0:problem_size-1,5), buf(0:problem_size-1,5), - & rhon_(0:problem_size-1,0:problem_size-1), - & cv_(0:problem_size-1,0:problem_size-1) - common /work_1d/ cv,rhon,rhos,rhoq, cuf, q, ue, buf,rhon_,cv_ - - double precision - & lhs(0:2,1:5,0:IMAXP, 0:JMAXP, 0:KMAX) - common /work_lhs/ lhs - -c----------------------------------------------------------------------- -c Timer constants -c----------------------------------------------------------------------- - integer t_rhsx,t_rhsy,t_rhsz,t_xsolve,t_ysolve,t_zsolve, - & t_rdis1,t_rdis2,t_tzetar,t_ninvr,t_pinvr,t_add, - & t_rhs,t_txinvr,t_last,t_total - logical timeron - parameter (t_total = 1) - parameter (t_rhsx = 2) - parameter (t_rhsy = 3) - parameter (t_rhsz = 4) - parameter (t_rhs = 5) - parameter (t_xsolve = 6) - parameter (t_ysolve = 7) - parameter (t_zsolve = 8) - parameter (t_rdis1 = 9) - parameter (t_rdis2 = 10) - parameter (t_txinvr = 11) - parameter (t_pinvr = 12) - parameter (t_ninvr = 13) - parameter (t_tzetar = 14) - parameter (t_add = 15) - parameter (t_last = 15) - -!DVM$ SHADOW lhs(0:0,0:0,2:2,2:2,2:2) -!DVM$ SHADOW (0:0,2:3,2:3,2:3) :: rhs,forcing,u -!DVM$ SHADOW (2:3,2:3,2:3) :: qs,us,ws,vs,speed,square,rho_i - -!DVM$ DISTRIBUTE u(*,BLOCK,BLOCK,BLOCK) -!DVM$ ALIGN (*,i,j,k) WITH u(*,i,j,k) :: forcing,rhs -!DVM$ ALIGN (*,*,i,j,k) WITH u(*,i,j,k) :: lhs -!DVM$ ALIGN (i,j,k) WITH u(*,i,j,k) :: square,speed,rho_i,qs,ws,vs,us diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/initialize.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/initialize.for deleted file mode 100644 index 0a4a1e7..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/initialize.for +++ /dev/null @@ -1,189 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine initialize - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c This subroutine initializes the field variable u using -c tri-linear transfinite interpolation of the boundary values -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, m, ix, iy, iz - double precision xi, eta, zeta, Pface(5,3,2), Pxi, Peta, - > Pzeta, temp(5) - -!DVM$ region -!DVM$ parallel (k,j,i) on u(*,i,j,k), private(zeta, eta, xi, ix, pxi, m, -!DVM$& pface, iy, peta, iz, pzeta, temp) - do k = 0, problem_size-1 - do j = 0, problem_size-1 - do i = 0, problem_size-1 - u(1,i,j,k) = 1.0 - u(2,i,j,k) = 0.0 - u(3,i,j,k) = 0.0 - u(4,i,j,k) = 0.0 - u(5,i,j,k) = 1.0 - - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - xi = dble(i) * dnxm1 - - do ix = 1, 2 - Pxi = dble(ix-1) - - do m = 1, 5 - Pface(m,1,ix) = ce(m,1) + - > Pxi*(ce(m,2)+Pxi*(ce(m,5) +Pxi*(ce(m,8) + - > Pxi*ce(m,11))))+eta*(ce(m,3) + eta*(ce(m,6) - > + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - end do - - do iy = 1, 2 - Peta = dble(iy-1) - do m = 1, 5 - Pface(m,2,iy) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + - > xi*ce(m,11)))) + - > Peta*(ce(m,3) +Peta*(ce(m,6) +Peta*(ce(m,9)+ - > Peta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - end do - - do iz = 1, 2 - Pzeta = dble(iz-1) - do m = 1, 5 - Pface(m,3,iz) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + - > xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9)+ - > eta*ce(m,12))))+ - > Pzeta*(ce(m,4) + Pzeta*(ce(m,7) + Pzeta*(ce(m,10) + - > Pzeta*ce(m,13)))) - end do - end do - - do m = 1, 5 - Pxi = xi * Pface(m,1,2) + - > (1.0d0-xi) * Pface(m,1,1) - Peta = eta * Pface(m,2,2) + - > (1.0d0-eta) * Pface(m,2,1) - Pzeta = zeta * Pface(m,3,2) + - > (1.0d0-zeta) * Pface(m,3,1) - - u(m,i,j,k) = Pxi + Peta + Pzeta - - > Pxi*Peta - Pxi*Pzeta - Peta*Pzeta + - > Pxi*Peta*Pzeta - end do - - zeta = dble(k) * dnzm1 - eta = dble(j) * dnym1 - xi = 0.0d0 - if( i .eq. 0) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - - xi = 1.0d0 - if( i .eq. problem_size-1) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - - zeta = dble(k) * dnzm1 - eta = 0.0d0 - xi = dble(i) * dnxm1 - if( j .eq. 0) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12)))) - > +zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - - eta = 1.0d0 - if( j .eq. problem_size-1) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12)))) - > +zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - - zeta = 0.0d0 - eta = dble(j) * dnym1 - xi = dble(i) *dnxm1 - if( k .eq. 0) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12)))) - > +zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - - zeta = 1.0d0 - if( k .eq. problem_size-1) then -! call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - temp(m) = ce(m,1) + - > xi*(ce(m,2)+xi*(ce(m,5)+xi*(ce(m,8)+xi*ce(m,11))))+ - > eta*(ce(m,3)+eta*(ce(m,6)+eta*(ce(m,9)+eta*ce(m,12)))) - > +zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - end do - do m = 1, 5 - u(m,i,j,k) = temp(m) - end do - endif - end do - end do - end do -!DVM$ end region - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/print_result.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/print_result.for deleted file mode 100644 index 7123b64..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/print_result.for +++ /dev/null @@ -1,121 +0,0 @@ - subroutine print_results(name, class, n1, n2, n3, niter, - > t, mops, optype, verified, npbversion, - > compiletime, cs1, cs2, cs3, cs4, cs5, cs6, cs7) - - implicit none - character name*(*) - character class*1 - integer n1, n2, n3, niter, j - double precision t, mops - character optype*24, size*15 - logical verified - character*(*) npbversion, compiletime, - > cs1, cs2, cs3, cs4, cs5, cs6, cs7 - integer num_threads, max_threads, i - max_threads = 1 - num_threads = 1 - - write (*, 2) name - 2 format(//, ' ', A, ' Benchmark Completed.') - - write (*, 3) Class - 3 format(' Class = ', 12x, a12) - -c If this is not a grid-based problem (EP, FT, CG), then -c we only print n1, which contains some measure of the -c problem size. In that case, n2 and n3 are both zero. -c Otherwise, we print the grid size n1xn2xn3 - - if ((n2 .eq. 0) .and. (n3 .eq. 0)) then - if (name(1:2) .eq. 'EP') then - write(size, '(f15.0)' ) 2.d0**n1 - j = 15 - if (size(j:j) .eq. '.') j = j - 1 - write (*,42) size(1:j) - 42 format(' Size = ',9x, a15) - else - write (*,44) n1 - 44 format(' Size = ',12x, i12) - endif - else - write (*, 4) n1,n2,n3 - 4 format(' Size = ',9x, i4,'x',i4,'x',i4) - endif - - write (*, 5) niter - 5 format(' Iterations = ', 12x, i12) - - write (*, 6) t - 6 format(' Time in seconds = ',12x, f12.2) - - write (*,7) num_threads - 7 format(' Total threads = ', 12x, i12) - - write (*,8) max_threads - 8 format(' Avail threads = ', 12x, i12) - - if (num_threads .ne. max_threads) write (*,88) - 88 format(' Warning: Threads used differ from threads available') - - write (*,9) mops - 9 format(' Mop/s total = ',12x, f12.2) - - write (*,10) mops/float( num_threads ) - 10 format(' Mop/s/thread = ', 12x, f12.2) - - write(*, 11) optype - 11 format(' Operation type = ', a24) - - if (verified) then - write(*,12) ' SUCCESSFUL' - else - write(*,12) 'UNSUCCESSFUL' - endif - 12 format(' Verification = ', 12x, a) - - write(*,13) npbversion - 13 format(' Version = ', 12x, a12) - - write(*,14) compiletime - 14 format(' Compile date = ', 12x, a12) - - - write (*,121) cs1 - 121 format(/, ' Compile options:', /, - > ' F77 = ', A) - - write (*,122) cs2 - 122 format(' FLINK = ', A) - - write (*,123) cs3 - 123 format(' F_LIB = ', A) - - write (*,124) cs4 - 124 format(' F_INC = ', A) - - write (*,125) cs5 - 125 format(' FFLAGS = ', A) - - write (*,126) cs6 - 126 format(' FLINKFLAGS = ', A) - - write(*, 127) cs7 - 127 format(' RAND = ', A) - - write (*,130) - 130 format(//' Please send all errors/feedbacks to:'// - > ' NPB Development Team'/ - > ' npb@nas.nasa.gov'//) -c 130 format(//' Please send the results of this run to:'// -c > ' NPB Development Team '/ -c > ' Internet: npb@nas.nasa.gov'/ -c > ' '/ -c > ' If email is not available, send this to:'// -c > ' MS T27A-1'/ -c > ' NASA Ames Research Center'/ -c > ' Moffett Field, CA 94035-1000'// -c > ' Fax: 650-604-3957'//) - - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/set_constants.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/set_constants.for deleted file mode 100644 index f1b8a87..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/set_constants.for +++ /dev/null @@ -1,202 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine set_constants - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - ce(1,1) = 2.0d0 - ce(1,2) = 0.0d0 - ce(1,3) = 0.0d0 - ce(1,4) = 4.0d0 - ce(1,5) = 5.0d0 - ce(1,6) = 3.0d0 - ce(1,7) = 0.5d0 - ce(1,8) = 0.02d0 - ce(1,9) = 0.01d0 - ce(1,10) = 0.03d0 - ce(1,11) = 0.5d0 - ce(1,12) = 0.4d0 - ce(1,13) = 0.3d0 - - ce(2,1) = 1.0d0 - ce(2,2) = 0.0d0 - ce(2,3) = 0.0d0 - ce(2,4) = 0.0d0 - ce(2,5) = 1.0d0 - ce(2,6) = 2.0d0 - ce(2,7) = 3.0d0 - ce(2,8) = 0.01d0 - ce(2,9) = 0.03d0 - ce(2,10) = 0.02d0 - ce(2,11) = 0.4d0 - ce(2,12) = 0.3d0 - ce(2,13) = 0.5d0 - - ce(3,1) = 2.0d0 - ce(3,2) = 2.0d0 - ce(3,3) = 0.0d0 - ce(3,4) = 0.0d0 - ce(3,5) = 0.0d0 - ce(3,6) = 2.0d0 - ce(3,7) = 3.0d0 - ce(3,8) = 0.04d0 - ce(3,9) = 0.03d0 - ce(3,10) = 0.05d0 - ce(3,11) = 0.3d0 - ce(3,12) = 0.5d0 - ce(3,13) = 0.4d0 - - ce(4,1) = 2.0d0 - ce(4,2) = 2.0d0 - ce(4,3) = 0.0d0 - ce(4,4) = 0.0d0 - ce(4,5) = 0.0d0 - ce(4,6) = 2.0d0 - ce(4,7) = 3.0d0 - ce(4,8) = 0.03d0 - ce(4,9) = 0.05d0 - ce(4,10) = 0.04d0 - ce(4,11) = 0.2d0 - ce(4,12) = 0.1d0 - ce(4,13) = 0.3d0 - - ce(5,1) = 5.0d0 - ce(5,2) = 4.0d0 - ce(5,3) = 3.0d0 - ce(5,4) = 2.0d0 - ce(5,5) = 0.1d0 - ce(5,6) = 0.4d0 - ce(5,7) = 0.3d0 - ce(5,8) = 0.05d0 - ce(5,9) = 0.04d0 - ce(5,10) = 0.03d0 - ce(5,11) = 0.1d0 - ce(5,12) = 0.3d0 - ce(5,13) = 0.2d0 - - c1 = 1.4d0 - c2 = 0.4d0 - c3 = 0.1d0 - c4 = 1.0d0 - c5 = 1.4d0 - - bt = dsqrt(0.5d0) - - dnxm1 = 1.0d0 / dble(problem_size-1) - dnym1 = 1.0d0 / dble(problem_size-1) - dnzm1 = 1.0d0 / dble(problem_size-1) - - c1c2 = c1 * c2 - c1c5 = c1 * c5 - c3c4 = c3 * c4 - c1345 = c1c5 * c3c4 - - conz1 = (1.0d0-c1c5) - - tx1 = 1.0d0 / (dnxm1 * dnxm1) - tx2 = 1.0d0 / (2.0d0 * dnxm1) - tx3 = 1.0d0 / dnxm1 - - ty1 = 1.0d0 / (dnym1 * dnym1) - ty2 = 1.0d0 / (2.0d0 * dnym1) - ty3 = 1.0d0 / dnym1 - - tz1 = 1.0d0 / (dnzm1 * dnzm1) - tz2 = 1.0d0 / (2.0d0 * dnzm1) - tz3 = 1.0d0 / dnzm1 - - dx1 = 0.75d0 - dx2 = 0.75d0 - dx3 = 0.75d0 - dx4 = 0.75d0 - dx5 = 0.75d0 - - dy1 = 0.75d0 - dy2 = 0.75d0 - dy3 = 0.75d0 - dy4 = 0.75d0 - dy5 = 0.75d0 - - dz1 = 1.0d0 - dz2 = 1.0d0 - dz3 = 1.0d0 - dz4 = 1.0d0 - dz5 = 1.0d0 - - dxmax = dmax1(dx3, dx4) - dymax = dmax1(dy2, dy4) - dzmax = dmax1(dz2, dz3) - - dssp = 0.25d0 * dmax1(dx1, dmax1(dy1, dz1) ) - - c4dssp = 4.0d0 * dssp - c5dssp = 5.0d0 * dssp - - dttx1 = dt*tx1 - dttx2 = dt*tx2 - dtty1 = dt*ty1 - dtty2 = dt*ty2 - dttz1 = dt*tz1 - dttz2 = dt*tz2 - - c2dttx1 = 2.0d0*dttx1 - c2dtty1 = 2.0d0*dtty1 - c2dttz1 = 2.0d0*dttz1 - - dtdssp = dt*dssp - - comz1 = dtdssp - comz4 = 4.0d0*dtdssp - comz5 = 5.0d0*dtdssp - comz6 = 6.0d0*dtdssp - - c3c4tx3 = c3c4*tx3 - c3c4ty3 = c3c4*ty3 - c3c4tz3 = c3c4*tz3 - - dx1tx1 = dx1*tx1 - dx2tx1 = dx2*tx1 - dx3tx1 = dx3*tx1 - dx4tx1 = dx4*tx1 - dx5tx1 = dx5*tx1 - - dy1ty1 = dy1*ty1 - dy2ty1 = dy2*ty1 - dy3ty1 = dy3*ty1 - dy4ty1 = dy4*ty1 - dy5ty1 = dy5*ty1 - - dz1tz1 = dz1*tz1 - dz2tz1 = dz2*tz1 - dz3tz1 = dz3*tz1 - dz4tz1 = dz4*tz1 - dz5tz1 = dz5*tz1 - - c2iv = 2.5d0 - con43 = 4.0d0/3.0d0 - con16 = 1.0d0/6.0d0 - - xxcon1 = c3c4tx3*con43*tx3 - xxcon2 = c3c4tx3*tx3 - xxcon3 = c3c4tx3*conz1*tx3 - xxcon4 = c3c4tx3*con16*tx3 - xxcon5 = c3c4tx3*c1c5*tx3 - - yycon1 = c3c4ty3*con43*ty3 - yycon2 = c3c4ty3*ty3 - yycon3 = c3c4ty3*conz1*ty3 - yycon4 = c3c4ty3*con16*ty3 - yycon5 = c3c4ty3*c1c5*ty3 - - zzcon1 = c3c4tz3*con43*tz3 - zzcon2 = c3c4tz3*tz3 - zzcon3 = c3c4tz3*conz1*tz3 - zzcon4 = c3c4tz3*con16*tz3 - zzcon5 = c3c4tz3*c1c5*tz3 - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/sp.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/sp.for deleted file mode 100644 index fb9c2cf..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/sp.for +++ /dev/null @@ -1,231 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3.1 ! -! ! -! D V M H V E R S I O N ! -! ! -! S P ! -! ! -!-------------------------------------------------------------------------! -!-------------------------------------------------------------------------! - -c--------------------------------------------------------------------- -c -c Authors: -c Original: -c R. Van der Wijngaart -c W. Saphir -c H. Jin -c Optimize for DVMH: -c Kolganov A.S. -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- - program SP -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, niter, step, fstatus, n3 - external timer_read - double precision mflops, t, tmax, timer_read, trecs(t_last) - logical verified - character class - character t_names(t_last)*8 - -c--------------------------------------------------------------------- -c Read input file (if it exists), else take -c defaults from parameters -c--------------------------------------------------------------------- - - open (unit=2,file='timer.flag',status='old', iostat=fstatus) - if (fstatus .eq. 0) then - timeron = .true. - t_names(t_total) = 'total' - t_names(t_rhsx) = 'rhsx' - t_names(t_rhsy) = 'rhsy' - t_names(t_rhsz) = 'rhsz' - t_names(t_rhs) = 'rhs' - t_names(t_xsolve) = 'xsolve' - t_names(t_ysolve) = 'ysolve' - t_names(t_zsolve) = 'zsolve' - t_names(t_rdis1) = 'redist1' - t_names(t_rdis2) = 'redist2' - t_names(t_tzetar) = 'tzetar' - t_names(t_ninvr) = 'ninvr' - t_names(t_pinvr) = 'pinvr' - t_names(t_txinvr) = 'txinvr' - t_names(t_add) = 'add' - close(2) - else - timeron = .false. - endif - - write(*, 1000) - open (unit=2,file='inputsp.data',status='old', iostat=fstatus) - - if (fstatus .eq. 0) then - write(*,233) - 233 format(' Reading from input file inputsp.data') - read (2,*) niter - read (2,*) dt - read (2,*) grid_points(1), grid_points(2), grid_points(3) - close(2) - else - write(*,234) - niter = niter_default - dt = dt_default - grid_points(1) = problem_size - grid_points(2) = problem_size - grid_points(3) = problem_size - endif - 234 format(' No input file inputsp.data. Using compiled defaults') - open (unit = 2,file = 'inputStage',status = 'old',iostat = fstat - &us) - if (fstatus .eq. 0) then - read (unit = 2,fmt = *) stage_n - close (unit = 2) - else - stage_n = 0 - endif - write(*,*) 'stage = ', stage_n - - write(*, 1001) problem_size, problem_size, problem_size - write(*, 1002) niter, dt - write(*, *) - - 1000 format(//, ' NAS Parallel Benchmarks (NPB3.3.1-DVMH)', - > ' - SP Benchmark', /) - 1001 format(' Size: ', i4, 'x', i4, 'x', i4) - 1002 format(' Iterations: ', i4, ' dt: ', F11.7) - 1003 format(' Number of available threads: ', i5) - - if ( (problem_size .gt. IMAX) .or. - > (problem_size .gt. JMAX) .or. - > (problem_size .gt. KMAX) ) then - print *, (grid_points(i),i=1,3) - print *,' Problem size too big for compiled array sizes' - goto 999 - endif - nx2 = problem_size - 2 - ny2 = problem_size - 2 - nz2 = problem_size - 2 - - call set_constants - call exact_rhs - - call initialize - call adi_first - call adi_first - call initialize - - do i = 1, t_last - call timer_clear(i) - end do - call timer_start(1) -!DVM$ BARRIER - do step = 1, niter - - if (mod(step, 20) .eq. 0 .or. step .eq. 1) then - write(*, 200) step - 200 format(' Time step ', i4) - endif - - call adi - - end do - call timer_stop(1) - tmax = timer_read(1) - - call verify(niter, class, verified) - - if( tmax .ne. 0. ) then - n3 = problem_size*problem_size*problem_size - t = (problem_size+problem_size+problem_size)/3.0 - mflops = (881.174 * float( n3 ) - > -4683.91 * t**2 - > +11484.5 * t - > -19272.4) * float( niter ) / (tmax*1000000.0d0) - else - mflops = 0.0 - endif - - call print_results('SP', class, problem_size, - > problem_size, problem_size, niter, - > tmax, mflops, ' floating point', - > verified, npbversion,compiletime, cs1, cs2, cs3, cs4, cs5, - > cs6, '(none)') - -c--------------------------------------------------------------------- -c More timers -c--------------------------------------------------------------------- - if (.not.timeron) goto 999 - - do i=1, t_last - trecs(i) = timer_read(i) - end do - if (tmax .eq. 0.0) tmax = 1.0 - - write(*,800) - 800 format(' SECTION Time (secs)') - - do i=1, t_last - write(*,810) t_names(i), trecs(i), trecs(i)*100./tmax - if (i.eq.t_rhs) then - t = trecs(t_rhsx) + trecs(t_rhsy) + trecs(t_rhsz) - write(*,820) 'sub-rhs', t, t*100./tmax - t = trecs(t_rhs) - t - write(*,820) 'rest-rhs', t, t*100./tmax - elseif (i.eq.t_zsolve) then - t = trecs(t_zsolve) - trecs(t_rdis1) - trecs(t_rdis2) - write(*,820) 'sub-zsol', t, t*100./tmax - elseif (i.eq.t_rdis2) then - t = trecs(t_rdis1) + trecs(t_rdis2) - write(*,820) 'redist', t, t*100./tmax - endif - 810 format(2x,a8,':',f9.3,' (',f6.2,'%)') - 820 format(' --> ',a8,':',f9.3,' (',f6.2,'%)') - end do - - 999 continue - - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine adi_first - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - call compute_rhs(1) - call x_solve - call y_solve - call z_solve - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine adi - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -!DVM$ interval 1 - call compute_rhs(1) -!DVM$ end interval -!DVM$ interval 12 - call x_solve -!DVM$ end interval -!DVM$ interval 13 - call y_solve -!DVM$ end interval -!DVM$ interval 14 - call z_solve -!DVM$ end interval - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/timers.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/timers.for deleted file mode 100644 index f60983a..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/timers.for +++ /dev/null @@ -1,99 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_clear(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - elapsed(n) = 0.0 - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_start(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - start(n) = elapsed_time() - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine timer_stop(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - external elapsed_time - double precision elapsed_time - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - double precision t, now - now = elapsed_time() - t = now - start(n) - elapsed(n) = elapsed(n) + t - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function timer_read(n) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - integer n - double precision start(64), elapsed(64) - common /tt/ start, elapsed - - timer_read = elapsed(n) - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision function elapsed_time() - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - - double precision t,dvtime - t = dvtime() - elapsed_time = t - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/verify.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/verify.for deleted file mode 100644 index 1201002..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/verify.for +++ /dev/null @@ -1,356 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine verify(no_time_steps, class, verified) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c verification routine -c--------------------------------------------------------------------- - - include 'header.h' - - double precision xcrref(5),xceref(5),xcrdif(5),xcedif(5), - > epsilon, xce(5), xcr(5), dtref - integer m, no_time_steps - character class - logical verified - -c--------------------------------------------------------------------- -c tolerance level -c--------------------------------------------------------------------- - epsilon = 1.0d-08 - -c--------------------------------------------------------------------- -c compute the error norm and the residual norm, and exit if not printing -c--------------------------------------------------------------------- - - call error_norm(xce) - call compute_rhs(0) - call rhs_norm(xcr) - - do m = 1, 5 - xcr(m) = xcr(m) / dt - enddo - - class = 'U' - verified = .true. - - do m = 1,5 - xcrref(m) = 1.0 - xceref(m) = 1.0 - end do - -c--------------------------------------------------------------------- -c reference data for 12X12X12 grids after 100 time steps, with DT = 1.50d-02 -c--------------------------------------------------------------------- - if ( (problem_size .eq. 12 ) .and. - > (problem_size .eq. 12 ) .and. - > (problem_size .eq. 12 ) .and. - > (no_time_steps .eq. 100 )) then - - class = 'S' - dtref = 1.5d-2 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 2.7470315451339479d-02 - xcrref(2) = 1.0360746705285417d-02 - xcrref(3) = 1.6235745065095532d-02 - xcrref(4) = 1.5840557224455615d-02 - xcrref(5) = 3.4849040609362460d-02 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 2.7289258557377227d-05 - xceref(2) = 1.0364446640837285d-05 - xceref(3) = 1.6154798287166471d-05 - xceref(4) = 1.5750704994480102d-05 - xceref(5) = 3.4177666183390531d-05 - - -c--------------------------------------------------------------------- -c reference data for 36X36X36 grids after 400 time steps, with DT = 1.5d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 36) .and. - > (problem_size .eq. 36) .and. - > (problem_size .eq. 36) .and. - > (no_time_steps . eq. 400) ) then - - class = 'W' - dtref = 1.5d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.1893253733584d-02 - xcrref(2) = 0.1717075447775d-03 - xcrref(3) = 0.2778153350936d-03 - xcrref(4) = 0.2887475409984d-03 - xcrref(5) = 0.3143611161242d-02 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 0.7542088599534d-04 - xceref(2) = 0.6512852253086d-05 - xceref(3) = 0.1049092285688d-04 - xceref(4) = 0.1128838671535d-04 - xceref(5) = 0.1212845639773d-03 - -c--------------------------------------------------------------------- -c reference data for 64X64X64 grids after 400 time steps, with DT = 1.5d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 64) .and. - > (problem_size .eq. 64) .and. - > (problem_size .eq. 64) .and. - > (no_time_steps . eq. 400) ) then - - class = 'A' - dtref = 1.5d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 2.4799822399300195d0 - xcrref(2) = 1.1276337964368832d0 - xcrref(3) = 1.5028977888770491d0 - xcrref(4) = 1.4217816211695179d0 - xcrref(5) = 2.1292113035138280d0 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 1.0900140297820550d-04 - xceref(2) = 3.7343951769282091d-05 - xceref(3) = 5.0092785406541633d-05 - xceref(4) = 4.7671093939528255d-05 - xceref(5) = 1.3621613399213001d-04 - -c--------------------------------------------------------------------- -c reference data for 102X102X102 grids after 400 time steps, -c with DT = 1.0d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 102) .and. - > (problem_size .eq. 102) .and. - > (problem_size .eq. 102) .and. - > (no_time_steps . eq. 400) ) then - - class = 'B' - dtref = 1.0d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.6903293579998d+02 - xcrref(2) = 0.3095134488084d+02 - xcrref(3) = 0.4103336647017d+02 - xcrref(4) = 0.3864769009604d+02 - xcrref(5) = 0.5643482272596d+02 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 0.9810006190188d-02 - xceref(2) = 0.1022827905670d-02 - xceref(3) = 0.1720597911692d-02 - xceref(4) = 0.1694479428231d-02 - xceref(5) = 0.1847456263981d-01 - -c--------------------------------------------------------------------- -c reference data for 162X162X162 grids after 400 time steps, -c with DT = 0.67d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 162) .and. - > (problem_size .eq. 162) .and. - > (problem_size .eq. 162) .and. - > (no_time_steps . eq. 400) ) then - - class = 'C' - dtref = 0.67d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.5881691581829d+03 - xcrref(2) = 0.2454417603569d+03 - xcrref(3) = 0.3293829191851d+03 - xcrref(4) = 0.3081924971891d+03 - xcrref(5) = 0.4597223799176d+03 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 0.2598120500183d+00 - xceref(2) = 0.2590888922315d-01 - xceref(3) = 0.5132886416320d-01 - xceref(4) = 0.4806073419454d-01 - xceref(5) = 0.5483377491301d+00 - -c--------------------------------------------------------------------- -c reference data for 408X408X408 grids after 500 time steps, -c with DT = 0.3d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 408) .and. - > (problem_size .eq. 408) .and. - > (problem_size .eq. 408) .and. - > (no_time_steps . eq. 500) ) then - - class = 'D' - dtref = 0.30d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.1044696216887d+05 - xcrref(2) = 0.3204427762578d+04 - xcrref(3) = 0.4648680733032d+04 - xcrref(4) = 0.4238923283697d+04 - xcrref(5) = 0.7588412036136d+04 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 0.5089471423669d+01 - xceref(2) = 0.5323514855894d+00 - xceref(3) = 0.1187051008971d+01 - xceref(4) = 0.1083734951938d+01 - xceref(5) = 0.1164108338568d+02 - -c--------------------------------------------------------------------- -c reference data for 1020X1020X1020 grids after 500 time steps, -c with DT = 0.1d-03 -c--------------------------------------------------------------------- - elseif ( (problem_size .eq. 1020) .and. - > (problem_size .eq. 1020) .and. - > (problem_size .eq. 1020) .and. - > (no_time_steps . eq. 500) ) then - - class = 'E' - dtref = 0.10d-3 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.6255387422609d+05 - xcrref(2) = 0.1495317020012d+05 - xcrref(3) = 0.2347595750586d+05 - xcrref(4) = 0.2091099783534d+05 - xcrref(5) = 0.4770412841218d+05 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - xceref(1) = 0.6742735164909d+02 - xceref(2) = 0.5390656036938d+01 - xceref(3) = 0.1680647196477d+02 - xceref(4) = 0.1536963126457d+02 - xceref(5) = 0.1575330146156d+03 - - - else - verified = .false. - endif - -c--------------------------------------------------------------------- -c verification test for residuals if gridsize is one of -c the defined grid sizes above (class .ne. 'U') -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Compute the difference of solution values and the known reference values. -c--------------------------------------------------------------------- - do m = 1, 5 - - xcrdif(m) = dabs((xcr(m)-xcrref(m))/xcrref(m)) - xcedif(m) = dabs((xce(m)-xceref(m))/xceref(m)) - - enddo - -c--------------------------------------------------------------------- -c Output the comparison of computed results to known cases. -c--------------------------------------------------------------------- - - if (class .ne. 'U') then - write(*, 1990) class - 1990 format(' Verification being performed for class ', a) - write (*,2000) epsilon - 2000 format(' accuracy setting for epsilon = ', E20.13) - verified = (dabs(dt-dtref) .le. epsilon) - if (.not.verified) then - class = 'U' - write (*,1000) dtref - 1000 format(' DT does not match the reference value of ', - > E15.8) - endif - else - write(*, 1995) - 1995 format(' Unknown class') - endif - - - if (class .ne. 'U') then - write (*, 2001) - else - write (*, 2005) - endif - - 2001 format(' Comparison of RMS-norms of residual') - 2005 format(' RMS-norms of residual') - do m = 1, 5 - if (class .eq. 'U') then - write(*, 2015) m, xcr(m) - else if (xcrdif(m) .le. epsilon .and. - & (.not. isnan(xcrdif(m)))) then - write (*,2011) m,xcr(m),xcrref(m),xcrdif(m) - else - verified = .false. - write (*,2010) m,xcr(m),xcrref(m),xcrdif(m) - endif - enddo - - if (class .ne. 'U') then - write (*,2002) - else - write (*,2006) - endif - 2002 format(' Comparison of RMS-norms of solution error') - 2006 format(' RMS-norms of solution error') - - do m = 1, 5 - if (class .eq. 'U') then - write(*, 2015) m, xce(m) - else if (xcedif(m) .le. epsilon .and. - & (.not. isnan(xcedif(m)))) then - write (*,2011) m,xce(m),xceref(m),xcedif(m) - else - verified = .false. - write (*,2010) m,xce(m),xceref(m),xcedif(m) - endif - enddo - - 2010 format(' FAILURE: ', i2, E20.13, E20.13, E20.13) - 2011 format(' ', i2, E20.13, E20.13, E20.13) - 2015 format(' ', i2, E20.13) - - if (class .eq. 'U') then - write(*, 2022) - write(*, 2023) - 2022 format(' No reference values provided') - 2023 format(' No verification performed') - else if (verified) then - write(*, 2020) - 2020 format(' Verification Successful') - else - write(*, 2021) - 2021 format(' Verification failed') - endif - - return - - - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve.for deleted file mode 100644 index 21088b0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve.for +++ /dev/null @@ -1,392 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the x-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the x-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, i1, i2, m, m1 - double precision ru1, fac1, fac2, rhs__(5,0:2),t1,t2 - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_xsolve) - -!DVM$ region local(lhs) -!DVM$ parallel (k,j) on u(*,*,j,k) -!DVM$& , CUDA_BLOCK(32,4) -!DVM$& ,private(m,i,ru1,i1,i2,fac1,fac2,lhs__, lhsp__, lhsm__, rhs__, -!DVM$& t1,t2) - do k = 1, nz2 - do j = 1, ny2 - do i = 0, problem_size-1 - - if(i .eq. 0) then - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - lhs__(1,1) = 0.0d0 - ru1 = c3c4*1.0d0/u(1,1-1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(2,1) = - dttx2 * us(1-1,j,k) - dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(3,1) = 1.0d0 + c2dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,1+1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(4,1) = dttx2 * us(1+1,j,k) - dttx1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dttx2 * speed(1-1,j,k) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dttx2 * speed(1+1,j,k) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dttx2 * speed(1-1,j,k) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dttx2 * speed(1+1,j,k) - lhsm__(5,1) = lhs__(5,1) - endif - - if(i + 2 .lt. problem_size-1) then - m = i + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,m-1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(2,2) = - dttx2 * us(m-1,j,k) - dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,m,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(3,2) = 1.0d0 + c2dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,m+1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(4,2) = dttx2 * us(m+1,j,k) - dttx1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. nx2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. nx2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. nx2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dttx2 * speed(m-1,j,k) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dttx2 * speed(m+1,j,k) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dttx2 * speed(m-1,j,k) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dttx2 * speed(m+1,j,k) - lhsm__(5,2) = lhs__(5,2) - else if(i + 2 .eq. nx2+1) then - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - endif -!********************************** end of init - - i1 = i + 1 - i2 = i + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(i .le. nx2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i1,j,k)=rhs(m,i1,j,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i2,j,k)=rhs(m,i2,j,k)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - fac2 = 1.d0/lhs__(3,1) - do m = 1, 3 - rhs(m,i1,j,k) = rhs(m,i1,j,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i1,j,k) = fac2*rhs(m,i1,j,k) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i1,j,k) = rhs(m,i1,j,k)-lhsp__(2,1)*rhs(m,i,j,k) - if(i .lt. nx2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i2,j,k)=rhs(m,i2,j,k)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i1,j,k)=rhs(m,i1,j,k) -lhsm__(2,1)*rhs(m,i,j,k) - if(i .lt. nx2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i2,j,k)=rhs(m,i2,j,k) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(i .eq. nx2) then - rhs(4,i1,j,k) = rhs(4,i1,j,k)/lhsp__(3,1) - rhs(5,i1,j,k) = rhs(5,i1,j,k)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i1,j,k) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i1,j,k) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i1,j,k) - endif - - - lhs(0,4,i,j,k) = lhs__(4,0) - lhs(1,4,i,j,k) = lhsp__(4,0) - lhs(2,4,i,j,k) = lhsm__(4,0) - - lhs(0,5,i,j,k) = lhs__(5,0) - lhs(1,5,i,j,k) = lhsp__(5,0) - lhs(2,5,i,j,k) = lhsm__(5,0) - - lhs__(1,0) = lhs__(1,1) - lhsp__(1,0) = lhsp__(1,1) - lhsm__(1,0) = lhsm__(1,1) - lhs__(1,1) = lhs__(1,2) - lhsp__(1,1) = lhsp__(1,2) - lhsm__(1,1) = lhsm__(1,2) - - lhs__(2,0) = lhs__(2,1) - lhsp__(2,0) = lhsp__(2,1) - lhsm__(2,0) = lhsm__(2,1) - lhs__(2,1) = lhs__(2,2) - lhsp__(2,1) = lhsp__(2,2) - lhsm__(2,1) = lhsm__(2,2) - - lhs__(3,0) = lhs__(3,1) - lhsp__(3,0) = lhsp__(3,1) - lhsm__(3,0) = lhsm__(3,1) - lhs__(3,1) = lhs__(3,2) - lhsp__(3,1) = lhsp__(3,2) - lhsm__(3,1) = lhsm__(3,2) - - lhs__(4,0) = lhs__(4,1) - lhsp__(4,0) = lhsp__(4,1) - lhsm__(4,0) = lhsm__(4,1) - lhs__(4,1) = lhs__(4,2) - lhsp__(4,1) = lhsp__(4,2) - lhsm__(4,1) = lhsm__(4,2) - - lhs__(5,0) = lhs__(5,1) - lhsp__(5,0) = lhsp__(5,1) - lhsm__(5,0) = lhsm__(5,1) - lhs__(5,1) = lhs__(5,2) - lhsp__(5,1) = lhsp__(5,2) - lhsm__(5,1) = lhsm__(5,2) - enddo - - i = problem_size-3 - rhs__(1,2) = rhs(1,i+2,j,k) - rhs__(2,2) = rhs(2,i+2,j,k) - rhs__(3,2) = rhs(3,i+2,j,k) - rhs__(4,2) = rhs(4,i+2,j,k) - rhs__(5,2) = rhs(5,i+2,j,k) - - rhs__(1,1) = rhs(1,i+1,j,k) - rhs__(2,1) = rhs(2,i+1,j,k) - rhs__(3,1) = rhs(3,i+1,j,k) - rhs__(4,1) = rhs(4,i+1,j,k) - rhs__(5,1) = rhs(5,i+1,j,k) - - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - - do i = problem_size-4, 0, -1 - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - t1 = bt * rhs__(3,2) - t2 = 0.5d0 * ( rhs__(4,2)+rhs__(5,2)) - rhs(1,i+2,j,k) = -rhs__(2,2) - rhs(2,i+2,j,k) = rhs__(1,2) - rhs(3,i+2,j,k) = bt * (rhs__(4,2)-rhs__(5,2)) - rhs(4,i+2,j,k) = -t1 + t2 - rhs(5,i+2,j,k) = t1 + t2 - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - end do - t1 = bt * rhs__(3,2) - t2 = 0.5d0 * ( rhs__(4,2)+rhs__(5,2)) - rhs(1,1,j,k) = -rhs__(2,2) - rhs(2,1,j,k) = rhs__(1,2) - rhs(3,1,j,k) = bt * (rhs__(4,2)-rhs__(5,2)) - rhs(4,1,j,k) = -t1 + t2 - rhs(5,1,j,k) = t1 + t2 - enddo - enddo - -!DVM$ end region - if (timeron) call timer_stop(t_xsolve) - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve_mpi.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve_mpi.for deleted file mode 100644 index e91802e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/x_solve_mpi.for +++ /dev/null @@ -1,321 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the x-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the x-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, i1, i2, m - double precision ru1, fac1, fac2, t1,t2,t3 - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_xsolve) - -!DVM$ region local(lhs) - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k) -!DVM$& ,private(m,ru1,i1,i2,fac1,fac2,lhs__, lhsp__, lhsm__) -!DVM$& ,ACROSS(OUT:rhs(0:0,0:2,0:0,0:0), lhs(0:0,0:0,0:2,0:0,0:0)) -!DVM$& ,stage(stage_n) - do k = 1, nz2 - do j = 1, ny2 - do i = 0, problem_size-1 - - if(i .eq. 0) then - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - lhs__(1,1) = 0.0d0 - ru1 = c3c4*1.0d0/u(1,i,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(2,1) = - dttx2 * us(i,j,k) - dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,i+1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(3,1) = 1.0d0 + c2dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,i+2,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(4,1) = dttx2 * us(i+2,j,k) - dttx1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dttx2 * speed(i,j,k) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dttx2 * speed(i+2,j,k) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dttx2 * speed(i,j,k) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dttx2 * speed(i+2,j,k) - lhsm__(5,1) = lhs__(5,1) - else - do m = 1, 5 - lhs__(m,0) = lhs(0,m,i,j,k) - lhsp__(m,0) = lhs(1,m,i,j,k) - lhsm__(m,0) = lhs(2,m,i,j,k) - - lhs__(m,1) = lhs(0,m,i+1,j,k) - lhsp__(m,1) = lhs(1,m,i+1,j,k) - lhsm__(m,1) = lhs(2,m,i+1,j,k) - enddo - endif - - if(i + 2 .lt. problem_size-1) then - m = i + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,m-1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(2,2) = - dttx2 * us(m-1,j,k) - dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,m,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(3,2) = 1.0d0 + c2dttx1 * ru1 - ru1 = c3c4*1.0d0/u(1,m+1,j,k) - ru1 = dmax1(dx2+con43*ru1, - > dx5+c1c5*ru1, - > dxmax+ru1, - > dx1) - lhs__(4,2) = dttx2 * us(m+1,j,k) - dttx1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. nx2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. nx2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. nx2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dttx2 * speed(m-1,j,k) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dttx2 * speed(m+1,j,k) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dttx2 * speed(m-1,j,k) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dttx2 * speed(m+1,j,k) - lhsm__(5,2) = lhs__(5,2) - else if(i + 2 .eq. nx2+1) then - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - endif -!********************************** end of init - - i1 = i + 1 - i2 = i + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(i .le. nx2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i1,j,k)=rhs(m,i1,j,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i2,j,k)=rhs(m,i2,j,k)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - if (lhs__(3,1) .ne. 0) then - fac2 = 1.d0/lhs__(3,1) - else - fac2 = 0 - endif - do m = 1, 3 - rhs(m,i1,j,k) = rhs(m,i1,j,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i1,j,k) = fac2*rhs(m,i1,j,k) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i1,j,k) = rhs(m,i1,j,k)-lhsp__(2,1)*rhs(m,i,j,k) - if(i .lt. nx2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i2,j,k)=rhs(m,i2,j,k)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i1,j,k)=rhs(m,i1,j,k) -lhsm__(2,1)*rhs(m,i,j,k) - if(i .lt. nx2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i2,j,k)=rhs(m,i2,j,k) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(i .eq. nx2) then - rhs(4,i1,j,k) = rhs(4,i1,j,k)/lhsp__(3,1) - rhs(5,i1,j,k) = rhs(5,i1,j,k)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i1,j,k) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i1,j,k) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i1,j,k) - endif - - do m = 1, 5 - lhs(0,m,i,j,k) = lhs__(m,0) - lhs(1,m,i,j,k) = lhsp__(m,0) - lhs(2,m,i,j,k) = lhsm__(m,0) - - lhs(0,m,i+1,j,k) = lhs__(m,1) - lhs(1,m,i+1,j,k) = lhsp__(m,1) - lhs(2,m,i+1,j,k) = lhsm__(m,1) - - if (i .lt. nx2) then - lhs(0,m,i+2,j,k) = lhs__(m,2) - lhs(1,m,i+2,j,k) = lhsp__(m,2) - lhs(2,m,i+2,j,k) = lhsm__(m,2) - endif - enddo - enddo - enddo - enddo - -!DVM$ PARALLEL (k,j,i) on rhs(*,i,j,k),ACROSS(rhs(0:0,0:2,0:0,0:0)) -!DVM$& ,stage(stage_n) - do k = 1, nz2 - do j = 1, ny2 - do i = problem_size-3, 0, -1 - - rhs(1,i,j,k) = rhs(1,i,j,k) - - & lhs(0,4,i,j,k)*rhs(1,i+1,j,k) - - & lhs(0,5,i,j,k)*rhs(1,i+2,j,k) - rhs(2,i,j,k) = rhs(2,i,j,k) - - & lhs(0,4,i,j,k)*rhs(2,i+1,j,k) - - & lhs(0,5,i,j,k)*rhs(2,i+2,j,k) - rhs(3,i,j,k) = rhs(3,i,j,k) - - & lhs(0,4,i,j,k)*rhs(3,i+1,j,k) - - & lhs(0,5,i,j,k)*rhs(3,i+2,j,k) - - rhs(4,i,j,k) = rhs(4,i,j,k) - - & lhs(1,4,i,j,k)*rhs(4,i+1,j,k) - - & lhs(1,5,i,j,k)*rhs(4,i+2,j,k) - rhs(5,i,j,k) = rhs(5,i,j,k) - - & lhs(2,4,i,j,k)*rhs(5,i+1,j,k) - - & lhs(2,5,i,j,k)*rhs(5,i+2,j,k) - end do - enddo - enddo - -!DVM$ PARALLEL (k,j,i) on rhs(*,i,j,k),PRIVATE(t1,t2,t3) - do k = 1, nz2 - do j = 1, ny2 - do i = 1, nx2 - t1 = bt * rhs(3,i,j,k) - t2 = 0.5d0 * (rhs(4,i,j,k)+rhs(5,i,j,k)) - t3 = rhs(1,i,j,k) - - rhs(1,i,j,k) = -rhs(2,i,j,k) - rhs(2,i,j,k) = t3 - rhs(3,i,j,k) = bt * (rhs(4,i,j,k)-rhs(5,i,j,k)) - rhs(4,i,j,k) = -t1 + t2 - rhs(5,i,j,k) = t1 + t2 - end do - enddo - enddo -!DVM$ end region - if (timeron) call timer_stop(t_xsolve) - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve.for deleted file mode 100644 index 83575ef..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve.for +++ /dev/null @@ -1,396 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the y-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the y-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, j1, j2, m, m1 - double precision ru1, fac1, fac2, rhs__(5,0:2),t1,t2 - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_ysolve) - -!DVM$ region local(lhs) -!DVM$ parallel (k,i) on u(*,i,*,k) -!DVM$& , CUDA_BLOCK(32,4) -!DVM$& ,private(m,j1,j2,fac1,fac2,ru1,lhs__,lhsp__,lhsm__,j,rhs__, -!DVM$& t1,t2) - do k = 1, nz2 - do i = 1, nx2 - - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - lhs__(1,1) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,1-1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(2,1) = - dtty2 * vs(i,1-1,k) - dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(3,1) = 1.0d0 + c2dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,1+1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(4,1) = dtty2 * vs(i,1+1,k) - dtty1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dtty2 * speed(i,1-1,k) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dtty2 * speed(i,1+1,k) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dtty2 * speed(i,1-1,k) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dtty2 * speed(i,1+1,k) - lhsm__(5,1) = lhs__(5,1) - - do j = 0, ny2+1 - if(j + 2 .lt. ny2 + 1) then - m = j + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,m-1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(2,2) = - dtty2 * vs(i,m-1,k) - dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,m,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(3,2) = 1.0d0 + c2dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,m+1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(4,2) = dtty2 * vs(i,m+1,k) - dtty1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. ny2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. ny2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. ny2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dtty2 * speed(i,m-1,k) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dtty2 * speed(i,m+1,k) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dtty2 * speed(i,m-1,k) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dtty2 * speed(i,m+1,k) - lhsm__(5,2) = lhs__(5,2) - else if(j + 2 .eq. ny2+1) then - - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - - endif -!********************************** end of init - - j1 = j + 1 - j2 = j + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(j .le. ny2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j1,k)=rhs(m,i,j1,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j2,k)=rhs(m,i,j2,k)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - fac2 = 1.d0/lhs__(3,1) - do m = 1, 3 - rhs(m,i,j1,k) = rhs(m,i,j1,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j1,k) = fac2*rhs(m,i,j1,k) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i,j1,k) = rhs(m,i,j1,k)-lhsp__(2,1)*rhs(m,i,j,k) - if(j .lt. ny2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i,j2,k)=rhs(m,i,j2,k)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i,j1,k)=rhs(m,i,j1,k) -lhsm__(2,1)*rhs(m,i,j,k) - if(j .lt. ny2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i,j2,k)=rhs(m,i,j2,k) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(j .eq. ny2) then - rhs(4,i,j1,k) = rhs(4,i,j1,k)/lhsp__(3,1) - rhs(5,i,j1,k) = rhs(5,i,j1,k)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i,j1,k) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i,j1,k) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i,j1,k) - endif - lhs(0,4,i,j,k) = lhs__(4,0) - lhs(1,4,i,j,k) = lhsp__(4,0) - lhs(2,4,i,j,k) = lhsm__(4,0) - - lhs(0,5,i,j,k) = lhs__(5,0) - lhs(1,5,i,j,k) = lhsp__(5,0) - lhs(2,5,i,j,k) = lhsm__(5,0) - - lhs__(1,0) = lhs__(1,1) - lhsp__(1,0) = lhsp__(1,1) - lhsm__(1,0) = lhsm__(1,1) - lhs__(1,1) = lhs__(1,2) - lhsp__(1,1) = lhsp__(1,2) - lhsm__(1,1) = lhsm__(1,2) - - lhs__(2,0) = lhs__(2,1) - lhsp__(2,0) = lhsp__(2,1) - lhsm__(2,0) = lhsm__(2,1) - lhs__(2,1) = lhs__(2,2) - lhsp__(2,1) = lhsp__(2,2) - lhsm__(2,1) = lhsm__(2,2) - - lhs__(3,0) = lhs__(3,1) - lhsp__(3,0) = lhsp__(3,1) - lhsm__(3,0) = lhsm__(3,1) - lhs__(3,1) = lhs__(3,2) - lhsp__(3,1) = lhsp__(3,2) - lhsm__(3,1) = lhsm__(3,2) - - lhs__(4,0) = lhs__(4,1) - lhsp__(4,0) = lhsp__(4,1) - lhsm__(4,0) = lhsm__(4,1) - lhs__(4,1) = lhs__(4,2) - lhsp__(4,1) = lhsp__(4,2) - lhsm__(4,1) = lhsm__(4,2) - - lhs__(5,0) = lhs__(5,1) - lhsp__(5,0) = lhsp__(5,1) - lhsm__(5,0) = lhsm__(5,1) - lhs__(5,1) = lhs__(5,2) - lhsp__(5,1) = lhsp__(5,2) - lhsm__(5,1) = lhsm__(5,2) - enddo - - j = problem_size-3 - rhs__(1,2) = rhs(1,i,j+2,k) - rhs__(2,2) = rhs(2,i,j+2,k) - rhs__(3,2) = rhs(3,i,j+2,k) - rhs__(4,2) = rhs(4,i,j+2,k) - rhs__(5,2) = rhs(5,i,j+2,k) - - rhs__(1,1) = rhs(1,i,j+1,k) - rhs__(2,1) = rhs(2,i,j+1,k) - rhs__(3,1) = rhs(3,i,j+1,k) - rhs__(4,1) = rhs(4,i,j+1,k) - rhs__(5,1) = rhs(5,i,j+1,k) - - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - - do j = problem_size-4, 0, -1 - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - t1 = bt * rhs__(1,2) - t2 = 0.5d0 * (rhs__(4,2) + rhs__(5,2)) - rhs(1,i,j+2,k) = bt * (rhs__(4,2) - rhs__(5,2)) - rhs(2,i,j+2,k) = -rhs__(3,2) - rhs(3,i,j+2,k) = rhs__(2,2) - rhs(4,i,j+2,k) = -t1 + t2 - rhs(5,i,j+2,k) = t1 + t2 - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - enddo - t1 = bt * rhs__(1,2) - t2 = 0.5d0 * (rhs__(4,2) + rhs__(5,2)) - rhs(1,i,j+2,k) = bt * (rhs__(4,2) - rhs__(5,2)) - rhs(2,i,j+2,k) = -rhs__(3,2) - rhs(3,i,j+2,k) = rhs__(2,2) - rhs(4,i,j+2,k) = -t1 + t2 - rhs(5,i,j+2,k) = t1 + t2 - enddo - enddo - -!DVM$ end region - if (timeron) call timer_stop(t_ysolve) - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve_mpi.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve_mpi.for deleted file mode 100644 index 3972a68..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/y_solve_mpi.for +++ /dev/null @@ -1,330 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the y-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the y-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, j1, j2, m, m1 - double precision ru1, fac1, fac2, t1,t2,t3 - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_ysolve) - -!DVM$ region local(lhs) -!DVM$ parallel (k,j,i) on rhs(*,i,j,k) -!DVM$& ,private(m,j1,j2,fac1,fac2,ru1,lhs__,lhsp__,lhsm__) -!DVM$& ,ACROSS(OUT:rhs(0:0,0:0,0:2,0:0), lhs(0:0,0:0,0:0,0:2,0:0)) -!DVM$& ,stage(stage_n) - do k = 1, nz2 - do j = 0, problem_size-1 - do i = 1, nx2 - if (j .eq. 0) then - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - lhs__(1,1) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,j,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(2,1) = - dtty2 * - > u(3,i,0,k) * (1.0d0/u(1,i,j,k))- dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j+1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(3,1) = 1.0d0 + c2dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j+2,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(4,1) = dtty2 * - > u(3,i,2,k) * (1.0d0/u(1,i,j+2,k)) - dtty1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dtty2 * speed(i,j,k) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dtty2 * speed(i,j+2,k) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dtty2 * speed(i,j,k) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dtty2 * speed(i,j+2,k) - lhsm__(5,1) = lhs__(5,1) - else - do m = 1, 5 - lhs__(m,0) = lhs(0,m,i,j,k) - lhsp__(m,0) = lhs(1,m,i,j,k) - lhsm__(m,0) = lhs(2,m,i,j,k) - - lhs__(m,1) = lhs(0,m,i,j+1,k) - lhsp__(m,1) = lhs(1,m,i,j+1,k) - lhsm__(m,1) = lhs(2,m,i,j+1,k) - enddo - endif - - if(j + 2 .lt. ny2 + 1) then - m = j + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,m-1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(2,2) = - dtty2 * - > u(3,i,m-1,k) * (1.0d0/u(1,i,m-1,k)) - dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,m,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(3,2) = 1.0d0 + c2dtty1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,m+1,k) - ru1 = dmax1( dy3 + con43 * ru1, - > dy5 + c1c5*ru1, - > dymax + ru1, - > dy1) - lhs__(4,2) = dtty2 * - > u(3,i,m+1,k) * (1.0d0/u(1,i,m+1,k)) - dtty1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. ny2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. ny2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. ny2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dtty2 * speed(i,m-1,k) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dtty2 * speed(i,m+1,k) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dtty2 * speed(i,m-1,k) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dtty2 * speed(i,m+1,k) - lhsm__(5,2) = lhs__(5,2) - else if(j + 2 .eq. ny2+1) then - - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - - endif -!********************************** end of init - - j1 = j + 1 - j2 = j + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(j .le. ny2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j1,k)=rhs(m,i,j1,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j2,k)=rhs(m,i,j2,k)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - if (lhs__(3,1) .ne. 0) then - fac2 = 1.d0/lhs__(3,1) - else - fac2 = 0 - endif - do m = 1, 3 - rhs(m,i,j1,k) = rhs(m,i,j1,k)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j1,k) = fac2*rhs(m,i,j1,k) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i,j1,k) = rhs(m,i,j1,k)-lhsp__(2,1)*rhs(m,i,j,k) - if(j .lt. ny2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i,j2,k)=rhs(m,i,j2,k)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i,j1,k)=rhs(m,i,j1,k) -lhsm__(2,1)*rhs(m,i,j,k) - if(j .lt. ny2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i,j2,k)=rhs(m,i,j2,k) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(j .eq. ny2) then - rhs(4,i,j1,k) = rhs(4,i,j1,k)/lhsp__(3,1) - rhs(5,i,j1,k) = rhs(5,i,j1,k)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i,j1,k) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i,j1,k) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i,j1,k) - endif - - do m = 1,5 - lhs(0,m,i,j,k) = lhs__(m,0) - lhs(1,m,i,j,k) = lhsp__(m,0) - lhs(2,m,i,j,k) = lhsm__(m,0) - - lhs(0,m,i,j+1,k) = lhs__(m,1) - lhs(1,m,i,j+1,k) = lhsp__(m,1) - lhs(2,m,i,j+1,k) = lhsm__(m,1) - if (j .lt. ny2) then - lhs(0,m,i,j+2,k) = lhs__(m,2) - lhs(1,m,i,j+2,k) = lhsp__(m,2) - lhs(2,m,i,j+2,k) = lhsm__(m,2) - endif - enddo - enddo - enddo - enddo - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k),ACROSS(rhs(0:0,0:0,0:2,0:0)) -!DVM$& ,stage(stage_n) - do k = 1, nz2 - do j = problem_size-3, 0, -1 - do i = 1, nx2 - rhs(1,i,j,k) = rhs(1,i,j,k) - - & lhs(0,4,i,j,k)*rhs(1,i,j+1,k) - - & lhs(0,5,i,j,k)*rhs(1,i,j+2,k) - rhs(2,i,j,k) = rhs(2,i,j,k) - - & lhs(0,4,i,j,k)*rhs(2,i,j+1,k) - - & lhs(0,5,i,j,k)*rhs(2,i,j+2,k) - rhs(3,i,j,k) = rhs(3,i,j,k) - - & lhs(0,4,i,j,k)*rhs(3,i,j+1,k) - - & lhs(0,5,i,j,k)*rhs(3,i,j+2,k) - - rhs(4,i,j,k) = rhs(4,i,j,k) - - & lhs(1,4,i,j,k)*rhs(4,i,j+1,k) - - & lhs(1,5,i,j,k)*rhs(4,i,j+2,k) - rhs(5,i,j,k) = rhs(5,i,j,k) - - & lhs(2,4,i,j,k)*rhs(5,i,j+1,k) - - & lhs(2,5,i,j,k)*rhs(5,i,j+2,k) - enddo - enddo - enddo - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k),PRIVATE(t1,t2,t3) - do k = 1, nz2 - do j = 1, ny2 - do i = 1, nx2 - t1 = bt * rhs(1,i,j,k) - t2 = 0.5d0 * (rhs(4,i,j,k) + rhs(5,i,j,k)) - t3 = rhs(2,i,j,k) - - rhs(1,i,j,k) = bt * (rhs(4,i,j,k) - rhs(5,i,j,k)) - rhs(2,i,j,k) = -rhs(3,i,j,k) - rhs(3,i,j,k) = t3 - rhs(4,i,j,k) = -t1 + t2 - rhs(5,i,j,k) = t1 + t2 - enddo - enddo - enddo - -!DVM$ end region - if (timeron) call timer_stop(t_ysolve) - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve.for deleted file mode 100644 index d4df857..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve.for +++ /dev/null @@ -1,433 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the z-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the z-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, k1, k2, m, m1 - double precision ru1, fac1, fac2, rhs__(5,0:2) - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) - double precision t1,t2,t3,ac,xvel,yvel,zvel,btuz,ac2u,uzik1 - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Prepare for z-solve, array redistribution -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_zsolve) - -!DVM$ region local(lhs) -!DVM$ parallel (j,i) on u(*,i,j,*) -!DVM$& , CUDA_BLOCK(32,4) -!DVM$& ,private(m,k1,k2,ru1,fac1,fac2,k,lhs__,lhsp__,lhsm__,rhs__, -!DVM$& t1,t2,t3,ac,xvel,yvel,zvel,btuz,ac2u,uzik1) - do j = 1, ny2 - do i = 1, nx2 - - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - - lhs__(1,1) = 0.0d0 - ru1 = c3c4*1.0d0/u(1,i,j,0) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(2,1) = - dttz2 * ws(i,j,0) - dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(3,1) = 1.0d0 + c2dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,2) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(4,1) = dttz2 * ws(i,j,2) - dttz1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dttz2 * speed(i,j,1-1) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dttz2 * speed(i,j,1+1) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dttz2 * speed(i,j,1-1) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dttz2 * speed(i,j,1+1) - lhsm__(5,1) = lhs__(5,1) - - do k = 0, nz2+1 - if(k + 2 .lt. nz2 + 1) then - m = k + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,j,m-1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(2,2) = - dttz2 * ws(i,j,m-1) - dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,m) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(3,2) = 1.0d0 + c2dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,m+1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(4,2) = dttz2 * ws(i,j,m+1) - dttz1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. nz2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. nz2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. nz2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dttz2 * speed(i,j,m-1) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dttz2 * speed(i,j,m+1) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dttz2 * speed(i,j,m-1) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dttz2 * speed(i,j,m+1) - lhsm__(5,2) = lhs__(5,2) - else if(k + 2 .eq. nz2+1) then - - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - - endif -!********************************** end of init - - k1 = k + 1 - k2 = k + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(k .le. nz2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k1)=rhs(m,i,j,k1)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j,k2)=rhs(m,i,j,k2)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - fac2 = 1.d0/lhs__(3,1) - do m = 1, 3 - rhs(m,i,j,k1) = rhs(m,i,j,k1)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j,k1) = fac2*rhs(m,i,j,k1) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i,j,k1) = rhs(m,i,j,k1)-lhsp__(2,1)*rhs(m,i,j,k) - if(k .lt. nz2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i,j,k2)=rhs(m,i,j,k2)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i,j,k1)=rhs(m,i,j,k1) -lhsm__(2,1)*rhs(m,i,j,k) - if(k .lt. nz2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i,j,k2)=rhs(m,i,j,k2) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(k .eq. nz2) then - rhs(4,i,j,k1) = rhs(4,i,j,k1)/lhsp__(3,1) - rhs(5,i,j,k1) = rhs(5,i,j,k1)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i,j,k1) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i,j,k1) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i,j,k1) - endif - lhs(0,4,i,j,k) = lhs__(4,0) - lhs(1,4,i,j,k) = lhsp__(4,0) - lhs(2,4,i,j,k) = lhsm__(4,0) - - lhs(0,5,i,j,k) = lhs__(5,0) - lhs(1,5,i,j,k) = lhsp__(5,0) - lhs(2,5,i,j,k) = lhsm__(5,0) - - lhs__(1,0) = lhs__(1,1) - lhsp__(1,0) = lhsp__(1,1) - lhsm__(1,0) = lhsm__(1,1) - lhs__(1,1) = lhs__(1,2) - lhsp__(1,1) = lhsp__(1,2) - lhsm__(1,1) = lhsm__(1,2) - - lhs__(2,0) = lhs__(2,1) - lhsp__(2,0) = lhsp__(2,1) - lhsm__(2,0) = lhsm__(2,1) - lhs__(2,1) = lhs__(2,2) - lhsp__(2,1) = lhsp__(2,2) - lhsm__(2,1) = lhsm__(2,2) - - lhs__(3,0) = lhs__(3,1) - lhsp__(3,0) = lhsp__(3,1) - lhsm__(3,0) = lhsm__(3,1) - lhs__(3,1) = lhs__(3,2) - lhsp__(3,1) = lhsp__(3,2) - lhsm__(3,1) = lhsm__(3,2) - - lhs__(4,0) = lhs__(4,1) - lhsp__(4,0) = lhsp__(4,1) - lhsm__(4,0) = lhsm__(4,1) - lhs__(4,1) = lhs__(4,2) - lhsp__(4,1) = lhsp__(4,2) - lhsm__(4,1) = lhsm__(4,2) - - lhs__(5,0) = lhs__(5,1) - lhsp__(5,0) = lhsp__(5,1) - lhsm__(5,0) = lhsm__(5,1) - lhs__(5,1) = lhs__(5,2) - lhsp__(5,1) = lhsp__(5,2) - lhsm__(5,1) = lhsm__(5,2) - enddo - - - k = problem_size-3 - rhs__(1,2) = rhs(1,i,j,k+2) - rhs__(2,2) = rhs(2,i,j,k+2) - rhs__(3,2) = rhs(3,i,j,k+2) - rhs__(4,2) = rhs(4,i,j,k+2) - rhs__(5,2) = rhs(5,i,j,k+2) - - rhs__(1,1) = rhs(1,i,j,k+1) - rhs__(2,1) = rhs(2,i,j,k+1) - rhs__(3,1) = rhs(3,i,j,k+1) - rhs__(4,1) = rhs(4,i,j,k+1) - rhs__(5,1) = rhs(5,i,j,k+1) - - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - - do k = problem_size-4, 0, -1 - rhs__(1,0) = rhs(1,i,j,k) - rhs__(2,0) = rhs(2,i,j,k) - rhs__(3,0) = rhs(3,i,j,k) - rhs__(4,0) = rhs(4,i,j,k) - rhs__(5,0) = rhs(5,i,j,k) - - rhs__(1,0) = rhs__(1,0) - - > lhs(0,4,i,j,k)*rhs__(1,1) - - > lhs(0,5,i,j,k)*rhs__(1,2) - rhs__(2,0) = rhs__(2,0) - - > lhs(0,4,i,j,k)*rhs__(2,1) - - > lhs(0,5,i,j,k)*rhs__(2,2) - rhs__(3,0) = rhs__(3,0) - - > lhs(0,4,i,j,k)*rhs__(3,1) - - > lhs(0,5,i,j,k)*rhs__(3,2) - - rhs__(4,0) = rhs__(4,0) - - > lhs(1,4,i,j,k)*rhs__(4,1) - - > lhs(1,5,i,j,k)*rhs__(4,2) - rhs__(5,0) = rhs__(5,0) - - > lhs(2,4,i,j,k)*rhs__(5,1) - - > lhs(2,5,i,j,k)*rhs__(5,2) - - xvel = us(i,j,k+2) - yvel = vs(i,j,k+2) - zvel = ws(i,j,k+2) - ac = speed(i,j,k+2) - ac2u = ac*ac - uzik1 = u(1,i,j,k+2) - btuz = bt * uzik1 - t1 = btuz/ac * (rhs__(4,2) + rhs__(5,2)) - t2 = rhs__(3,2) + t1 - t3 = btuz * (rhs__(4,2) - rhs__(5,2)) - - rhs__(3,2) = uzik1*rhs__(1,2) + yvel*t2 - rhs__(4,2) = zvel*t2 + t3 - rhs__(5,2) = uzik1*(-xvel*rhs__(2,2) + - > yvel*rhs__(1,2)) + qs(i,j,k+2)*t2 + - > c2iv*ac2u*t1 + zvel*t3 - rhs__(1,2) = t2 - rhs__(2,2) = -uzik1*rhs__(2,2) + xvel*t2 - - u(1,i,j,k+2) = u(1,i,j,k+2) + rhs__(1,2) - u(2,i,j,k+2) = u(2,i,j,k+2) + rhs__(2,2) - u(3,i,j,k+2) = u(3,i,j,k+2) + rhs__(3,2) - u(4,i,j,k+2) = u(4,i,j,k+2) + rhs__(4,2) - u(5,i,j,k+2) = u(5,i,j,k+2) + rhs__(5,2) - - rhs__(1,2) = rhs__(1,1) - rhs__(2,2) = rhs__(2,1) - rhs__(3,2) = rhs__(3,1) - rhs__(4,2) = rhs__(4,1) - rhs__(5,2) = rhs__(5,1) - - rhs__(1,1) = rhs__(1,0) - rhs__(2,1) = rhs__(2,0) - rhs__(3,1) = rhs__(3,0) - rhs__(4,1) = rhs__(4,0) - rhs__(5,1) = rhs__(5,0) - end do - xvel = us(i,j,k+2) - yvel = vs(i,j,k+2) - zvel = ws(i,j,k+2) - ac = speed(i,j,k+2) - ac2u = ac*ac - uzik1 = u(1,i,j,k+2) - btuz = bt * uzik1 - t1 = btuz/ac * (rhs__(4,2) + rhs__(5,2)) - t2 = rhs__(3,2) + t1 - t3 = btuz * (rhs__(4,2) - rhs__(5,2)) - - rhs__(3,2) = uzik1*rhs__(1,2) + yvel*t2 - rhs__(4,2) = zvel*t2 + t3 - rhs__(5,2) = uzik1*(-xvel*rhs__(2,2) + - > yvel*rhs__(1,2)) + qs(i,j,k+2)*t2 + - > c2iv*ac2u*t1 + zvel*t3 - rhs__(1,2) = t2 - rhs__(2,2) = -uzik1*rhs__(2,2) + xvel*t2 - - u(1,i,j,k+2) = u(1,i,j,k+2) + rhs__(1,2) - u(2,i,j,k+2) = u(2,i,j,k+2) + rhs__(2,2) - u(3,i,j,k+2) = u(3,i,j,k+2) + rhs__(3,2) - u(4,i,j,k+2) = u(4,i,j,k+2) + rhs__(4,2) - u(5,i,j,k+2) = u(5,i,j,k+2) + rhs__(5,2) - enddo - enddo - -!DVM$ end region - if (timeron) call timer_stop(t_zsolve) - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve_mpi.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve_mpi.for deleted file mode 100644 index 7d45b66..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/SP/z_solve_mpi.for +++ /dev/null @@ -1,338 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function performs the solution of the approximate factorization -c step in the z-direction for all five matrix components -c simultaneously. The Thomas algorithm is employed to solve the -c systems for the z-lines. Boundary conditions are non-periodic -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, k1, k2, m - double precision ru1, fac1, fac2 - double precision lhs__(5,0:2), lhsm__(5,0:2), lhsp__(5,0:2) - double precision t1,t2,t3,ac,xvel,yvel,zvel,btuz,ac2u,uzik1 - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Prepare for z-solve, array redistribution -c--------------------------------------------------------------------- - - if (timeron) call timer_start(t_zsolve) - -!DVM$ region local(lhs) - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k) -!DVM$& ,private(m,k1,k2,ru1,fac1,fac2,k,lhs__,lhsp__,lhsm__) -!DVM$& ,ACROSS(OUT:rhs(0:0,0:0,0:0,0:2), lhs(0:0,0:0,0:0,0:0,0:2)) -!DVM$& ,stage(stage_n) - do k = 0, problem_size-1 - do j = 1, ny2 - do i = 1, nx2 - if (k .eq. 0) then - lhs__(1,0) = 0.0d0 - lhsp__(1,0) = 0.0d0 - lhsm__(1,0) = 0.0d0 - - lhs__(2,0) = 0.0d0 - lhsp__(2,0) = 0.0d0 - lhsm__(2,0) = 0.0d0 - - lhs__(3,0) = 1.0d0 - lhsp__(3,0) = 1.0d0 - lhsm__(3,0) = 1.0d0 - - lhs__(4,0) = 0.0d0 - lhsp__(4,0) = 0.0d0 - lhsm__(4,0) = 0.0d0 - - lhs__(5,0) = 0.0d0 - lhsp__(5,0) = 0.0d0 - lhsm__(5,0) = 0.0d0 - - - lhs__(1,1) = 0.0d0 - ru1 = c3c4*1.0d0/u(1,i,j,k) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(2,1) = - dttz2 * ws(i,j,k) - dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,k+1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(3,1) = 1.0d0 + c2dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,k+2) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(4,1) = dttz2 * ws(i,j,k+2) - dttz1 * ru1 - lhs__(5,1) = 0.0d0 - - lhs__(3,1) = lhs__(3,1) + comz5 - lhs__(4,1) = lhs__(4,1) - comz4 - lhs__(5,1) = lhs__(5,1) + comz1 - - lhsp__(1,1) = lhs__(1,1) - lhsp__(2,1) = lhs__(2,1) - dttz2 * speed(i,j,k) - lhsp__(3,1) = lhs__(3,1) - lhsp__(4,1) = lhs__(4,1) + dttz2 * speed(i,j,k+2) - lhsp__(5,1) = lhs__(5,1) - lhsm__(1,1) = lhs__(1,1) - lhsm__(2,1) = lhs__(2,1) + dttz2 * speed(i,j,k) - lhsm__(3,1) = lhs__(3,1) - lhsm__(4,1) = lhs__(4,1) - dttz2 * speed(i,j,k+2) - lhsm__(5,1) = lhs__(5,1) - else - do m = 1, 5 - lhs__(m,0) = lhs(0,m,i,j,k) - lhsp__(m,0) = lhs(1,m,i,j,k) - lhsm__(m,0) = lhs(2,m,i,j,k) - - lhs__(m,1) = lhs(0,m,i,j,k+1) - lhsp__(m,1) = lhs(1,m,i,j,k+1) - lhsm__(m,1) = lhs(2,m,i,j,k+1) - enddo - endif - - if(k + 2 .lt. nz2 + 1) then - m = k + 2 - lhs__(1,2) = 0.0d0 - - ru1 = c3c4*1.0d0/u(1,i,j,m-1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(2,2) = - dttz2 * ws(i,j,m-1) - dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,m) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(3,2) = 1.0d0 + c2dttz1 * ru1 - ru1 = c3c4*1.0d0/u(1,i,j,m+1) - ru1 = dmax1(dz4 + con43 * ru1, - > dz5 + c1c5 * ru1, - > dzmax + ru1, - > dz1) - lhs__(4,2) = dttz2 * ws(i,j,m+1) - dttz1 * ru1 - lhs__(5,2) = 0.0d0 - - if(m .eq. 1) then - lhs__(3,2) = lhs__(3,2) + comz5 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. 2) then - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .ge. 3 .and. m .le. nz2-2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - lhs__(5,2) = lhs__(5,2) + comz1 - else if(m .eq. nz2-1) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz6 - lhs__(4,2) = lhs__(4,2) - comz4 - else if(m .eq. nz2) then - lhs__(1,2) = lhs__(1,2) + comz1 - lhs__(2,2) = lhs__(2,2) - comz4 - lhs__(3,2) = lhs__(3,2) + comz5 - endif - - lhsp__(1,2) = lhs__(1,2) - lhsp__(2,2) = lhs__(2,2) - dttz2 * speed(i,j,m-1) - lhsp__(3,2) = lhs__(3,2) - lhsp__(4,2) = lhs__(4,2) + dttz2 * speed(i,j,m+1) - lhsp__(5,2) = lhs__(5,2) - lhsm__(1,2) = lhs__(1,2) - lhsm__(2,2) = lhs__(2,2) + dttz2 * speed(i,j,m-1) - lhsm__(3,2) = lhs__(3,2) - lhsm__(4,2) = lhs__(4,2) - dttz2 * speed(i,j,m+1) - lhsm__(5,2) = lhs__(5,2) - else if(k + 2 .eq. nz2+1) then - - lhs__(1,2) = 0.0d0 - lhsp__(1,2) = 0.0d0 - lhsm__(1,2) = 0.0d0 - - lhs__(2,2) = 0.0d0 - lhsp__(2,2) = 0.0d0 - lhsm__(2,2) = 0.0d0 - - lhs__(3,2) = 1.0d0 - lhsp__(3,2) = 1.0d0 - lhsm__(3,2) = 1.0d0 - - lhs__(4,2) = 0.0d0 - lhsp__(4,2) = 0.0d0 - lhsm__(4,2) = 0.0d0 - - lhs__(5,2) = 0.0d0 - lhsp__(5,2) = 0.0d0 - lhsm__(5,2) = 0.0d0 - - endif -!********************************** end of init - - k1 = k + 1 - k2 = k + 2 - fac1 = 1.d0/lhs__(3,0) - lhs__(4,0) = fac1*lhs__(4,0) - lhs__(5,0) = fac1*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - end do - - if(k .le. nz2-1) then - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - lhs__(2,2)=lhs__(2,2)-lhs__(1,2)*lhs__(4,0) - lhs__(3,2)=lhs__(3,2)-lhs__(1,2)*lhs__(5,0) - do m = 1, 3 - rhs(m,i,j,k1)=rhs(m,i,j,k1)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j,k2)=rhs(m,i,j,k2)-lhs__(1,2)*rhs(m,i,j,k) - end do - - else - lhs__(3,1)=lhs__(3,1)-lhs__(2,1)*lhs__(4,0) - lhs__(4,1)=lhs__(4,1)-lhs__(2,1)*lhs__(5,0) - if (lhs__(3,1) .ne. 0) then - fac2 = 1.d0/lhs__(3,1) - else - fac2 = 0 - endif - do m = 1, 3 - rhs(m,i,j,k1) = rhs(m,i,j,k1)-lhs__(2,1)*rhs(m,i,j,k) - rhs(m,i,j,k1) = fac2*rhs(m,i,j,k1) - end do - endif - - m = 4 - fac1 = 1.d0/lhsp__(3,0) - lhsp__(4,0) = fac1*lhsp__(4,0) - lhsp__(5,0) = fac1*lhsp__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsp__(3,1)=lhsp__(3,1)-lhsp__(2,1)*lhsp__(4,0) - lhsp__(4,1)=lhsp__(4,1)-lhsp__(2,1)*lhsp__(5,0) - rhs(m,i,j,k1) = rhs(m,i,j,k1)-lhsp__(2,1)*rhs(m,i,j,k) - if(k .lt. nz2) then - lhsp__(2,2)=lhsp__(2,2)-lhsp__(1,2)*lhsp__(4,0) - lhsp__(3,2)=lhsp__(3,2)-lhsp__(1,2)*lhsp__(5,0) - rhs(m,i,j,k2)=rhs(m,i,j,k2)-lhsp__(1,2)*rhs(m,i,j,k) - endif - m = 5 - fac1 = 1.d0/lhsm__(3,0) - lhsm__(4,0) = fac1*lhsm__(4,0) - lhsm__(5,0) = fac1*lhsm__(5,0) - rhs(m,i,j,k) = fac1*rhs(m,i,j,k) - lhsm__(3,1)=lhsm__(3,1)-lhsm__(2,1)*lhsm__(4,0) - lhsm__(4,1)=lhsm__(4,1)-lhsm__(2,1)*lhsm__(5,0) - rhs(m,i,j,k1)=rhs(m,i,j,k1) -lhsm__(2,1)*rhs(m,i,j,k) - if(k .lt. nz2) then - lhsm__(2,2)=lhsm__(2,2)-lhsm__(1,2)*lhsm__(4,0) - lhsm__(3,2)=lhsm__(3,2)-lhsm__(1,2)*lhsm__(5,0) - rhs(m,i,j,k2)=rhs(m,i,j,k2) -lhsm__(1,2)*rhs(m,i,j,k) - endif - - if(k .eq. nz2) then - rhs(4,i,j,k1) = rhs(4,i,j,k1)/lhsp__(3,1) - rhs(5,i,j,k1) = rhs(5,i,j,k1)/lhsm__(3,1) - do m = 1, 3 - rhs(m,i,j,k) = rhs(m,i,j,k)-lhs__(4,0)*rhs(m,i,j,k1) - end do - rhs(4,i,j,k) = rhs(4,i,j,k)-lhsp__(4,0)*rhs(4,i,j,k1) - rhs(5,i,j,k) = rhs(5,i,j,k)-lhsm__(4,0)*rhs(5,i,j,k1) - endif - - do m = 1,5 - lhs(0,m,i,j,k) = lhs__(m,0) - lhs(1,m,i,j,k) = lhsp__(m,0) - lhs(2,m,i,j,k) = lhsm__(m,0) - - lhs(0,m,i,j,k+1) = lhs__(m,1) - lhs(1,m,i,j,k+1) = lhsp__(m,1) - lhs(2,m,i,j,k+1) = lhsm__(m,1) - if (k .lt. nz2) then - lhs(0,m,i,j,k+2) = lhs__(m,2) - lhs(1,m,i,j,k+2) = lhsp__(m,2) - lhs(2,m,i,j,k+2) = lhsm__(m,2) - endif - enddo - enddo - enddo - enddo - -!DVM$ parallel (k,j,i) on rhs(*,i,j,k),ACROSS(rhs(0:0,0:0,0:0,0:2)) -!DVM$& ,stage(stage_n) - do k = problem_size-3, 0, -1 - do j = 1, ny2 - do i = 1, nx2 - rhs(1,i,j,k) = rhs(1,i,j,k) - - & lhs(0,4,i,j,k)*rhs(1,i,j,k+1) - - & lhs(0,5,i,j,k)*rhs(1,i,j,k+2) - rhs(2,i,j,k) = rhs(2,i,j,k) - - & lhs(0,4,i,j,k)*rhs(2,i,j,k+1) - - & lhs(0,5,i,j,k)*rhs(2,i,j,k+2) - rhs(3,i,j,k) = rhs(3,i,j,k) - - & lhs(0,4,i,j,k)*rhs(3,i,j,k+1) - - & lhs(0,5,i,j,k)*rhs(3,i,j,k+2) - - rhs(4,i,j,k) = rhs(4,i,j,k) - - & lhs(1,4,i,j,k)*rhs(4,i,j,k+1) - - & lhs(1,5,i,j,k)*rhs(4,i,j,k+2) - rhs(5,i,j,k) = rhs(5,i,j,k) - - & lhs(2,4,i,j,k)*rhs(5,i,j,k+1) - - & lhs(2,5,i,j,k)*rhs(5,i,j,k+2) - enddo - enddo - enddo - -!DVM$ parallel (k,j,i) on u(*,i,j,k) -!DVM$& ,private(t1,t2,t3,ac,xvel,yvel,zvel,btuz,ac2u,uzik1) - do k = 1, nz2 - do j = 1, ny2 - do i = 1, nx2 - xvel = us(i,j,k) - yvel = vs(i,j,k) - zvel = ws(i,j,k) - ac = speed(i,j,k) - ac2u = ac*ac - uzik1 = u(1,i,j,k) - btuz = bt * uzik1 - t1 = btuz/ac * (rhs(4,i,j,k) + rhs(5,i,j,k)) - t2 = rhs(3,i,j,k) + t1 - t3 = btuz * (rhs(4,i,j,k) - rhs(5,i,j,k)) - - u(1,i,j,k) = u(1,i,j,k) + t2 - u(2,i,j,k) = u(2,i,j,k)-uzik1*rhs(2,i,j,k)+xvel*t2 - u(3,i,j,k) = u(3,i,j,k)+uzik1*rhs(1,i,j,k)+yvel*t2 - u(4,i,j,k) = u(4,i,j,k)+ zvel*t2 + t3 - u(5,i,j,k) = u(5,i,j,k)+ uzik1*(-xvel*rhs(2,i,j,k) + - & yvel*rhs(1,i,j,k)) + qs(i,j,k)*t2 + - & c2iv*ac2u*t1 + zvel*t3 - enddo - enddo - enddo -!DVM$ end region - if (timeron) call timer_stop(t_zsolve) - - return - end \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/clear.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/clear.bat deleted file mode 100644 index 13594b8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/clear.bat +++ /dev/null @@ -1,21 +0,0 @@ -@echo off - -@set TESTS=bt sp lu mg ep cg ft -@set CLASSES=A B C - -if exist err.txt del err.txt -if exist bin rmdir /S /Q bin - -@for %%T in (%TESTS%) do ( - cd %%T - if exist comp.err del comp.err - if exist dvm.err del dvm.err - if exist *.f del *.f - if exist *.cu del *.cu - if exist *info.c del *info.c - @for %%C in (%CLASSES%) do ( - if exist err_%%C.txt del err_%%C.txt - if exist out_%%C.txt del out_%%C.txt - ) - cd ../ -) diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.bat deleted file mode 100644 index 65c6572..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -@set TESTS=BT SP LU MG EP CG FT - -@CALL config\make.def.bat - -if not exist bin mkdir bin -cd sys -if not exist setparams.exe CALL %DVM% cc setparams -cd ../ -@for %%T in (%TESTS%) do ( - START compileTest.bat %%T -) \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.sh deleted file mode 100644 index 4434f82..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compile.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -TESTS="BT SP LU MG EP CG FT" -CLASSES="A B C" - -compile_one() { - cd $1 - make CLASS=$2 - cd .. -} - -mkdir -p bin - -export FOPT="$*" -for tn in $TESTS; do - for cn in $CLASSES; do - compile_one $tn $cn - done -done - -exit 0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compileTest.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compileTest.bat deleted file mode 100644 index 5db07de..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/compileTest.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -@set CLASSES=A B C -@set Test=%1 - @for %%C in (%CLASSES%) do ( - cd %Test% - echo ### compiling test %Test%, class %%C. - CALL make.bat %%C - cd ../ - ) -exit \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def deleted file mode 100644 index 9fddcc1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def +++ /dev/null @@ -1,8 +0,0 @@ -F77 = dvm -FLINK = dvm - -FFLAGS = ${FOPT} - -UCC = cc - -BINDIR = ../bin diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def.bat deleted file mode 100644 index 15c8592..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/config/make.def.bat +++ /dev/null @@ -1,8 +0,0 @@ -rem @echo off -rem ### SET DVM PATH### -set DVMDIR= - -set DVM=%DVMDIR%\dvm -set F77=%DVMDIR%\dvm f -set RUN=%DVMDIR%\dvm run -set BIN=..\bin \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.bat deleted file mode 100644 index 137802c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -@set TESTS=bt sp lu mg ep cg ft -@set CLASSES=A B C - -@CALL config\make.def.bat - -if exist res.txt del res.txt -cd bin -@for %%T in (%TESTS%) do ( - @for %%C in (%CLASSES%) do ( - CALL %RUN% %%T.%%C.x.exe 1>>..\res.txt 2>>..\err.txt - ) -) -cd ../ \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.sh deleted file mode 100644 index e820404..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/run.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -TESTS="bt sp lu mg ep cg ft" -CLASSES="A B C" - -ALL_OK=1 - -run_one() { - if [ -f "$1" ]; then - dvm run $PROC_GRID $1 - ALL_OK=$(( ALL_OK && $? == 0 )) - else - ALL_OK=0 - fi -} - -cd bin - -for tn in $TESTS; do - for cn in $CLASSES; do - run_one $tn.$cn.x - done -done - -if [ $ALL_OK -ne 0 ]; then - echo " END OF NPB Benchmarks" -fi - -exit 0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/Makefile deleted file mode 100644 index 9fd8e5f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -include ../config/make.def - -all: setparams - -# setparams creates an npbparam.h file for each benchmark -# configuration. npbparams.h also contains info about how a benchmark -# was compiled and linked - -setparams: setparams.c ../config/make.def - $(UCC) -o setparams setparams.c - -clean: - -rm -f setparams setparams.h npbparams.h - -rm -f *~ *.o diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/make.common b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/make.common deleted file mode 100644 index 959951d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/make.common +++ /dev/null @@ -1,31 +0,0 @@ -PROGRAM = $(BINDIR)/$(BENCHMARK).$(CLASS).x - -# Class "U" is used internally by the setparams program to mean -# "unknown". This means that if you don't specify CLASS= -# on the command line, you'll get an error. It would be nice -# to be able to avoid this, but we'd have to get information -# from the setparams back to the make program, which isn't easy. -CLASS=U - -default:: ${PROGRAM} - -# This makes sure the configuration utility setparams -# is up to date. -# Note that this must be run every time, which is why the -# target does not exist and is not created. -# If you create a file called "config" you will break things. -config: - @cd ../sys; ${MAKE} all - ../sys/setparams ${BENCHMARK} ${CLASS} - -# Normally setparams updates npbparams.h only if the settings (CLASS) -# have changed. However, we also want to update if the compile options -# may have changed (set in ../config/make.def). -npbparams.h: ../config/make.def - @ echo make.def modified. Rebuilding npbparams.h just in case - rm -f npbparams.h - ../sys/setparams ${BENCHMARK} ${CLASS} - -# So that "make benchmark-name" works -${BENCHMARK}: default -${BENCHMARKU}: default diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/setparams.c b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/setparams.c deleted file mode 100644 index 258b845..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/FDVMH.fdv/sys/setparams.c +++ /dev/null @@ -1,1053 +0,0 @@ -/* - * This utility configures a NPB to be built for a specific class. - * It creates a file "npbparams.h" - * in the source directory. This file keeps state information about - * which size of benchmark is currently being built (so that nothing - * if unnecessarily rebuilt) and defines (through PARAMETER statements) - * the number of nodes and class for which a benchmark is being built. - - * The utility takes 3 arguments: - * setparams benchmark-name class - * benchmark-name is "sp", "bt", etc - * class is the size of the benchmark - * These parameters are checked for the current benchmark. If they - * are invalid, this program prints a message and aborts. - * If the parameters are ok, the current npbsize.h (actually just - * the first line) is read in. If the new parameters are the same as - * the old, nothing is done, but an exit code is returned to force the - * user to specify (otherwise the make procedure succeeds but builds a - * binary of the wrong name). Otherwise the file is rewritten. - * Errors write a message (to stdout) and abort. - * - * This program makes use of two extra benchmark "classes" - * class "X" means an invalid specification. It is returned if - * there is an error parsing the config file. - * class "U" is an external specification meaning "unknown class" - * - * Unfortunately everything has to be case sensitive. This is - * because we can always convert lower to upper or v.v. but - * can't feed this information back to the makefile, so typing - * make CLASS=a and make CLASS=A will produce different binaries. - * - * - */ - -#include -#include -#include -#include -#include -#include - -/* - * This is the master version number for this set of - * NPB benchmarks. It is in an obscure place so people - * won't accidentally change it. - */ - -#define VERSION "3.3.1" - -/* controls verbose output from setparams */ -/* #define VERBOSE */ - -#define FILENAME "npbparams.h" -#define DESC_LINE "! CLASS = %c\n" -#define DEF_CLASS_LINE "#define CLASS '%c'\n" -#define FINDENT " " -#define CONTINUE " > " - -void get_info(char *argv[], int *typep, char *classp); -void check_info(int type, char class); -void read_info(int type, char *classp); -void write_info(int type, char class); -void write_sp_info(FILE *fp, char class); -void write_bt_info(FILE *fp, char class); -void write_lu_info(FILE *fp, char class); -void write_mg_info(FILE *fp, char class); -void write_cg_info(FILE *fp, char class); -void write_ft_info(FILE *fp, char class); -void write_ep_info(FILE *fp, char class); -void write_dc_info(FILE *fp, char class); -void write_is_info(FILE *fp, char class); -void write_ua_info(FILE *fp, char class); -void write_compiler_info(int type, FILE *fp); -void write_convertdouble_info(int type, FILE *fp); -void check_line(char *line, char *label, char *val); -int check_include_line(char *line, char *filename); -void put_string(FILE *fp, char *name, char *val); -void put_def_string(FILE *fp, char *name, char *val); -void put_def_variable(FILE *fp, char *name, char *val); -int ilog2(int i); -double power(double base, int i); - -enum benchmark_types {SP, BT, LU, MG, FT, IS, EP, CG, UA, DC}; - -int main(int argc, char *argv[]) -{ - int type; - char class, class_old; - - if (argc != 3) { - printf("Usage: %s benchmark-name class\n", argv[0]); - exit(1); - } - - /* Get command line arguments. Make sure they're ok. */ - get_info(argv, &type, &class); - if (class != 'U') { -#ifdef VERBOSE - printf("setparams: For benchmark %s: class = %c\n", - argv[1], class); -#endif - check_info(type, class); - } - - /* Get old information. */ - read_info(type, &class_old); - if (class != 'U') { - if (class_old != 'X') { -#ifdef VERBOSE - printf("setparams: old settings: class = %c\n", - class_old); -#endif - } - } else { - printf("setparams:\n\ - *********************************************************************\n\ - * You must specify CLASS to build this benchmark *\n\ - * For example, to build a class A benchmark, type *\n\ - * make {benchmark-name} CLASS=A *\n\ - *********************************************************************\n\n"); - - if (class_old != 'X') { -#ifdef VERBOSE - printf("setparams: Previous settings were CLASS=%c \n", class_old); -#endif - } - exit(1); /* exit on class==U */ - } - - /* Write out new information if it's different. */ - if (class != class_old) { -#ifdef VERBOSE - printf("setparams: Writing %s\n", FILENAME); -#endif - write_info(type, class); - } else { -#ifdef VERBOSE - printf("setparams: Settings unchanged. %s unmodified\n", FILENAME); -#endif - } - - return 0; -} - - -/* - * get_info(): Get parameters from command line - */ - -void get_info(char *argv[], int *typep, char *classp) -{ - - *classp = *argv[2]; - - if (!strcmp(argv[1], "sp") || !strcmp(argv[1], "SP")) *typep = SP; - else if (!strcmp(argv[1], "bt") || !strcmp(argv[1], "BT")) *typep = BT; - else if (!strcmp(argv[1], "ft") || !strcmp(argv[1], "FT")) *typep = FT; - else if (!strcmp(argv[1], "lu") || !strcmp(argv[1], "LU")) *typep = LU; - else if (!strcmp(argv[1], "mg") || !strcmp(argv[1], "MG")) *typep = MG; - else if (!strcmp(argv[1], "is") || !strcmp(argv[1], "IS")) *typep = IS; - else if (!strcmp(argv[1], "ep") || !strcmp(argv[1], "EP")) *typep = EP; - else if (!strcmp(argv[1], "cg") || !strcmp(argv[1], "CG")) *typep = CG; - else if (!strcmp(argv[1], "ua") || !strcmp(argv[1], "UA")) *typep = UA; - else if (!strcmp(argv[1], "dc") || !strcmp(argv[1], "DC")) *typep = DC; - else { - printf("setparams: Error: unknown benchmark type %s\n", argv[1]); - exit(1); - } -} - -/* - * check_info(): Make sure command line data is ok for this benchmark - */ - -void check_info(int type, char class) -{ - - /* check class */ - if (class != 'S' && - class != 'W' && - class != 'A' && - class != 'B' && - class != 'C' && - class != 'D' && - class != 'E') { - printf("setparams: Unknown benchmark class %c\n", class); - printf("setparams: Allowed classes are \"S\", \"W\", and \"A\" through \"E\"\n"); - exit(1); - } - - if (class == 'E' && (type == IS || type == UA || type == DC)) { - printf("setparams: Benchmark class %c not defined for IS, UA, or DC\n", class); - exit(1); - } - if ((class == 'C' || class == 'D') && type == DC) { - printf("setparams: Benchmark class %c not defined for DC\n", class); - exit(1); - } - -} - - -/* - * read_info(): Read previous information from file. - * Not an error if file doesn't exist, because this - * may be the first time we're running. - * Assumes the first line of the file is in a special - * format that we understand (since we wrote it). - */ - -void read_info(int type, char *classp) -{ - int nread; - FILE *fp; - fp = fopen(FILENAME, "r"); - if (fp == NULL) { -#ifdef VERBOSE - printf("setparams: INFO: configuration file %s does not exist (yet)\n", FILENAME); -#endif - goto abort; - } - - /* first line of file contains info (fortran), first two lines (C) */ - - switch(type) { - case SP: - case BT: - case FT: - case MG: - case LU: - case EP: - case CG: - case UA: - nread = fscanf(fp, DESC_LINE, classp); - if (nread != 1) { - printf("setparams: Error parsing config file %s. Ignoring previous settings\n", FILENAME); - goto abort; - } - break; - case IS: - case DC: - nread = fscanf(fp, DEF_CLASS_LINE, classp); - if (nread != 1) { - printf("setparams: Error parsing config file %s. Ignoring previous settings\n", FILENAME); - goto abort; - } - break; - default: - /* never should have gotten this far with a bad name */ - printf("setparams: (Internal Error) Benchmark type %d unknown to this program\n", type); - exit(1); - } - - fclose(fp); - - - return; - - abort: - *classp = 'X'; - return; -} - - -/* - * write_info(): Write new information to config file. - * First line is in a special format so we can read - * it in again. Then comes a warning. The rest is all - * specific to a particular benchmark. - */ - -void write_info(int type, char class) -{ - FILE *fp; - fp = fopen(FILENAME, "w"); - if (fp == NULL) { - printf("setparams: Can't open file %s for writing\n", FILENAME); - exit(1); - } - - switch(type) { - case SP: - case BT: - case FT: - case MG: - case LU: - case EP: - case CG: - case UA: - /* Write out the header */ - fprintf(fp, DESC_LINE, class); - /* Print out a warning so bozos don't mess with the file */ - fprintf(fp, "\ -! \n\ -! \n\ -! This file is generated automatically by the setparams utility.\n\ -! It sets the number of processors and the class of the NPB\n\ -! in this directory. Do not modify it by hand.\n\ -! \n"); - break; - case IS: - fprintf(fp, DEF_CLASS_LINE, class); - fprintf(fp, "\ -/*\n\ - This file is generated automatically by the setparams utility.\n\ - It sets the number of processors and the class of the NPB\n\ - in this directory. Do not modify it by hand. */\n\ - \n"); - break; - case DC: - fprintf(fp, DEF_CLASS_LINE, class); - fprintf(fp, "\ -/*\n\ - This file is generated automatically by the setparams utility.\n\ - It sets the number of processors and the class of the NPB\n\ - in this directory. Do not modify it by hand.\n\ - This file provided for backward compatibility.\n\ - It is not used in DC benchmark. */\n\ - \n"); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", - type); - exit(1); - } - - /* Now do benchmark-specific stuff */ - switch(type) { - case SP: - write_sp_info(fp, class); - break; - case BT: - write_bt_info(fp, class); - break; - case DC: - write_dc_info(fp, class); - break; - case LU: - write_lu_info(fp, class); - break; - case MG: - write_mg_info(fp, class); - break; - case IS: - write_is_info(fp, class); - break; - case FT: - write_ft_info(fp, class); - break; - case EP: - write_ep_info(fp, class); - break; - case CG: - write_cg_info(fp, class); - break; - case UA: - write_ua_info(fp, class); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", type); - exit(1); - } - write_convertdouble_info(type, fp); - write_compiler_info(type, fp); - fclose(fp); - return; -} - - -/* - * write_sp_info(): Write SP specific info to config file - */ - -void write_sp_info(FILE *fp, char class) -{ - int problem_size, niter; - char *dt; - if (class == 'S') { problem_size = 12; dt = "0.015d0"; niter = 100; } - else if (class == 'W') { problem_size = 36; dt = "0.0015d0"; niter = 400; } - else if (class == 'A') { problem_size = 64; dt = "0.0015d0"; niter = 400; } - else if (class == 'B') { problem_size = 102; dt = "0.001d0"; niter = 400; } - else if (class == 'C') { problem_size = 162; dt = "0.00067d0"; niter = 400; } - else if (class == 'D') { problem_size = 408; dt = "0.00030d0"; niter = 500; } - else if (class == 'E') { problem_size = 1020; dt = "0.0001d0"; niter = 500; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - fprintf(fp, "%sinteger problem_size, niter_default\n", FINDENT); - fprintf(fp, "%sparameter (problem_size=%d, niter_default=%d)\n", - FINDENT, problem_size, niter); - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt); -} - -/* - * write_bt_info(): Write BT specific info to config file - */ - -void write_bt_info(FILE *fp, char class) -{ - int problem_size, niter; - char *dt; - if (class == 'S') { problem_size = 12; dt = "0.010d0"; niter = 60; } - else if (class == 'W') { problem_size = 24; dt = "0.0008d0"; niter = 200; } - else if (class == 'A') { problem_size = 64; dt = "0.0008d0"; niter = 200; } - else if (class == 'B') { problem_size = 102; dt = "0.0003d0"; niter = 200; } - else if (class == 'C') { problem_size = 162; dt = "0.0001d0"; niter = 200; } - else if (class == 'D') { problem_size = 408; dt = "0.00002d0"; niter = 250; } - else if (class == 'E') { problem_size = 1020; dt = "0.4d-5"; niter = 250; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - fprintf(fp, "%sinteger problem_size, niter_default\n", FINDENT); - fprintf(fp, "%sparameter (problem_size=%d, niter_default=%d)\n", - FINDENT, problem_size, niter); - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt); -} - -/* - * write_dc_info(): Write DC specific info to config file - */ - - -void write_dc_info(FILE *fp, char class) -{ - long int input_tuples, attrnum; - if (class == 'S') { input_tuples = 1000; attrnum = 5; } - else if (class == 'W') { input_tuples = 100000; attrnum = 10; } - else if (class == 'A') { input_tuples = 1000000; attrnum = 15; } - else if (class == 'B') { input_tuples = 10000000; attrnum = 20; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - fprintf(fp, "long long int input_tuples=%ld, attrnum=%ld;\n", - input_tuples, attrnum); -} - -/* - * write_lu_info(): Write LU specific info to config file - */ - -void write_lu_info(FILE *fp, char class) -{ - int isiz1, isiz2, itmax, inorm, problem_size; - char *dt_default; - - if (class == 'S') { problem_size = 12; dt_default = "0.5d0"; itmax = 50; } - else if (class == 'W') { problem_size = 33; dt_default = "1.5d-3"; itmax = 300; } - else if (class == 'A') { problem_size = 64; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'B') { problem_size = 102; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'C') { problem_size = 162; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'D') { problem_size = 408; dt_default = "1.0d0"; itmax = 300; } - else if (class == 'E') { problem_size = 1020; dt_default = "0.5d0"; itmax = 300; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - inorm = itmax; - isiz1 = problem_size; - isiz2 = problem_size; - - - fprintf(fp, "\n! full problem size\n"); - fprintf(fp, "%sinteger isiz1, isiz2, isiz3\n", FINDENT); - fprintf(fp, "%sparameter (isiz1=%d, isiz2=%d, isiz3=%d)\n", - FINDENT, isiz1, isiz2, problem_size ); - - fprintf(fp, "\n! number of iterations and how often to print the norm\n"); - fprintf(fp, "%sinteger itmax_default, inorm_default\n", FINDENT); - fprintf(fp, "%sparameter (itmax_default=%d, inorm_default=%d)\n", - FINDENT, itmax, inorm); - - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt_default); - -} - -/* - * write_mg_info(): Write MG specific info to config file - */ - -void write_mg_info(FILE *fp, char class) -{ - int problem_size, nit, log2_size, lt_default, lm; - int ndim1, ndim2, ndim3; - if (class == 'S') { problem_size = 32; nit = 4; } -/* else if (class == 'W') { problem_size = 64; nit = 40; }*/ - else if (class == 'W') { problem_size = 128; nit = 4; } - else if (class == 'A') { problem_size = 256; nit = 4; } - else if (class == 'B') { problem_size = 256; nit = 20; } - else if (class == 'C') { problem_size = 512; nit = 20; } - else if (class == 'D') { problem_size = 1024; nit = 50; } - else if (class == 'E') { problem_size = 2048; nit = 50; } - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - log2_size = ilog2(problem_size); - /* lt is log of largest total dimension */ - lt_default = log2_size; - /* log of log of maximum dimension on a node */ - lm = log2_size; - ndim1 = lm; - ndim3 = log2_size; - ndim2 = log2_size; - - fprintf(fp, "%sinteger nx_default, ny_default, nz_default\n", FINDENT); - fprintf(fp, "%sparameter (nx_default=%d, ny_default=%d, nz_default=%d)\n", - FINDENT, problem_size, problem_size, problem_size); - fprintf(fp, "%sinteger nit_default, lm, lt_default\n", FINDENT); - fprintf(fp, "%sparameter (nit_default=%d, lm = %d, lt_default=%d)\n", - FINDENT, nit, lm, lt_default); - fprintf(fp, "%sinteger debug_default\n", FINDENT); - fprintf(fp, "%sparameter (debug_default=%d)\n", FINDENT, 0); - fprintf(fp, "%sinteger ndim1, ndim2, ndim3\n", FINDENT); - fprintf(fp, "%sparameter (ndim1 = %d, ndim2 = %d, ndim3 = %d)\n", - FINDENT, ndim1, ndim2, ndim3); - fprintf(fp, "%sinteger%s one, nv, nr, ir\n", - FINDENT, (problem_size > 1024)? "*8" : ""); - fprintf(fp, "%sparameter (one=1)\n", FINDENT); -} - - -/* - * write_is_info(): Write IS specific info to config file - */ - -void write_is_info(FILE *fp, char class) -{ - if( class != 'S' && - class != 'W' && - class != 'A' && - class != 'B' && - class != 'C' && - class != 'D') - { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } -} - - -/* - * write_cg_info(): Write CG specific info to config file - */ - -void write_cg_info(FILE *fp, char class) -{ - int na,nonzer,niter; - char *shift,*rcond="1.0d-1"; - char *shiftS="10.", - *shiftW="12.", - *shiftA="20.", - *shiftB="60.", - *shiftC="110.", - *shiftD="500.", - *shiftE="1.5d3"; - - - if( class == 'S' ) - { na=1400; nonzer=7; niter=15; shift=shiftS; } - else if( class == 'W' ) - { na=7000; nonzer=8; niter=15; shift=shiftW; } - else if( class == 'A' ) - { na=14000; nonzer=11; niter=15; shift=shiftA; } - else if( class == 'B' ) - { na=75000; nonzer=13; niter=75; shift=shiftB; } - else if( class == 'C' ) - { na=150000; nonzer=15; niter=75; shift=shiftC; } - else if( class == 'D' ) - { na=1500000; nonzer=21; niter=100; shift=shiftD; } - else if( class == 'E' ) - { na=9000000; nonzer=26; niter=100; shift=shiftE; } - else - { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - fprintf( fp, "%sinteger na, nonzer, niter\n", FINDENT ); - fprintf( fp, "%sdouble precision shift, rcond\n", FINDENT ); - fprintf( fp, "%sparameter( na=%d,\n", FINDENT, na ); - fprintf( fp, "%s nonzer=%d,\n", CONTINUE, nonzer ); - fprintf( fp, "%s niter=%d,\n", CONTINUE, niter ); - fprintf( fp, "%s shift=%s,\n", CONTINUE, shift ); - fprintf( fp, "%s rcond=%s )\n", CONTINUE, rcond ); - -} - -/* - * write_ua_info(): Write UA specific info to config file - */ - -void write_ua_info(FILE *fp, char class) -{ - int lelt, lmor,refine_max, niter, nmxh, fre; - char *alpha; - - fre = 5; - if( class == 'S' ) - { lelt=250;lmor=11600; refine_max=4; niter=50; nmxh=10; alpha="0.040d0"; } - else if( class == 'W' ) - { lelt=700;lmor=26700; refine_max=5; niter=100; nmxh=10; alpha="0.060d0"; } - else if( class == 'A' ) - { lelt=2400;lmor=92700; refine_max=6; niter=200; nmxh=10; alpha="0.076d0"; } - else if( class == 'B' ) - { lelt=8800; lmor=334600; refine_max=7; niter=200; nmxh=10; alpha="0.076d0"; } - else if( class == 'C' ) - { lelt=33500; lmor=1262100; refine_max=8; niter=200; nmxh=10; alpha="0.067d0"; } - else if( class == 'D' ) - { lelt=515000;lmor=19500000; refine_max=10; niter=250; nmxh=10; alpha="0.046d0"; } - else - { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - - fprintf( fp, "%sinteger lelt, lmor, refine_max, fre_default\n", FINDENT ); - fprintf( fp, "%sinteger niter_default, nmxh_default\n", FINDENT ); - fprintf( fp, "%scharacter class_default\n", FINDENT ); - fprintf( fp, "%sdouble precision alpha_default\n", FINDENT ); - fprintf( fp, "%sparameter( lelt=%d,\n", FINDENT, lelt ); - fprintf( fp, "%s lmor=%d,\n", CONTINUE, lmor ); - fprintf( fp, "%s refine_max=%d,\n", CONTINUE, refine_max ); - fprintf( fp, "%s fre_default=%d,\n", CONTINUE, fre ); - fprintf( fp, "%s niter_default=%d,\n", CONTINUE, niter ); - fprintf( fp, "%s nmxh_default=%d,\n", CONTINUE, nmxh ); - fprintf( fp, "%s class_default=\"%c\",\n", CONTINUE, class ); - fprintf( fp, "%s alpha_default=%s )\n", CONTINUE, alpha ); - -} - -/* - * write_ft_info(): Write FT specific info to config file - */ - -void write_ft_info(FILE *fp, char class) -{ - /* easiest way (given the way the benchmark is written) - * is to specify log of number of grid points in each - * direction m1, m2, m3. nt is the number of iterations - */ - int nx, ny, nz, maxdim, niter; - if (class == 'S') { nx = 64; ny = 64; nz = 64; niter = 6;} - else if (class == 'W') { nx = 128; ny = 128; nz = 32; niter = 6;} - else if (class == 'A') { nx = 256; ny = 256; nz = 128; niter = 6;} - else if (class == 'B') { nx = 512; ny = 256; nz = 256; niter =20;} - else if (class == 'C') { nx = 512; ny = 512; nz = 512; niter =20;} - else if (class == 'D') { nx = 2048; ny = 1024; nz = 1024; niter =25;} - else if (class == 'E') { nx = 4096; ny = 2048; nz = 2048; niter =25;} - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - maxdim = nx; - if (ny > maxdim) maxdim = ny; - if (nz > maxdim) maxdim = nz; - fprintf(fp, "%sinteger nx, ny, nz, maxdim, niter_default\n", FINDENT); - fprintf(fp, "%sinteger%s ntotal, nxp, nyp, ntotalp\n", FINDENT, - (nx > 1024)? "*8" : ""); - fprintf(fp, "%sparameter (nx=%d, ny=%d, nz=%d, maxdim=%d)\n", - FINDENT, nx, ny, nz, maxdim); - fprintf(fp, "%sparameter (niter_default=%d)\n", FINDENT, niter); - fprintf(fp, "%sparameter (nxp=nx+1, nyp=ny)\n", FINDENT); - fprintf(fp, "%sparameter (ntotal=nx*nyp*nz)\n", FINDENT); - fprintf(fp, "%sparameter (ntotalp=nxp*nyp*nz)\n", FINDENT); - -} - -/* - * write_ep_info(): Write EP specific info to config file - */ - -void write_ep_info(FILE *fp, char class) -{ - /* easiest way (given the way the benchmark is written) - * is to specify log of number of grid points in each - * direction m1, m2, m3. nt is the number of iterations - */ - int m; - if (class == 'S') { m = 24; } - else if (class == 'W') { m = 25; } - else if (class == 'A') { m = 28; } - else if (class == 'B') { m = 30; } - else if (class == 'C') { m = 32; } - else if (class == 'D') { m = 36; } - else if (class == 'E') { m = 40; } - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - - fprintf(fp, "%scharacter class\n",FINDENT); - fprintf(fp, "%sparameter (class =\'%c\')\n", - FINDENT, class); - fprintf(fp, "%sinteger m\n", FINDENT); - fprintf(fp, "%sparameter (m=%d)\n", FINDENT, m); -} - - -/* - * This is a gross hack to allow the benchmarks to - * print out how they were compiled. Various other ways - * of doing this have been tried and they all fail on - * some machine - due to a broken "make" program, or - * F77 limitations, of whatever. Hopefully this will - * always work because it uses very portable C. Unfortunately - * it relies on parsing the make.def file - YUK. - * If your machine doesn't have or , happy hacking! - * - */ - -#define VERBOSE -#define LL 400 -#include -#define DEFFILE "../config/make.def" -#define DEFAULT_MESSAGE "(none)" -FILE *deffile; -void write_compiler_info(int type, FILE *fp) -{ - char line[LL]; - char f77[LL], flink[LL], f_lib[LL], f_inc[LL], fflags[LL], flinkflags[LL]; - char compiletime[LL], randfile[LL]; - char cc[LL], cflags[LL], clink[LL], clinkflags[LL], - c_lib[LL], c_inc[LL]; - struct tm *tmp; - time_t t; - deffile = fopen(DEFFILE, "r"); - if (deffile == NULL) { - printf("\n\ -setparams: File %s doesn't exist. To build the NAS benchmarks\n\ - you need to create it according to the instructions\n\ - in the README in the main directory and comments in \n\ - the file config/make.def.template\n", DEFFILE); - exit(1); - } - strcpy(f77, DEFAULT_MESSAGE); - strcpy(flink, DEFAULT_MESSAGE); - strcpy(f_lib, DEFAULT_MESSAGE); - strcpy(f_inc, DEFAULT_MESSAGE); - strcpy(fflags, DEFAULT_MESSAGE); - strcpy(flinkflags, DEFAULT_MESSAGE); - strcpy(randfile, DEFAULT_MESSAGE); - strcpy(cc, DEFAULT_MESSAGE); - strcpy(cflags, DEFAULT_MESSAGE); - strcpy(clink, DEFAULT_MESSAGE); - strcpy(clinkflags, DEFAULT_MESSAGE); - strcpy(c_lib, DEFAULT_MESSAGE); - strcpy(c_inc, DEFAULT_MESSAGE); - - while (fgets(line, LL, deffile) != NULL) { - if (*line == '#') continue; - /* yes, this is inefficient. but it's simple! */ - check_line(line, "F77", f77); - check_line(line, "FLINK", flink); - check_line(line, "F_LIB", f_lib); - check_line(line, "F_INC", f_inc); - check_line(line, "FFLAGS", fflags); - check_line(line, "FLINKFLAGS", flinkflags); - check_line(line, "RAND", randfile); - check_line(line, "CC", cc); - check_line(line, "CFLAGS", cflags); - check_line(line, "CLINK", clink); - check_line(line, "CLINKFLAGS", clinkflags); - check_line(line, "C_LIB", c_lib); - check_line(line, "C_INC", c_inc); - } - - - (void) time(&t); - tmp = localtime(&t); - (void) strftime(compiletime, (size_t)LL, "%d %b %Y", tmp); - - - switch(type) { - case FT: - case SP: - case BT: - case MG: - case LU: - case EP: - case CG: - case UA: - put_string(fp, "compiletime", compiletime); - put_string(fp, "npbversion", VERSION); - put_string(fp, "cs1", f77); - put_string(fp, "cs2", flink); - put_string(fp, "cs3", f_lib); - put_string(fp, "cs4", f_inc); - put_string(fp, "cs5", fflags); - put_string(fp, "cs6", flinkflags); - put_string(fp, "cs7", randfile); - break; - case IS: - case DC: - put_def_string(fp, "COMPILETIME", compiletime); - put_def_string(fp, "NPBVERSION", VERSION); - put_def_string(fp, "CC", cc); - put_def_string(fp, "CFLAGS", cflags); - put_def_string(fp, "CLINK", clink); - put_def_string(fp, "CLINKFLAGS", clinkflags); - put_def_string(fp, "C_LIB", c_lib); - put_def_string(fp, "C_INC", c_inc); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", - type); - exit(1); - } - -} - -void check_line(char *line, char *label, char *val) -{ - char *original_line; - int n; - original_line = line; - /* compare beginning of line and label */ - while (*label != '\0' && *line == *label) { - line++; label++; - } - /* if *label is not EOS, we must have had a mismatch */ - if (*label != '\0') return; - /* if *line is not a space, actual label is longer than test label */ - if (!isspace(*line) && *line != '=') return ; - /* skip over white space */ - while (isspace(*line)) line++; - /* next char should be '=' */ - if (*line != '=') return; - /* skip over white space */ - while (isspace(*++line)); - /* if EOS, nothing was specified */ - if (*line == '\0') return; - /* finally we've come to the value */ - strcpy(val, line); - /* chop off the newline at the end */ - n = strlen(val)-1; - if (n >= 0 && val[n] == '\n') - val[n--] = '\0'; - if (n >= 0 && val[n] == '\r') - val[n--] = '\0'; - /* treat continuation */ - while (val[n] == '\\' && fgets(original_line, LL, deffile)) { - line = original_line; - while (isspace(*line)) line++; - if (isspace(*original_line)) val[n++] = ' '; - while (*line && *line != '\n' && *line != '\r' && n < LL-1) - val[n++] = *line++; - val[n] = '\0'; - n--; - } -/* if (val[n] == '\\') { - printf("\n\ -setparams: Error in file make.def. Because of the way in which\n\ - command line arguments are incorporated into the\n\ - executable benchmark, you can't have any continued\n\ - lines in the file make.def, that is, lines ending\n\ - with the character \"\\\". Although it may be ugly, \n\ - you should be able to reformat without continuation\n\ - lines. The offending line is\n\ - %s\n", original_line); - exit(1); - } */ -} - -int check_include_line(char *line, char *filename) -{ - char *include_string = "include"; - /* compare beginning of line and "include" */ - while (*include_string != '\0' && *line == *include_string) { - line++; include_string++; - } - /* if *include_string is not EOS, we must have had a mismatch */ - if (*include_string != '\0') return(0); - /* if *line is not a space, first word is not "include" */ - if (!isspace(*line)) return(0); - /* skip over white space */ - while (isspace(*++line)); - /* if EOS, nothing was specified */ - if (*line == '\0') return(0); - /* next keyword should be name of include file in *filename */ - while (*filename != '\0' && *line == *filename) { - line++; filename++; - } - if (*filename != '\0' || - (*line != ' ' && *line != '\0' && *line !='\n')) return(0); - else return(1); -} - - -#define MAXL 46 -void put_string(FILE *fp, char *name, char *val) -{ - int len; - len = strlen(val); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "%scharacter %s*%d\n", FINDENT, name, len); - fprintf(fp, "%sparameter (%s=\'%s\')\n", FINDENT, name, val); -} - -/* need to escape quote (") in val */ -int fix_string_quote(char *val, char *newval, int maxl) -{ - int len; - int i, j; - len = strlen(val); - i = j = 0; - while (i < len && j < maxl) { - if (val[i] == '"') - newval[j++] = '\\'; - if (j < maxl) - newval[j++] = val[i++]; - } - newval[j] = '\0'; - return j; -} - -/* NOTE: is the ... stuff necessary in C? */ -void put_def_string(FILE *fp, char *name, char *val0) -{ - int len; - char val[MAXL+3]; - len = fix_string_quote(val0, val, MAXL+2); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "#define %s \"%s\"\n", name, val); -} - -void put_def_variable(FILE *fp, char *name, char *val) -{ - int len; - len = strlen(val); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "#define %s %s\n", name, val); -} - - - -#if 0 - -/* this version allows arbitrarily long lines but - * some compilers don't like that and they're rarely - * useful - */ - -#define LINELEN 65 -void put_string(FILE *fp, char *name, char *val) -{ - int len, nlines, pos, i; - char line[100]; - len = strlen(val); - nlines = len/LINELEN; - if (nlines*LINELEN < len) nlines++; - fprintf(fp, "%scharacter*%d %s\n", FINDENT, nlines*LINELEN, name); - fprintf(fp, "%sparameter (%s = \n", FINDENT, name); - for (i = 0; i < nlines; i++) { - pos = i*LINELEN; - if (i == 0) fprintf(fp, "%s\'", CONTINUE); - else fprintf(fp, "%s", CONTINUE); - /* number should be same as LINELEN */ - fprintf(fp, "%.65s", val+pos); - if (i == nlines-1) fprintf(fp, "\')\n"); - else fprintf(fp, "\n"); - } -} - -#endif - - -/* integer log base two. Return error is argument isn't - * a power of two or is less than or equal to zero - */ - -int ilog2(int i) -{ - int log2; - int exp2 = 1; - if (i <= 0) return(-1); - - for (log2 = 0; log2 < 30; log2++) { - if (exp2 == i) return(log2); - if (exp2 > i) break; - exp2 *= 2; - } - return(-1); -} - - - -/* Power function. We could use pow from the math library, but then - * we would have to insist on always linking with the math library, just - * for this function. Since we only need pow with integer exponents, - * we'll code it ourselves here. - */ - -double power(double base, int i) -{ - double x; - - if (i==0) return (1.0); - else if (i<0) { - base = 1.0/base; - i = -i; - } - x = 1.0; - while (i>0) { - x *=base; - i--; - } - return (x); -} - - -void write_convertdouble_info(int type, FILE *fp) -{ - switch(type) { - case SP: - case BT: - case LU: - case FT: - case MG: - case EP: - case CG: - case UA: - fprintf(fp, "%slogical convertdouble\n", FINDENT); -#ifdef CONVERTDOUBLE - fprintf(fp, "%sparameter (convertdouble = .true.)\n", FINDENT); -#else - fprintf(fp, "%sparameter (convertdouble = .false.)\n", FINDENT); -#endif - break; - } -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/Makefile deleted file mode 100644 index fd9b39d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=bt -BENCHMARKU=BT -VEC= - -include ../config/make_dvmh.def - - -OBJS = bt.o make_set.o initialize.o exact_solution.o exact_rhs.o \ - set_constants.o adi.o define.o copy_faces.o rhs.o \ - x_solve$(VEC).o add.o error.o \ - verify.o setup_mpi.o \ - ${COMMON}/print_results.o ${COMMON}/timers.o -#y_solve$(VEC).o z_solve$(VEC).o solve_subs.o -include ../sys/make.common - -# npbparams.h is included by header.h -# The following rule should do the trick but many make programs (not gmake) -# will do the wrong thing and rebuild the world every time (because the -# mod time on header.h is not changed. One solution would be to -# touch header.h but this might cause confusion if someone has -# accidentally deleted it. Instead, make the dependency on npbparams.h -# explicit in all the lines below (even though dependence is indirect). - -# header.h: npbparams.h - -${PROGRAM}: config - @if [ x$(VERSION) = xvec ] ; then \ - ${MAKE} VEC=_vec exec; \ - elif [ x$(VERSION) = xVEC ] ; then \ - ${MAKE} VEC=_vec exec; \ - else \ - ${MAKE} exec; \ - fi - -exec: $(OBJS) - @if [ x$(SUBTYPE) = xfull ] ; then \ - ${MAKE} bt-full; \ - elif [ x$(SUBTYPE) = xFULL ] ; then \ - ${MAKE} bt-full; \ - elif [ x$(SUBTYPE) = xsimple ] ; then \ - ${MAKE} bt-simple; \ - elif [ x$(SUBTYPE) = xSIMPLE ] ; then \ - ${MAKE} bt-simple; \ - elif [ x$(SUBTYPE) = xfortran ] ; then \ - ${MAKE} bt-fortran; \ - elif [ x$(SUBTYPE) = xFORTRAN ] ; then \ - ${MAKE} bt-fortran; \ - elif [ x$(SUBTYPE) = xepio ] ; then \ - ${MAKE} bt-epio; \ - elif [ x$(SUBTYPE) = xEPIO ] ; then \ - ${MAKE} bt-epio; \ - else \ - ${MAKE} bt-bt; \ - fi - -bt-bt: ${OBJS} btio.o - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}_dvmh ${OBJS} btio.o ${FMPI_LIB} - -bt-full: ${OBJS} full_mpiio.o btio_common.o - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}.mpi_io_full ${OBJS} btio_common.o full_mpiio.o ${FMPI_LIB} - -bt-simple: ${OBJS} simple_mpiio.o btio_common.o - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}.mpi_io_simple ${OBJS} btio_common.o simple_mpiio.o ${FMPI_LIB} - -bt-fortran: ${OBJS} fortran_io.o btio_common.o - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}.fortran_io ${OBJS} btio_common.o fortran_io.o ${FMPI_LIB} - -bt-epio: ${OBJS} epio.o btio_common.o - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}.ep_io ${OBJS} btio_common.o epio.o ${FMPI_LIB} - -.f.o: - ${FCOMPILE} $< - -.c.o: - ${CCOMPILE} $< - - -bt.o: bt.f header.h npbparams.h mpinpb.h -make_set.o: make_set.f header.h npbparams.h mpinpb.h -initialize.o: initialize.f header.h npbparams.h -exact_solution.o: exact_solution.f header.h npbparams.h -exact_rhs.o: exact_rhs.f header.h npbparams.h -set_constants.o: set_constants.f header.h npbparams.h -adi.o: adi.f header.h npbparams.h -define.o: define.f header.h npbparams.h -copy_faces.o: copy_faces.f header.h npbparams.h mpinpb.h -rhs.o: rhs.f header.h npbparams.h -x_solve$(VEC).o: x_solve$(VEC).f header.h work_lhs$(VEC).h npbparams.h mpinpb.h -#y_solve$(VEC).o: y_solve$(VEC).f header.h work_lhs$(VEC).h npbparams.h mpinpb.h -#z_solve$(VEC).o: z_solve$(VEC).f header.h work_lhs$(VEC).h npbparams.h mpinpb.h -#solve_subs.o: solve_subs.f npbparams.h -add.o: add.f header.h npbparams.h -error.o: error.f header.h npbparams.h mpinpb.h -verify.o: verify.f header.h npbparams.h mpinpb.h -setup_mpi.o: setup_mpi.f mpinpb.h npbparams.h -btio.o: btio.f header.h npbparams.h -btio_common.o: btio_common.f mpinpb.h npbparams.h -fortran_io.o: fortran_io.f mpinpb.h npbparams.h -simple_mpiio.o: simple_mpiio.f mpinpb.h npbparams.h -full_mpiio.o: full_mpiio.f mpinpb.h npbparams.h -epio.o: epio.f mpinpb.h npbparams.h - -clean: - - rm -f *.o *~ mputil* - - rm -f npbparams.h core *DVMH* diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/add.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/add.f deleted file mode 100644 index 995a667..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/add.f +++ /dev/null @@ -1,38 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine add - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c addition of update to the vector u -c--------------------------------------------------------------------- - - include 'header.h' - - integer c, i, j, k, m - - do c = 1, ncells - -! $omp parallel do private(k,j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,m), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - u(m,i,j,k,c) = u(m,i,j,k,c) + rhs(m,i,j,k,c) - enddo - enddo - enddo - enddo -!DVM$ end region - - enddo - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/adi.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/adi.f deleted file mode 100644 index 310ab84..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/adi.f +++ /dev/null @@ -1,25 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine adi - include 'header.h' -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -!DVM$ interval 1 - call copy_faces -!DVM$ end interval -!DVM$ interval 2 - call x_solve -!DVM$ end interval -!DVM$ interval 3 - call y_solve -!DVM$ end interval -!DVM$ interval 4 - call z_solve -!DVM$ end interval -!DVM$ interval 5 - call add -!DVM$ end interval - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/bt.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/bt.f deleted file mode 100644 index 490e9e0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/bt.f +++ /dev/null @@ -1,330 +0,0 @@ -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! B T ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. ! -! It is described in NAS Technical Reports 95-020 and 02-007. ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! - -c--------------------------------------------------------------------- -c -c Authors: R. F. Van der Wijngaart -c T. Harris -c M. Yarrow -c -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- - program MPBT -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i, niter, step, c, error, fstatus - double precision navg, mflops, mbytes, n3 - - external timer_read - double precision t, tmax, tiominv, tpc, timer_read - logical verified - character class, cbuff*40 - double precision t1(t_last+2), tsum(t_last+2), - > tming(t_last+2), tmaxg(t_last+2) - character t_recs(t_last+2)*8 - - integer wr_interval - - data t_recs/'total', 'i/o', 'rhs', 'xsolve', 'ysolve', 'zsolve', - > 'bpack', 'exch', 'xcomm', 'ycomm', 'zcomm', - > ' totcomp', ' totcomm'/ - - call setup_mpi - if (.not. active) goto 999 - -c--------------------------------------------------------------------- -c Root node reads input file (if it exists) else takes -c defaults from parameters -c--------------------------------------------------------------------- - if (node .eq. root) then - - write(*, 1000) - - open (unit=2,file='timer.flag',status='old',iostat=fstatus) - timeron = .false. - if (fstatus .eq. 0) then - timeron = .true. - close(2) - endif - - open (unit=2,file='inputbt.data',status='old', iostat=fstatus) -c - rd_interval = 0 - if (fstatus .eq. 0) then - write(*,233) - 233 format(' Reading from input file inputbt.data') - read (2,*) niter - read (2,*) dt - read (2,*) grid_points(1), grid_points(2), grid_points(3) - if (iotype .ne. 0) then - read (2,'(A)') cbuff - read (cbuff,*,iostat=i) wr_interval, rd_interval - if (i .ne. 0) rd_interval = 0 - if (wr_interval .le. 0) wr_interval = wr_default - endif - if (iotype .eq. 1) then - read (2,*) collbuf_nodes, collbuf_size - write(*,*) 'collbuf_nodes ', collbuf_nodes - write(*,*) 'collbuf_size ', collbuf_size - endif - close(2) - else - write(*,234) - niter = niter_default - dt = dt_default - grid_points(1) = problem_size - grid_points(2) = problem_size - grid_points(3) = problem_size - wr_interval = wr_default - if (iotype .eq. 1) then -c set number of nodes involved in collective buffering to 4, -c unless total number of nodes is smaller than that. -c set buffer size for collective buffering to 1MB per node -c collbuf_nodes = min(4,no_nodes) -c set default to No-File-Hints with a value of 0 - collbuf_nodes = 0 - collbuf_size = 1000000 - endif - endif - 234 format(' No input file inputbt.data. Using compiled defaults') - - write(*, 1001) grid_points(1), grid_points(2), grid_points(3) - write(*, 1002) niter, dt - if (no_nodes .ne. total_nodes) write(*, 1004) total_nodes - if (no_nodes .ne. maxcells*maxcells) - > write(*, 1005) maxcells*maxcells - write(*, 1003) no_nodes - - if (iotype .eq. 1) write(*, 1006) 'FULL MPI-IO', wr_interval - if (iotype .eq. 2) write(*, 1006) 'SIMPLE MPI-IO', wr_interval - if (iotype .eq. 3) write(*, 1006) 'EPIO', wr_interval - if (iotype .eq. 4) write(*, 1006) 'FORTRAN IO', wr_interval - - 1000 format(//, ' NAS Parallel Benchmarks 3.3 -- BT Benchmark ',/) - 1001 format(' Size: ', i4, 'x', i4, 'x', i4) - 1002 format(' Iterations: ', i4, ' dt: ', F11.7) - 1004 format(' Total number of processes: ', i5) - 1005 format(' WARNING: compiled for ', i5, ' processes ') - 1003 format(' Number of active processes: ', i5, /) - 1006 format(' BTIO -- ', A, ' write interval: ', i3 /) - - endif - - call mpi_bcast(niter, 1, MPI_INTEGER, - > root, comm_setup, error) - - call mpi_bcast(dt, 1, dp_type, - > root, comm_setup, error) - - call mpi_bcast(grid_points(1), 3, MPI_INTEGER, - > root, comm_setup, error) - - call mpi_bcast(wr_interval, 1, MPI_INTEGER, - > root, comm_setup, error) - - call mpi_bcast(rd_interval, 1, MPI_INTEGER, - > root, comm_setup, error) - - call mpi_bcast(timeron, 1, MPI_LOGICAL, - > root, comm_setup, error) - - call make_set - - do c = 1, maxcells - if ( (cell_size(1,c) .gt. IMAX) .or. - > (cell_size(2,c) .gt. JMAX) .or. - > (cell_size(3,c) .gt. KMAX) ) then - print *,node, c, (cell_size(i,c),i=1,3) - print *,' Problem size too big for compiled array sizes' - goto 999 - endif - end do - - do i = 1, t_last - call timer_clear(i) - end do - - call set_constants - - call initialize - - call setup_btio - idump = 0 - - call lhsinit - - call exact_rhs - - call compute_buffer_size(5) - -c--------------------------------------------------------------------- -c do one time step to touch all code, and reinitialize -c--------------------------------------------------------------------- -!DVM$ actual(forcing,u) - call adi - call initialize - -c--------------------------------------------------------------------- -c Synchronize before placing time stamp -c--------------------------------------------------------------------- - do i = 1, t_last - call timer_clear(i) - end do - call mpi_barrier(comm_setup, error) - - call timer_start(1) - -!DVM$ actual(forcing,u) - do step = 1, niter - - if (node .eq. root) then - if (mod(step, 20) .eq. 0 .or. step .eq. niter .or. - > step .eq. 1) then - write(*, 200) step - 200 format(' Time step ', i4) - endif - endif - - call adi - - if (iotype .ne. 0) then - if (mod(step, wr_interval).eq.0 .or. step .eq. niter) then - if (node .eq. root) then - print *, 'Writing data set, time step', step - endif - if (step .eq. niter .and. rd_interval .gt. 1) then - rd_interval = 1 - endif - call timer_start(2) - call output_timestep - call timer_stop(2) - idump = idump + 1 - endif - endif - end do - - call timer_start(2) - call btio_cleanup - call timer_stop(2) - - call timer_stop(1) - t = timer_read(1) - - call verify(niter, class, verified) - - call mpi_reduce(t, tmax, 1, - > dp_type, MPI_MAX, - > root, comm_setup, error) - - if (iotype .ne. 0) then - t = timer_read(2) - if (t .ne. 0.d0) t = 1.0d0 / t - call mpi_reduce(t, tiominv, 1, - > dp_type, MPI_SUM, - > root, comm_setup, error) - endif - - if( node .eq. root ) then - n3 = 1.0d0*grid_points(1)*grid_points(2)*grid_points(3) - navg = (grid_points(1)+grid_points(2)+grid_points(3))/3.0 - if( tmax .ne. 0. ) then - mflops = 1.0e-6*float(niter)* - > (3478.8*n3-17655.7*navg**2+28023.7*navg) - > / tmax - else - mflops = 0.0 - endif - - if (iotype .ne. 0) then - mbytes = n3 * 40.0 * idump * 1.0d-6 - tiominv = tiominv / no_nodes - t = 0.0 - if (tiominv .ne. 0.) t = 1.d0 / tiominv - tpc = 0.0 - if (tmax .ne. 0.) tpc = t * 100.0 / tmax - write(*,1100) t, tpc, mbytes, mbytes*tiominv - 1100 format(/' BTIO -- statistics:'/ - > ' I/O timing in seconds : ', f14.2/ - > ' I/O timing percentage : ', f14.2/ - > ' Total data written (MB) : ', f14.2/ - > ' I/O data rate (MB/sec) : ', f14.2) - endif - - call print_results('BT', class, grid_points(1), - > grid_points(2), grid_points(3), niter, maxcells*maxcells, - > total_nodes, tmax, mflops, ' floating point', - > verified, npbversion,compiletime, cs1, cs2, cs3, cs4, cs5, - > cs6, '(none)') - endif - - if (.not.timeron) goto 999 - - do i = 1, t_last - t1(i) = timer_read(i) - end do - t1(t_xsolve) = t1(t_xsolve) - t1(t_xcomm) - t1(t_ysolve) = t1(t_ysolve) - t1(t_ycomm) - t1(t_zsolve) = t1(t_zsolve) - t1(t_zcomm) - t1(t_last+2) = t1(t_xcomm)+t1(t_ycomm)+t1(t_zcomm)+t1(t_exch) - t1(t_last+1) = t1(t_total) - t1(t_last+2) - - call MPI_Reduce(t1, tsum, t_last+2, dp_type, MPI_SUM, - > 0, comm_setup, error) - call MPI_Reduce(t1, tming, t_last+2, dp_type, MPI_MIN, - > 0, comm_setup, error) - call MPI_Reduce(t1, tmaxg, t_last+2, dp_type, MPI_MAX, - > 0, comm_setup, error) - - if (node .eq. 0) then - write(*, 800) total_nodes - do i = 1, t_last+2 - tsum(i) = tsum(i) / total_nodes - write(*, 810) i, t_recs(i), tming(i), tmaxg(i), tsum(i) - end do - endif - 800 format(' nprocs =', i6, 11x, 'minimum', 5x, 'maximum', - > 5x, 'average') - 810 format(' timer ', i2, '(', A8, ') :', 3(2x,f10.4)) - - 999 continue - call mpi_barrier(MPI_COMM_WORLD, error) - call mpi_finalize(error) - - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio.f deleted file mode 100644 index 1fb730b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio.f +++ /dev/null @@ -1,72 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_btio - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine output_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_cleanup - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_verify(verified) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - logical verified - - verified = .true. - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine accumulate_norms(xce_acc) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision xce_acc(5) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine checksum_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio_common.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio_common.f deleted file mode 100644 index 9227a12..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/btio_common.f +++ /dev/null @@ -1,30 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine clear_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer cio, kio, jio, ix - - do cio=1,ncells - do kio=0, cell_size(3,cio)-1 - do jio=0, cell_size(2,cio)-1 - do ix=0,cell_size(1,cio)-1 - u(1,ix, jio,kio,cio) = 0 - u(2,ix, jio,kio,cio) = 0 - u(3,ix, jio,kio,cio) = 0 - u(4,ix, jio,kio,cio) = 0 - u(5,ix, jio,kio,cio) = 0 - enddo - enddo - enddo - enddo - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/copy_faces.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/copy_faces.f deleted file mode 100644 index 0c4c013..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/copy_faces.f +++ /dev/null @@ -1,408 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine copy_faces - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c This function copies the face values of a variable defined on a set -c of cells to the overlap locations of the adjacent sets of cells. -c Because a set of cells interfaces in each direction with exactly one -c other set, we only need to fill six different buffers. We could try to -c overlap communication with computation, by computing -c some internal values while communicating boundary values, but this -c adds so much overhead that it's not clearly useful. -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i, j, k, c, m, requests(0:11), p0, p1, pp,ks,ke,is,ie,je, - > p2, p3, p4, p5, b_size(0:5), ss(0:5), js, add, - > sr(0:5), error, statuses(MPI_STATUS_SIZE, 0:11) - -c--------------------------------------------------------------------- -c exit immediately if there are no faces to be copied -c--------------------------------------------------------------------- - if (no_nodes .eq. 1) then - call compute_rhs - return - endif - - ss(0) = start_send_east - ss(1) = start_send_west - ss(2) = start_send_north - ss(3) = start_send_south - ss(4) = start_send_top - ss(5) = start_send_bottom - - sr(0) = start_recv_east - sr(1) = start_recv_west - sr(2) = start_recv_north - sr(3) = start_recv_south - sr(4) = start_recv_top - sr(5) = start_recv_bottom - - b_size(0) = east_size - b_size(1) = west_size - b_size(2) = north_size - b_size(3) = south_size - b_size(4) = top_size - b_size(5) = bottom_size - -c--------------------------------------------------------------------- -c because the difference stencil for the diagonalized scheme is -c orthogonal, we do not have to perform the staged copying of faces, -c but can send all face information simultaneously to the neighboring -c cells in all directions -c--------------------------------------------------------------------- - if (timeron) call timer_start(t_bpack) - p0 = 0 - p1 = 0 - p2 = 0 - p3 = 0 - p4 = 0 - p5 = 0 - - do c = 1, ncells - -c--------------------------------------------------------------------- -c fill the buffer to be sent to eastern neighbors (i-dir) -c--------------------------------------------------------------------- - if (cell_coord(1,c) .ne. ncells) then - ke=cell_size(3,c)-1 - je=cell_size(2,c)-1 - is=cell_size(1,c)-2 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = 0, je - do i = is, ie - pp = p0+k*(je+1)*2*5+j*2*5+(i-is)*5 - do m = 1, 5 - out_buffer(ss(0)+pp+(m-1)) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p0 = p0+(ke+1)*(je+1)*(ie-is+1)*5 - endif - -c--------------------------------------------------------------------- -c fill the buffer to be sent to western neighbors -c--------------------------------------------------------------------- - if (cell_coord(1,c) .ne. 1) then - ke=cell_size(3,c)-1 - je=cell_size(2,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = 0,je - do i = 0,1 - pp = p1+k*(je+1)*2*5+j*2*5+(i-0)*5 - do m = 1, 5 - out_buffer(ss(1)+pp+m-1) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p1=p1+(ke+1)*(je+1)*2*5 - endif - -c--------------------------------------------------------------------- -c fill the buffer to be sent to northern neighbors (j_dir) -c--------------------------------------------------------------------- - if (cell_coord(2,c) .ne. ncells) then - ke=cell_size(3,c)-1 - ie=cell_size(1,c)-1 - js=cell_size(2,c)-2 - je=cell_size(2,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0,ke - do j = js,je - do i = 0,ie - pp = p2+k*(ie+1)*2*5+(j-js)*(ie+1)*5+i*5 - do m = 1, 5 - out_buffer(ss(2)+pp+(m-1)) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p2=p2+(ke+1)*(je-js+1)*(ie+1)*5 - endif - -c--------------------------------------------------------------------- -c fill the buffer to be sent to southern neighbors -c--------------------------------------------------------------------- - if (cell_coord(2,c).ne. 1) then - ke=cell_size(3,c)-1 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = 0, 1 - do i = 0, ie - pp = p3+k*(ie+1)*2*5+(j-0)*(ie+1)*5 + i*5 - do m = 1, 5 - out_buffer(ss(3)+pp+(m-1)) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p3=p3+(ke+1)*2*(ie+1)*5 - endif - -c--------------------------------------------------------------------- -c fill the buffer to be sent to top neighbors (k-dir) -c--------------------------------------------------------------------- - if (cell_coord(3,c) .ne. ncells) then - ks=cell_size(3,c)-2 - ke=cell_size(3,c)-1 - je=cell_size(2,c)-1 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = ks, ke - do j = 0, je - do i = 0, ie - pp = p4+(k-ks)*(je+1)*(ie+1)*5+j*(ie+1)*5+i*5 - do m = 1, 5 - out_buffer(ss(4)+pp+(m-1)) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p4=p4+(ke-ks+1)*(je+1)*(ie+1)*5 - endif - -c--------------------------------------------------------------------- -c fill the buffer to be sent to bottom neighbors -c--------------------------------------------------------------------- - if (cell_coord(3,c).ne. 1) then - je=cell_size(2,c)-1 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k=0,1 - do j = 0, je - do i = 0, ie - pp = p5+(k-0)*(je+1)*(ie+1)*5+j*(ie+1)*5+i*5 - do m = 1, 5 - out_buffer(ss(5)+pp+(m-1)) = u(m,i,j,k,c) - end do - end do - end do - end do -!DVM$ end region - p5=p5+2*(je+1)*(ie+1)*5 - endif - -c--------------------------------------------------------------------- -c cell loop -c--------------------------------------------------------------------- - end do - if (timeron) call timer_stop(t_bpack) - - if (timeron) call timer_start(t_exch) -!DVM$ get_actual(out_buffer) - - call mpi_irecv(in_buffer(sr(0)), b_size(0), - > dp_type, successor(1), WEST, - > comm_rhs, requests(0), error) - call mpi_irecv(in_buffer(sr(1)), b_size(1), - > dp_type, predecessor(1), EAST, - > comm_rhs, requests(1), error) - call mpi_irecv(in_buffer(sr(2)), b_size(2), - > dp_type, successor(2), SOUTH, - > comm_rhs, requests(2), error) - call mpi_irecv(in_buffer(sr(3)), b_size(3), - > dp_type, predecessor(2), NORTH, - > comm_rhs, requests(3), error) - call mpi_irecv(in_buffer(sr(4)), b_size(4), - > dp_type, successor(3), BOTTOM, - > comm_rhs, requests(4), error) - call mpi_irecv(in_buffer(sr(5)), b_size(5), - > dp_type, predecessor(3), TOP, - > comm_rhs, requests(5), error) - - call mpi_isend(out_buffer(ss(0)), b_size(0), - > dp_type, successor(1), EAST, - > comm_rhs, requests(6), error) - call mpi_isend(out_buffer(ss(1)), b_size(1), - > dp_type, predecessor(1), WEST, - > comm_rhs, requests(7), error) - call mpi_isend(out_buffer(ss(2)), b_size(2), - > dp_type,successor(2), NORTH, - > comm_rhs, requests(8), error) - call mpi_isend(out_buffer(ss(3)), b_size(3), - > dp_type,predecessor(2), SOUTH, - > comm_rhs, requests(9), error) - call mpi_isend(out_buffer(ss(4)), b_size(4), - > dp_type,successor(3), TOP, - > comm_rhs, requests(10), error) - call mpi_isend(out_buffer(ss(5)), b_size(5), - > dp_type,predecessor(3), BOTTOM, - > comm_rhs,requests(11), error) - - - call mpi_waitall(12, requests, statuses, error) - if (timeron) call timer_stop(t_exch) - -c--------------------------------------------------------------------- -c unpack the data that has just been received; -c--------------------------------------------------------------------- - if (timeron) call timer_start(t_bpack) - p0 = 0 - p1 = 0 - p2 = 0 - p3 = 0 - p4 = 0 - p5 = 0 -!DVM$ actual(in_buffer) - - do c = 1, ncells - - if (cell_coord(1,c) .ne. 1) then - ke=cell_size(3,c)-1 - je=cell_size(2,c)-1 - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = 0, je - do i = -2, -1 - pp = p0+k*(je+1)*2*5+j*2*5+(i+2)*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(1)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p0=p0+(ke+1)*(je+1)*2*5 - endif - - if (cell_coord(1,c) .ne. ncells) then - ke=cell_size(3,c)-1 - je=cell_size(2,c)-1 - ie=cell_size(1,c)+1 - is=cell_size(1,c) -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = 0, je - do i = is, ie - pp = p1+k*(je+1)*2*5+j*2*5+(i-is)*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(0)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p1=p1+(ke+1)*(je+1)*2*5 - end if - - if (cell_coord(2,c) .ne. 1) then - ke=cell_size(3,c)-1 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = -2, -1 - do i = 0, ie - pp = p2+k*(ie+1)*2*5+(j+2)*(ie+1)*5+i*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(3)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p2=p2+(ke+1)*2*(ie+1)*5 - endif - - if (cell_coord(2,c) .ne. ncells) then - ke=cell_size(3,c)-1 - ie=cell_size(1,c)-1 - js=cell_size(2,c) - je=cell_size(2,c)+1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = 0, ke - do j = js, je - do i = 0, ie - pp = p3+k*(ie+1)*2*5+(j-js)*(ie+1)*5+i*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(2)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p3=p3+(ke+1)*2*(ie+1)*5 - endif - - if (cell_coord(3,c) .ne. 1) then - je=cell_size(2,c)-1 - ie=cell_size(1,c)-1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = -2, -1 - do j = 0, je - do i = 0, ie - pp = p4+(k+2)*(je+1)*(ie+1)*5+j*(ie+1)*5+i*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(5)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p4=p4+2*(je+1)*(ie+1)*5 - endif - - if (cell_coord(3,c) .ne. ncells) then - je=cell_size(2,c)-1 - ie=cell_size(1,c)-1 - ks=cell_size(3,c) - ke=cell_size(3,c)+1 -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(pp,m), TIE(u(*,i,j,k,*)) - do k = ks, ke - do j = 0, je - do i = 0, ie - pp=p5+(k-ks)*(je+1)*(ie+1)*5+j*(ie+1)*5+i*5 - do m = 1, 5 - u(m,i,j,k,c) = in_buffer(sr(4)+pp+(m-1)) - end do - end do - end do - end do -!DVM$ end region - p5=p5+2*(je+1)*(ie+1)*5 - endif - -c--------------------------------------------------------------------- -c cells loop -c--------------------------------------------------------------------- - end do - if (timeron) call timer_stop(t_bpack) - -c--------------------------------------------------------------------- -c do the rest of the rhs that uses the copied face values -c--------------------------------------------------------------------- - call compute_rhs - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/define.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/define.f deleted file mode 100644 index 03c4c6e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/define.f +++ /dev/null @@ -1,64 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine compute_buffer_size(dim) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - integer c, dim, face_size - - if (ncells .eq. 1) return - -c--------------------------------------------------------------------- -c compute the actual sizes of the buffers; note that there is -c always one cell face that doesn't need buffer space, because it -c is at the boundary of the grid -c--------------------------------------------------------------------- - west_size = 0 - east_size = 0 - - do c = 1, ncells - face_size = cell_size(2,c) * cell_size(3,c) * dim * 2 - if (cell_coord(1,c).ne.1) west_size = west_size + face_size - if (cell_coord(1,c).ne.ncells) east_size = east_size + - > face_size - end do - - north_size = 0 - south_size = 0 - do c = 1, ncells - face_size = cell_size(1,c)*cell_size(3,c) * dim * 2 - if (cell_coord(2,c).ne.1) south_size = south_size + face_size - if (cell_coord(2,c).ne.ncells) north_size = north_size + - > face_size - end do - - top_size = 0 - bottom_size = 0 - do c = 1, ncells - face_size = cell_size(1,c) * cell_size(2,c) * dim * 2 - if (cell_coord(3,c).ne.1) bottom_size = bottom_size + - > face_size - if (cell_coord(3,c).ne.ncells) top_size = top_size + - > face_size - end do - - start_send_west = 1 - start_send_east = start_send_west + west_size - start_send_south = start_send_east + east_size - start_send_north = start_send_south + south_size - start_send_bottom = start_send_north + north_size - start_send_top = start_send_bottom + bottom_size - start_recv_west = 1 - start_recv_east = start_recv_west + west_size - start_recv_south = start_recv_east + east_size - start_recv_north = start_recv_south + south_size - start_recv_bottom = start_recv_north + north_size - start_recv_top = start_recv_bottom + bottom_size - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/epio.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/epio.f deleted file mode 100644 index 52b6309..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/epio.f +++ /dev/null @@ -1,165 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_btio - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - character*(128) newfilenm - integer m - - if (node .lt. 10000) then - write (newfilenm, 996) filenm,node - else - print *, 'error generating file names (> 10000 nodes)' - stop - endif - -996 format (a,'.',i4.4) - - open (unit=99, file=newfilenm, form='unformatted', - $ status='unknown') - - do m = 1, 5 - xce_sub(m) = 0.d0 - end do - - idump_sub = 0 - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine output_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - integer ix, iio, jio, kio, cio, aio - - do cio=1,ncells - write(99) - $ ((((u(aio,ix, jio,kio,cio),aio=1,5), - $ ix=0, cell_size(1,cio)-1), - $ jio=0, cell_size(2,cio)-1), - $ kio=0, cell_size(3,cio)-1) - enddo - - idump_sub = idump_sub + 1 - if (rd_interval .gt. 0) then - if (idump_sub .ge. rd_interval) then - - rewind(99) - call acc_sub_norms(idump+1) - - rewind(99) - idump_sub = 0 - endif - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine acc_sub_norms(idump_cur) - - include 'header.h' - include 'mpinpb.h' - - integer idump_cur - - integer ix, jio, kio, cio, ii, m, ichunk - double precision xce_single(5) - - ichunk = idump_cur - idump_sub + 1 - do ii=0, idump_sub-1 - do cio=1,ncells - read(99) - $ ((((u(m,ix, jio,kio,cio),m=1,5), - $ ix=0, cell_size(1,cio)-1), - $ jio=0, cell_size(2,cio)-1), - $ kio=0, cell_size(3,cio)-1) - enddo - - if (node .eq. root) print *, 'Reading data set ', ii+ichunk - - call error_norm(xce_single) - do m = 1, 5 - xce_sub(m) = xce_sub(m) + xce_single(m) - end do - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_cleanup - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - close(unit=99) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine accumulate_norms(xce_acc) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - double precision xce_acc(5) - - character*(128) newfilenm - integer m - - if (rd_interval .gt. 0) goto 20 - - if (node .lt. 10000) then - write (newfilenm, 996) filenm,node - else - print *, 'error generating file names (> 10000 nodes)' - stop - endif - -996 format (a,'.',i4.4) - - open (unit=99, file=newfilenm, - $ form='unformatted') - -c clear the last time step - - call clear_timestep - -c read back the time steps and accumulate norms - - call acc_sub_norms(idump) - - close(unit=99) - - 20 continue - do m = 1, 5 - xce_acc(m) = xce_sub(m) / dble(idump) - end do - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/error.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/error.f deleted file mode 100644 index 7993bf1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/error.f +++ /dev/null @@ -1,107 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine error_norm(rms) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function computes the norm of the difference between the -c computed solution and the exact solution -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer c, i, j, k, m, ii, jj, kk, d, error - double precision xi, eta, zeta, u_exact(5), rms(5), rms_work(5), - > add - - do m = 1, 5 - rms_work(m) = 0.0d0 - enddo - -!DVM$ get_actual(u) - do c = 1, ncells - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - ii = 0 - do i = cell_low(1,c), cell_high(1,c) - xi = dble(i) * dnxm1 - call exact_solution(xi, eta, zeta, u_exact) - - do m = 1, 5 - add = u(m,ii,jj,kk,c)-u_exact(m) - rms_work(m) = rms_work(m) + add*add - enddo - ii = ii + 1 - enddo - jj = jj + 1 - enddo - kk = kk + 1 - enddo - enddo - - call mpi_allreduce(rms_work, rms, 5, dp_type, - > MPI_SUM, comm_setup, error) - - do m = 1, 5 - do d = 1, 3 - rms(m) = rms(m) / dble(grid_points(d)-2) - enddo - rms(m) = dsqrt(rms(m)) - enddo - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine rhs_norm(rms) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer c, i, j, k, d, m, error - double precision rms(5), rms_work(5), add - - do m = 1, 5 - rms_work(m) = 0.0d0 - enddo -!DVM$ get_actual(rhs) - do c = 1, ncells - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - add = rhs(m,i,j,k,c) - rms_work(m) = rms_work(m) + add*add - enddo - enddo - enddo - enddo - enddo - - call mpi_allreduce(rms_work, rms, 5, dp_type, - > MPI_SUM, comm_setup, error) - - do m = 1, 5 - do d = 1, 3 - rms(m) = rms(m) / dble(grid_points(d)-2) - enddo - rms(m) = dsqrt(rms(m)) - enddo - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_rhs.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_rhs.f deleted file mode 100644 index 26a2871..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_rhs.f +++ /dev/null @@ -1,360 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine exact_rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c compute the right hand side based on exact solution -c--------------------------------------------------------------------- - - include 'header.h' - - double precision dtemp(5), xi, eta, zeta, dtpp - integer c, m, i, j, k, ip1, im1, jp1, - > jm1, km1, kp1 - - -c--------------------------------------------------------------------- -c loop over all cells owned by this node -c--------------------------------------------------------------------- - do c = 1, ncells - -c--------------------------------------------------------------------- -c initialize -c--------------------------------------------------------------------- - do k= 0, cell_size(3,c)-1 - do j = 0, cell_size(2,c)-1 - do i = 0, cell_size(1,c)-1 - do m = 1, 5 - forcing(m,i,j,k,c) = 0.0d0 - enddo - enddo - enddo - enddo - -c--------------------------------------------------------------------- -c xi-direction flux differences -c--------------------------------------------------------------------- - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - zeta = dble(k+cell_low(3,c)) * dnzm1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - eta = dble(j+cell_low(2,c)) * dnym1 - - do i=-2*(1-start(1,c)), cell_size(1,c)+1-2*end(1,c) - xi = dble(i+cell_low(1,c)) * dnxm1 - - call exact_solution(xi, eta, zeta, dtemp) - do m = 1, 5 - ue(i,m) = dtemp(m) - enddo - - dtpp = 1.0d0 / dtemp(1) - - do m = 2, 5 - buf(i,m) = dtpp * dtemp(m) - enddo - - cuf(i) = buf(i,2) * buf(i,2) - buf(i,1) = cuf(i) + buf(i,3) * buf(i,3) + - > buf(i,4) * buf(i,4) - q(i) = 0.5d0*(buf(i,2)*ue(i,2) + buf(i,3)*ue(i,3) + - > buf(i,4)*ue(i,4)) - - enddo - - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - im1 = i-1 - ip1 = i+1 - - forcing(1,i,j,k,c) = forcing(1,i,j,k,c) - - > tx2*( ue(ip1,2)-ue(im1,2) )+ - > dx1tx1*(ue(ip1,1)-2.0d0*ue(i,1)+ue(im1,1)) - - forcing(2,i,j,k,c) = forcing(2,i,j,k,c) - tx2 * ( - > (ue(ip1,2)*buf(ip1,2)+c2*(ue(ip1,5)-q(ip1)))- - > (ue(im1,2)*buf(im1,2)+c2*(ue(im1,5)-q(im1))))+ - > xxcon1*(buf(ip1,2)-2.0d0*buf(i,2)+buf(im1,2))+ - > dx2tx1*( ue(ip1,2)-2.0d0* ue(i,2)+ue(im1,2)) - - forcing(3,i,j,k,c) = forcing(3,i,j,k,c) - tx2 * ( - > ue(ip1,3)*buf(ip1,2)-ue(im1,3)*buf(im1,2))+ - > xxcon2*(buf(ip1,3)-2.0d0*buf(i,3)+buf(im1,3))+ - > dx3tx1*( ue(ip1,3)-2.0d0*ue(i,3) +ue(im1,3)) - - forcing(4,i,j,k,c) = forcing(4,i,j,k,c) - tx2*( - > ue(ip1,4)*buf(ip1,2)-ue(im1,4)*buf(im1,2))+ - > xxcon2*(buf(ip1,4)-2.0d0*buf(i,4)+buf(im1,4))+ - > dx4tx1*( ue(ip1,4)-2.0d0* ue(i,4)+ ue(im1,4)) - - forcing(5,i,j,k,c) = forcing(5,i,j,k,c) - tx2*( - > buf(ip1,2)*(c1*ue(ip1,5)-c2*q(ip1))- - > buf(im1,2)*(c1*ue(im1,5)-c2*q(im1)))+ - > 0.5d0*xxcon3*(buf(ip1,1)-2.0d0*buf(i,1)+ - > buf(im1,1))+ - > xxcon4*(cuf(ip1)-2.0d0*cuf(i)+cuf(im1))+ - > xxcon5*(buf(ip1,5)-2.0d0*buf(i,5)+buf(im1,5))+ - > dx5tx1*( ue(ip1,5)-2.0d0* ue(i,5)+ ue(im1,5)) - enddo - -c--------------------------------------------------------------------- -c Fourth-order dissipation -c--------------------------------------------------------------------- - if (start(1,c) .gt. 0) then - do m = 1, 5 - i = 1 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (5.0d0*ue(i,m) - 4.0d0*ue(i+1,m) +ue(i+2,m)) - i = 2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (-4.0d0*ue(i-1,m) + 6.0d0*ue(i,m) - - > 4.0d0*ue(i+1,m) + ue(i+2,m)) - enddo - endif - - do i = start(1,c)*3, cell_size(1,c)-3*end(1,c)-1 - do m = 1, 5 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp* - > (ue(i-2,m) - 4.0d0*ue(i-1,m) + - > 6.0d0*ue(i,m) - 4.0d0*ue(i+1,m) + ue(i+2,m)) - enddo - enddo - - if (end(1,c) .gt. 0) then - do m = 1, 5 - i = cell_size(1,c)-3 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(i-2,m) - 4.0d0*ue(i-1,m) + - > 6.0d0*ue(i,m) - 4.0d0*ue(i+1,m)) - i = cell_size(1,c)-2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(i-2,m) - 4.0d0*ue(i-1,m) + 5.0d0*ue(i,m)) - enddo - endif - - enddo - enddo - -c--------------------------------------------------------------------- -c eta-direction flux differences -c--------------------------------------------------------------------- - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - zeta = dble(k+cell_low(3,c)) * dnzm1 - do i=start(1,c), cell_size(1,c)-end(1,c)-1 - xi = dble(i+cell_low(1,c)) * dnxm1 - - do j=-2*(1-start(2,c)), cell_size(2,c)+1-2*end(2,c) - eta = dble(j+cell_low(2,c)) * dnym1 - - call exact_solution(xi, eta, zeta, dtemp) - do m = 1, 5 - ue(j,m) = dtemp(m) - enddo - - dtpp = 1.0d0/dtemp(1) - - do m = 2, 5 - buf(j,m) = dtpp * dtemp(m) - enddo - - cuf(j) = buf(j,3) * buf(j,3) - buf(j,1) = cuf(j) + buf(j,2) * buf(j,2) + - > buf(j,4) * buf(j,4) - q(j) = 0.5d0*(buf(j,2)*ue(j,2) + buf(j,3)*ue(j,3) + - > buf(j,4)*ue(j,4)) - enddo - - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - jm1 = j-1 - jp1 = j+1 - - forcing(1,i,j,k,c) = forcing(1,i,j,k,c) - - > ty2*( ue(jp1,3)-ue(jm1,3) )+ - > dy1ty1*(ue(jp1,1)-2.0d0*ue(j,1)+ue(jm1,1)) - - forcing(2,i,j,k,c) = forcing(2,i,j,k,c) - ty2*( - > ue(jp1,2)*buf(jp1,3)-ue(jm1,2)*buf(jm1,3))+ - > yycon2*(buf(jp1,2)-2.0d0*buf(j,2)+buf(jm1,2))+ - > dy2ty1*( ue(jp1,2)-2.0* ue(j,2)+ ue(jm1,2)) - - forcing(3,i,j,k,c) = forcing(3,i,j,k,c) - ty2*( - > (ue(jp1,3)*buf(jp1,3)+c2*(ue(jp1,5)-q(jp1)))- - > (ue(jm1,3)*buf(jm1,3)+c2*(ue(jm1,5)-q(jm1))))+ - > yycon1*(buf(jp1,3)-2.0d0*buf(j,3)+buf(jm1,3))+ - > dy3ty1*( ue(jp1,3)-2.0d0*ue(j,3) +ue(jm1,3)) - - forcing(4,i,j,k,c) = forcing(4,i,j,k,c) - ty2*( - > ue(jp1,4)*buf(jp1,3)-ue(jm1,4)*buf(jm1,3))+ - > yycon2*(buf(jp1,4)-2.0d0*buf(j,4)+buf(jm1,4))+ - > dy4ty1*( ue(jp1,4)-2.0d0*ue(j,4)+ ue(jm1,4)) - - forcing(5,i,j,k,c) = forcing(5,i,j,k,c) - ty2*( - > buf(jp1,3)*(c1*ue(jp1,5)-c2*q(jp1))- - > buf(jm1,3)*(c1*ue(jm1,5)-c2*q(jm1)))+ - > 0.5d0*yycon3*(buf(jp1,1)-2.0d0*buf(j,1)+ - > buf(jm1,1))+ - > yycon4*(cuf(jp1)-2.0d0*cuf(j)+cuf(jm1))+ - > yycon5*(buf(jp1,5)-2.0d0*buf(j,5)+buf(jm1,5))+ - > dy5ty1*(ue(jp1,5)-2.0d0*ue(j,5)+ue(jm1,5)) - enddo - -c--------------------------------------------------------------------- -c Fourth-order dissipation -c--------------------------------------------------------------------- - if (start(2,c) .gt. 0) then - do m = 1, 5 - j = 1 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (5.0d0*ue(j,m) - 4.0d0*ue(j+1,m) +ue(j+2,m)) - j = 2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (-4.0d0*ue(j-1,m) + 6.0d0*ue(j,m) - - > 4.0d0*ue(j+1,m) + ue(j+2,m)) - enddo - endif - - do j = start(2,c)*3, cell_size(2,c)-3*end(2,c)-1 - do m = 1, 5 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp* - > (ue(j-2,m) - 4.0d0*ue(j-1,m) + - > 6.0d0*ue(j,m) - 4.0d0*ue(j+1,m) + ue(j+2,m)) - enddo - enddo - - if (end(2,c) .gt. 0) then - do m = 1, 5 - j = cell_size(2,c)-3 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(j-2,m) - 4.0d0*ue(j-1,m) + - > 6.0d0*ue(j,m) - 4.0d0*ue(j+1,m)) - j = cell_size(2,c)-2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(j-2,m) - 4.0d0*ue(j-1,m) + 5.0d0*ue(j,m)) - - enddo - endif - - enddo - enddo - -c--------------------------------------------------------------------- -c zeta-direction flux differences -c--------------------------------------------------------------------- - do j=start(2,c), cell_size(2,c)-end(2,c)-1 - eta = dble(j+cell_low(2,c)) * dnym1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - xi = dble(i+cell_low(1,c)) * dnxm1 - - do k=-2*(1-start(3,c)), cell_size(3,c)+1-2*end(3,c) - zeta = dble(k+cell_low(3,c)) * dnzm1 - - call exact_solution(xi, eta, zeta, dtemp) - do m = 1, 5 - ue(k,m) = dtemp(m) - enddo - - dtpp = 1.0d0/dtemp(1) - - do m = 2, 5 - buf(k,m) = dtpp * dtemp(m) - enddo - - cuf(k) = buf(k,4) * buf(k,4) - buf(k,1) = cuf(k) + buf(k,2) * buf(k,2) + - > buf(k,3) * buf(k,3) - q(k) = 0.5d0*(buf(k,2)*ue(k,2) + buf(k,3)*ue(k,3) + - > buf(k,4)*ue(k,4)) - enddo - - do k=start(3,c), cell_size(3,c)-end(3,c)-1 - km1 = k-1 - kp1 = k+1 - - forcing(1,i,j,k,c) = forcing(1,i,j,k,c) - - > tz2*( ue(kp1,4)-ue(km1,4) )+ - > dz1tz1*(ue(kp1,1)-2.0d0*ue(k,1)+ue(km1,1)) - - forcing(2,i,j,k,c) = forcing(2,i,j,k,c) - tz2 * ( - > ue(kp1,2)*buf(kp1,4)-ue(km1,2)*buf(km1,4))+ - > zzcon2*(buf(kp1,2)-2.0d0*buf(k,2)+buf(km1,2))+ - > dz2tz1*( ue(kp1,2)-2.0d0* ue(k,2)+ ue(km1,2)) - - forcing(3,i,j,k,c) = forcing(3,i,j,k,c) - tz2 * ( - > ue(kp1,3)*buf(kp1,4)-ue(km1,3)*buf(km1,4))+ - > zzcon2*(buf(kp1,3)-2.0d0*buf(k,3)+buf(km1,3))+ - > dz3tz1*(ue(kp1,3)-2.0d0*ue(k,3)+ue(km1,3)) - - forcing(4,i,j,k,c) = forcing(4,i,j,k,c) - tz2 * ( - > (ue(kp1,4)*buf(kp1,4)+c2*(ue(kp1,5)-q(kp1)))- - > (ue(km1,4)*buf(km1,4)+c2*(ue(km1,5)-q(km1))))+ - > zzcon1*(buf(kp1,4)-2.0d0*buf(k,4)+buf(km1,4))+ - > dz4tz1*( ue(kp1,4)-2.0d0*ue(k,4) +ue(km1,4)) - - forcing(5,i,j,k,c) = forcing(5,i,j,k,c) - tz2 * ( - > buf(kp1,4)*(c1*ue(kp1,5)-c2*q(kp1))- - > buf(km1,4)*(c1*ue(km1,5)-c2*q(km1)))+ - > 0.5d0*zzcon3*(buf(kp1,1)-2.0d0*buf(k,1) - > +buf(km1,1))+ - > zzcon4*(cuf(kp1)-2.0d0*cuf(k)+cuf(km1))+ - > zzcon5*(buf(kp1,5)-2.0d0*buf(k,5)+buf(km1,5))+ - > dz5tz1*( ue(kp1,5)-2.0d0*ue(k,5)+ ue(km1,5)) - enddo - -c--------------------------------------------------------------------- -c Fourth-order dissipation -c--------------------------------------------------------------------- - if (start(3,c) .gt. 0) then - do m = 1, 5 - k = 1 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (5.0d0*ue(k,m) - 4.0d0*ue(k+1,m) +ue(k+2,m)) - k = 2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (-4.0d0*ue(k-1,m) + 6.0d0*ue(k,m) - - > 4.0d0*ue(k+1,m) + ue(k+2,m)) - enddo - endif - - do k = start(3,c)*3, cell_size(3,c)-3*end(3,c)-1 - do m = 1, 5 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp* - > (ue(k-2,m) - 4.0d0*ue(k-1,m) + - > 6.0d0*ue(k,m) - 4.0d0*ue(k+1,m) + ue(k+2,m)) - enddo - enddo - - if (end(3,c) .gt. 0) then - do m = 1, 5 - k = cell_size(3,c)-3 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(k-2,m) - 4.0d0*ue(k-1,m) + - > 6.0d0*ue(k,m) - 4.0d0*ue(k+1,m)) - k = cell_size(3,c)-2 - forcing(m,i,j,k,c) = forcing(m,i,j,k,c) - dssp * - > (ue(k-2,m) - 4.0d0*ue(k-1,m) + 5.0d0*ue(k,m)) - enddo - endif - - enddo - enddo - -c--------------------------------------------------------------------- -c now change the sign of the forcing function, -c--------------------------------------------------------------------- - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - forcing(m,i,j,k,c) = -1.d0 * forcing(m,i,j,k,c) - enddo - enddo - enddo - enddo - - enddo - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_solution.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_solution.f deleted file mode 100644 index b093b46..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/exact_solution.f +++ /dev/null @@ -1,29 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine exact_solution(xi,eta,zeta,dtemp) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c this function returns the exact solution at point xi, eta, zeta -c--------------------------------------------------------------------- - - include 'header.h' - - double precision xi, eta, zeta, dtemp(5) - integer m - - do m = 1, 5 - dtemp(m) = ce(m,1) + - > xi*(ce(m,2) + xi*(ce(m,5) + xi*(ce(m,8) + xi*ce(m,11)))) + - > eta*(ce(m,3) + eta*(ce(m,6) + eta*(ce(m,9) + eta*ce(m,12))))+ - > zeta*(ce(m,4) + zeta*(ce(m,7) + zeta*(ce(m,10) + - > zeta*ce(m,13)))) - enddo - - return - end - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/fortran_io.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/fortran_io.f deleted file mode 100644 index d3085a0..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/fortran_io.f +++ /dev/null @@ -1,174 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_btio - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - character*(128) newfilenm - integer m, ierr - - if (node.eq.root) record_length = 40/fortran_rec_sz - call mpi_bcast(record_length, 1, MPI_INTEGER, - > root, comm_setup, ierr) - - open (unit=99, file=filenm, - $ form='unformatted', access='direct', - $ recl=record_length) - - do m = 1, 5 - xce_sub(m) = 0.d0 - end do - - idump_sub = 0 - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine output_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - integer ix, jio, kio, cio - - do cio=1,ncells - do kio=0, cell_size(3,cio)-1 - do jio=0, cell_size(2,cio)-1 - iseek=(cell_low(1,cio) + - $ PROBLEM_SIZE*((cell_low(2,cio)+jio) + - $ PROBLEM_SIZE*((cell_low(3,cio)+kio) + - $ PROBLEM_SIZE*idump_sub))) - - do ix=0,cell_size(1,cio)-1 - write(99, rec=iseek+ix+1) - $ u(1,ix, jio,kio,cio), - $ u(2,ix, jio,kio,cio), - $ u(3,ix, jio,kio,cio), - $ u(4,ix, jio,kio,cio), - $ u(5,ix, jio,kio,cio) - enddo - enddo - enddo - enddo - - idump_sub = idump_sub + 1 - if (rd_interval .gt. 0) then - if (idump_sub .ge. rd_interval) then - - call acc_sub_norms(idump+1) - - idump_sub = 0 - endif - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine acc_sub_norms(idump_cur) - - include 'header.h' - include 'mpinpb.h' - - integer idump_cur - - integer ix, jio, kio, cio, ii, m, ichunk - double precision xce_single(5) - - ichunk = idump_cur - idump_sub + 1 - do ii=0, idump_sub-1 - do cio=1,ncells - do kio=0, cell_size(3,cio)-1 - do jio=0, cell_size(2,cio)-1 - iseek=(cell_low(1,cio) + - $ PROBLEM_SIZE*((cell_low(2,cio)+jio) + - $ PROBLEM_SIZE*((cell_low(3,cio)+kio) + - $ PROBLEM_SIZE*ii))) - - - do ix=0,cell_size(1,cio)-1 - read(99, rec=iseek+ix+1) - $ u(1,ix, jio,kio,cio), - $ u(2,ix, jio,kio,cio), - $ u(3,ix, jio,kio,cio), - $ u(4,ix, jio,kio,cio), - $ u(5,ix, jio,kio,cio) - enddo - enddo - enddo - enddo - - if (node .eq. root) print *, 'Reading data set ', ii+ichunk - - call error_norm(xce_single) - do m = 1, 5 - xce_sub(m) = xce_sub(m) + xce_single(m) - end do - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_cleanup - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - close(unit=99) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine accumulate_norms(xce_acc) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - double precision xce_acc(5) - integer m - - if (rd_interval .gt. 0) goto 20 - - open (unit=99, file=filenm, - $ form='unformatted', access='direct', - $ recl=record_length) - -c clear the last time step - - call clear_timestep - -c read back the time steps and accumulate norms - - call acc_sub_norms(idump) - - close(unit=99) - - 20 continue - do m = 1, 5 - xce_acc(m) = xce_sub(m) / dble(idump) - end do - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/full_mpiio.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/full_mpiio.f deleted file mode 100644 index ecfd41c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/full_mpiio.f +++ /dev/null @@ -1,307 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_btio - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer ierr - integer mstatus(MPI_STATUS_SIZE) - integer sizes(4), starts(4), subsizes(4) - integer cell_btype(maxcells), cell_ftype(maxcells) - integer cell_blength(maxcells) - integer info - character*20 cb_nodes, cb_size - integer c, m - integer cell_disp(maxcells) - - call mpi_bcast(collbuf_nodes, 1, MPI_INTEGER, - > root, comm_setup, ierr) - - call mpi_bcast(collbuf_size, 1, MPI_INTEGER, - > root, comm_setup, ierr) - - if (collbuf_nodes .eq. 0) then - info = MPI_INFO_NULL - else - write (cb_nodes,*) collbuf_nodes - write (cb_size,*) collbuf_size - call MPI_Info_create(info, ierr) - call MPI_Info_set(info, 'cb_nodes', cb_nodes, ierr) - call MPI_Info_set(info, 'cb_buffer_size', cb_size, ierr) - call MPI_Info_set(info, 'collective_buffering', 'true', ierr) - endif - - call MPI_Type_contiguous(5, MPI_DOUBLE_PRECISION, - $ element, ierr) - call MPI_Type_commit(element, ierr) - call MPI_Type_extent(element, eltext, ierr) - - do c = 1, ncells -c -c Outer array dimensions ar same for every cell -c - sizes(1) = IMAX+4 - sizes(2) = JMAX+4 - sizes(3) = KMAX+4 -c -c 4th dimension is cell number, total of maxcells cells -c - sizes(4) = maxcells -c -c Internal dimensions of cells can differ slightly between cells -c - subsizes(1) = cell_size(1, c) - subsizes(2) = cell_size(2, c) - subsizes(3) = cell_size(3, c) -c -c Cell is 4th dimension, 1 cell per cell type to handle varying -c cell sub-array sizes -c - subsizes(4) = 1 - -c -c type constructors use 0-based start addresses -c - starts(1) = 2 - starts(2) = 2 - starts(3) = 2 - starts(4) = c-1 - -c -c Create buftype for a cell -c - call MPI_Type_create_subarray(4, sizes, subsizes, - $ starts, MPI_ORDER_FORTRAN, element, - $ cell_btype(c), ierr) -c -c block length and displacement for joining cells - -c 1 cell buftype per block, cell buftypes have own displacment -c generated from cell number (4th array dimension) -c - cell_blength(c) = 1 - cell_disp(c) = 0 - - enddo -c -c Create combined buftype for all cells -c - call MPI_Type_struct(ncells, cell_blength, cell_disp, - $ cell_btype, combined_btype, ierr) - call MPI_Type_commit(combined_btype, ierr) - - do c = 1, ncells -c -c Entire array size -c - sizes(1) = PROBLEM_SIZE - sizes(2) = PROBLEM_SIZE - sizes(3) = PROBLEM_SIZE - -c -c Size of c'th cell -c - subsizes(1) = cell_size(1, c) - subsizes(2) = cell_size(2, c) - subsizes(3) = cell_size(3, c) - -c -c Starting point in full array of c'th cell -c - starts(1) = cell_low(1,c) - starts(2) = cell_low(2,c) - starts(3) = cell_low(3,c) - - call MPI_Type_create_subarray(3, sizes, subsizes, - $ starts, MPI_ORDER_FORTRAN, - $ element, cell_ftype(c), ierr) - cell_blength(c) = 1 - cell_disp(c) = 0 - enddo - - call MPI_Type_struct(ncells, cell_blength, cell_disp, - $ cell_ftype, combined_ftype, ierr) - call MPI_Type_commit(combined_ftype, ierr) - - iseek=0 - if (node .eq. root) then - call MPI_File_delete(filenm, MPI_INFO_NULL, ierr) - endif - - - call MPI_Barrier(comm_solve, ierr) - - call MPI_File_open(comm_solve, - $ filenm, - $ MPI_MODE_RDWR+MPI_MODE_CREATE, - $ MPI_INFO_NULL, fp, ierr) - - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error opening file' - stop - endif - - call MPI_File_set_view(fp, iseek, element, - $ combined_ftype, 'native', info, ierr) - - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error setting file view' - stop - endif - - do m = 1, 5 - xce_sub(m) = 0.d0 - end do - - idump_sub = 0 - - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine output_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - integer mstatus(MPI_STATUS_SIZE) - integer ierr - - call MPI_File_write_at_all(fp, iseek, u, - $ 1, combined_btype, mstatus, ierr) - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error writing to file' - stop - endif - - call MPI_Type_size(combined_btype, iosize, ierr) - iseek = iseek + iosize/eltext - - idump_sub = idump_sub + 1 - if (rd_interval .gt. 0) then - if (idump_sub .ge. rd_interval) then - - iseek = 0 - call acc_sub_norms(idump+1) - - iseek = 0 - idump_sub = 0 - endif - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine acc_sub_norms(idump_cur) - - include 'header.h' - include 'mpinpb.h' - - integer idump_cur - - integer ii, m, ichunk - integer ierr - integer mstatus(MPI_STATUS_SIZE) - double precision xce_single(5) - - ichunk = idump_cur - idump_sub + 1 - do ii=0, idump_sub-1 - - call MPI_File_read_at_all(fp, iseek, u, - $ 1, combined_btype, mstatus, ierr) - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error reading back file' - call MPI_File_close(fp, ierr) - stop - endif - - call MPI_Type_size(combined_btype, iosize, ierr) - iseek = iseek + iosize/eltext - - if (node .eq. root) print *, 'Reading data set ', ii+ichunk - - call error_norm(xce_single) - do m = 1, 5 - xce_sub(m) = xce_sub(m) + xce_single(m) - end do - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_cleanup - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - integer ierr - - call MPI_File_close(fp, ierr) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - - subroutine accumulate_norms(xce_acc) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - double precision xce_acc(5) - integer m, ierr - - if (rd_interval .gt. 0) goto 20 - - call MPI_File_open(comm_solve, - $ filenm, - $ MPI_MODE_RDONLY, - $ MPI_INFO_NULL, - $ fp, - $ ierr) - - iseek = 0 - call MPI_File_set_view(fp, iseek, element, combined_ftype, - $ 'native', MPI_INFO_NULL, ierr) - -c clear the last time step - - call clear_timestep - -c read back the time steps and accumulate norms - - call acc_sub_norms(idump) - - call MPI_File_close(fp, ierr) - - 20 continue - do m = 1, 5 - xce_acc(m) = xce_sub(m) / dble(idump) - end do - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/header.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/header.h deleted file mode 100644 index cb815eb..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/header.h +++ /dev/null @@ -1,146 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -c -c header.h -c -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - implicit none - -c--------------------------------------------------------------------- -c The following include file is generated automatically by the -c "setparams" utility. It defines -c maxcells: the square root of the maximum number of processors -c problem_size: 12, 64, 102, 162 (for class T, A, B, C) -c dt_default: default time step for this problem size if no -c config file -c niter_default: default number of iterations for this problem size -c--------------------------------------------------------------------- - - include 'npbparams.h' - - integer aa, bb, cc, BLOCK_SIZE - parameter (aa=1, bb=2, cc=3, BLOCK_SIZE=5) - - integer ncells, grid_points(3) - double precision elapsed_time - common /global/ elapsed_time, ncells, grid_points - - double precision tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3, - > dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, - > dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt, - > ce(5,13), dxmax, dymax, dzmax, xxcon1, xxcon2, - > xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1, - > dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4, - > yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1, - > zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1, - > dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1, - > dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2, - > c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1, bt, - > dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1, - > c2dtty1, c2dttz1, comz1, comz4, comz5, comz6, - > c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16 - - common /constants/ tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3, - > dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4, - > dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt, - > ce, dxmax, dymax, dzmax, xxcon1, xxcon2, - > xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1, - > dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4, - > yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1, - > zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1, - > dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1, - > dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2, - > c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1, bt, - > dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1, - > c2dtty1, c2dttz1, comz1, comz4, comz5, comz6, - > c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16 - - integer EAST, WEST, NORTH, SOUTH, - > BOTTOM, TOP - - parameter (EAST=2000, WEST=3000, NORTH=4000, SOUTH=5000, - > BOTTOM=6000, TOP=7000) - - integer cell_coord (3,maxcells), cell_low (3,maxcells), - > cell_high (3,maxcells), cell_size(3,maxcells), - > predecessor(3), slice (3,maxcells), - > grid_size (3), successor(3) , - > start (3,maxcells), end (3,maxcells) - common /partition/ cell_coord, cell_low, cell_high, cell_size, - > grid_size, successor, predecessor, slice, - > start, end - - integer IMAX, JMAX, KMAX, MAX_CELL_DIM, BUF_SIZE - - parameter (MAX_CELL_DIM = (problem_size/maxcells)+1) - - parameter (IMAX=MAX_CELL_DIM,JMAX=MAX_CELL_DIM,KMAX=MAX_CELL_DIM) - - parameter (BUF_SIZE=MAX_CELL_DIM*MAX_CELL_DIM*(maxcells-1)*60+1) - - double precision - > us ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > vs ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > ws ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > qs ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > rho_i ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > square ( -1:IMAX, -1:JMAX, -1:KMAX, maxcells), - > forcing (5, 0:IMAX-1, 0:JMAX-1, 0:KMAX-1, maxcells), - > u (5, -2:IMAX+1,-2:JMAX+1,-2:KMAX+1, maxcells), - > rhs (5, -1:IMAX-1,-1:JMAX-1,-1:KMAX-1, maxcells), - > lhsc (5,5,-1:IMAX-1,-1:JMAX-1,-1:KMAX-1, maxcells), - > backsub_info (5, 0:MAX_CELL_DIM, 0:MAX_CELL_DIM, maxcells), - > in_buffer(BUF_SIZE), out_buffer(BUF_SIZE) - common /fields/ u, us, vs, ws, qs, rho_i, square, - > rhs, forcing, lhsc, in_buffer, out_buffer, - > backsub_info - - double precision cv(-2:MAX_CELL_DIM+1), rhon(-2:MAX_CELL_DIM+1), - > rhos(-2:MAX_CELL_DIM+1), rhoq(-2:MAX_CELL_DIM+1), - > cuf(-2:MAX_CELL_DIM+1), q(-2:MAX_CELL_DIM+1), - > ue(-2:MAX_CELL_DIM+1,5), buf(-2:MAX_CELL_DIM+1,5) - common /work_1d/ cv, rhon, rhos, rhoq, cuf, q, ue, buf - - integer west_size, east_size, bottom_size, top_size, - > north_size, south_size, start_send_west, - > start_send_east, start_send_south, start_send_north, - > start_send_bottom, start_send_top, start_recv_west, - > start_recv_east, start_recv_south, start_recv_north, - > start_recv_bottom, start_recv_top - common /box/ west_size, east_size, bottom_size, - > top_size, north_size, south_size, - > start_send_west, start_send_east, start_send_south, - > start_send_north, start_send_bottom, start_send_top, - > start_recv_west, start_recv_east, start_recv_south, - > start_recv_north, start_recv_bottom, start_recv_top - - double precision tmp_block(5,5), b_inverse(5,5), tmp_vec(5) - common /work_solve/ tmp_block, b_inverse, tmp_vec - -c -c These are used by btio -c - integer collbuf_nodes, collbuf_size, iosize, eltext, - $ combined_btype, fp, idump, record_length, element, - $ combined_ftype, idump_sub, rd_interval - common /btio/ collbuf_nodes, collbuf_size, iosize, eltext, - $ combined_btype, fp, idump, record_length, - $ idump_sub, rd_interval - double precision sum(niter_default), xce_sub(5) - common /btio/ sum, xce_sub - integer*8 iseek - common /btio/ iseek, element, combined_ftype - - - integer t_total, t_io, t_rhs, t_xsolve, t_ysolve, t_zsolve, - > t_bpack, t_exch, t_xcomm, t_ycomm, t_zcomm, t_last - parameter (t_total=1, t_io=2, t_rhs=3, t_xsolve=4, t_ysolve=5, - > t_zsolve=6, t_bpack=7, t_exch=8, t_xcomm=9, - > t_ycomm=10, t_zcomm=11, t_last=11) - logical timeron - common /tflags/ timeron - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/initialize.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/initialize.f deleted file mode 100644 index f18f662..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/initialize.f +++ /dev/null @@ -1,283 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine initialize - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c This subroutine initializes the field variable u using -c tri-linear transfinite interpolation of the boundary values -c--------------------------------------------------------------------- - - include 'header.h' - - integer c, i, j, k, m, ii, jj, kk, ix, iy, iz - double precision xi, eta, zeta, Pface(5,3,2), Pxi, Peta, - > Pzeta, temp(5) - -c--------------------------------------------------------------------- -c Later (in compute_rhs) we compute 1/u for every element. A few of -c the corner elements are not used, but it convenient (and faster) -c to compute the whole thing with a simple loop. Make sure those -c values are nonzero by initializing the whole thing here. -c--------------------------------------------------------------------- - do c = 1, ncells - do kk = -1, KMAX - do jj = -1, JMAX - do ii = -1, IMAX - do m = 1, 5 - u(m, ii, jj, kk, c) = 1.0 - end do - end do - end do - end do - end do -c--------------------------------------------------------------------- - - - -c--------------------------------------------------------------------- -c first store the "interpolated" values everywhere on the grid -c--------------------------------------------------------------------- - do c=1, ncells - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - ii = 0 - do i = cell_low(1,c), cell_high(1,c) - xi = dble(i) * dnxm1 - - do ix = 1, 2 - call exact_solution(dble(ix-1), eta, zeta, - > Pface(1,1,ix)) - enddo - - do iy = 1, 2 - call exact_solution(xi, dble(iy-1) , zeta, - > Pface(1,2,iy)) - enddo - - do iz = 1, 2 - call exact_solution(xi, eta, dble(iz-1), - > Pface(1,3,iz)) - enddo - - do m = 1, 5 - Pxi = xi * Pface(m,1,2) + - > (1.0d0-xi) * Pface(m,1,1) - Peta = eta * Pface(m,2,2) + - > (1.0d0-eta) * Pface(m,2,1) - Pzeta = zeta * Pface(m,3,2) + - > (1.0d0-zeta) * Pface(m,3,1) - - u(m,ii,jj,kk,c) = Pxi + Peta + Pzeta - - > Pxi*Peta - Pxi*Pzeta - Peta*Pzeta + - > Pxi*Peta*Pzeta - - enddo - ii = ii + 1 - enddo - jj = jj + 1 - enddo - kk = kk+1 - enddo - enddo - -c--------------------------------------------------------------------- -c now store the exact values on the boundaries -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c west face -c--------------------------------------------------------------------- - c = slice(1,1) - ii = 0 - xi = 0.0d0 - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - jj = jj + 1 - enddo - kk = kk + 1 - enddo - -c--------------------------------------------------------------------- -c east face -c--------------------------------------------------------------------- - c = slice(1,ncells) - ii = cell_size(1,c)-1 - xi = 1.0d0 - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - jj = jj + 1 - enddo - kk = kk + 1 - enddo - -c--------------------------------------------------------------------- -c south face -c--------------------------------------------------------------------- - c = slice(2,1) - jj = 0 - eta = 0.0d0 - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - ii = 0 - do i = cell_low(1,c), cell_high(1,c) - xi = dble(i) * dnxm1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - ii = ii + 1 - enddo - kk = kk + 1 - enddo - - -c--------------------------------------------------------------------- -c north face -c--------------------------------------------------------------------- - c = slice(2,ncells) - jj = cell_size(2,c)-1 - eta = 1.0d0 - kk = 0 - do k = cell_low(3,c), cell_high(3,c) - zeta = dble(k) * dnzm1 - ii = 0 - do i = cell_low(1,c), cell_high(1,c) - xi = dble(i) * dnxm1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - ii = ii + 1 - enddo - kk = kk + 1 - enddo - -c--------------------------------------------------------------------- -c bottom face -c--------------------------------------------------------------------- - c = slice(3,1) - kk = 0 - zeta = 0.0d0 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - ii = 0 - do i =cell_low(1,c), cell_high(1,c) - xi = dble(i) *dnxm1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - ii = ii + 1 - enddo - jj = jj + 1 - enddo - -c--------------------------------------------------------------------- -c top face -c--------------------------------------------------------------------- - c = slice(3,ncells) - kk = cell_size(3,c)-1 - zeta = 1.0d0 - jj = 0 - do j = cell_low(2,c), cell_high(2,c) - eta = dble(j) * dnym1 - ii = 0 - do i =cell_low(1,c), cell_high(1,c) - xi = dble(i) * dnxm1 - call exact_solution(xi, eta, zeta, temp) - do m = 1, 5 - u(m,ii,jj,kk,c) = temp(m) - enddo - ii = ii + 1 - enddo - jj = jj + 1 - enddo - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine lhsinit - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - integer i, j, k, d, c, m, n - -c--------------------------------------------------------------------- -c loop over all cells -c--------------------------------------------------------------------- - do c = 1, ncells - -c--------------------------------------------------------------------- -c first, initialize the start and end arrays -c--------------------------------------------------------------------- - do d = 1, 3 - if (cell_coord(d,c) .eq. 1) then - start(d,c) = 1 - else - start(d,c) = 0 - endif - if (cell_coord(d,c) .eq. ncells) then - end(d,c) = 1 - else - end(d,c) = 0 - endif - enddo - -c--------------------------------------------------------------------- -c zero the whole left hand side for starters -c--------------------------------------------------------------------- - do k = 0, cell_size(3,c)-1 - do j = 0, cell_size(2,c)-1 - do i = 0, cell_size(1,c)-1 - do m = 1,5 - do n = 1, 5 - lhsc(m,n,i,j,k,c) = 0.0d0 - enddo - enddo - enddo - enddo - enddo - - enddo - - return - end - - - - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/make_set.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/make_set.f deleted file mode 100644 index ffab37c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/make_set.f +++ /dev/null @@ -1,125 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine make_set - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c This function allocates space for a set of cells and fills the set -c such that communication between cells on different nodes is only -c nearest neighbor -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - - integer p, i, j, c, dir, size, excess, ierr,ierrcode - -c--------------------------------------------------------------------- -c compute square root; add small number to allow for roundoff -c (note: this is computed in setup_mpi.f also, but prefer to do -c it twice because of some include file problems). -c--------------------------------------------------------------------- - ncells = dint(dsqrt(dble(no_nodes) + 0.00001d0)) - -c--------------------------------------------------------------------- -c this makes coding easier -c--------------------------------------------------------------------- - p = ncells - -c--------------------------------------------------------------------- -c determine the location of the cell at the bottom of the 3D -c array of cells -c--------------------------------------------------------------------- - cell_coord(1,1) = mod(node,p) - cell_coord(2,1) = node/p - cell_coord(3,1) = 0 - -c--------------------------------------------------------------------- -c set the cell_coords for cells in the rest of the z-layers; -c this comes down to a simple linear numbering in the z-direct- -c ion, and to the doubly-cyclic numbering in the other dirs -c--------------------------------------------------------------------- - do c=2, p - cell_coord(1,c) = mod(cell_coord(1,c-1)+1,p) - cell_coord(2,c) = mod(cell_coord(2,c-1)-1+p,p) - cell_coord(3,c) = c-1 - end do - -c--------------------------------------------------------------------- -c offset all the coordinates by 1 to adjust for Fortran arrays -c--------------------------------------------------------------------- - do dir = 1, 3 - do c = 1, p - cell_coord(dir,c) = cell_coord(dir,c) + 1 - end do - end do - -c--------------------------------------------------------------------- -c slice(dir,n) contains the sequence number of the cell that is in -c coordinate plane n in the dir direction -c--------------------------------------------------------------------- - do dir = 1, 3 - do c = 1, p - slice(dir,cell_coord(dir,c)) = c - end do - end do - - -c--------------------------------------------------------------------- -c fill the predecessor and successor entries, using the indices -c of the bottom cells (they are the same at each level of k -c anyway) acting as if full periodicity pertains; note that p is -c added to those arguments to the mod functions that might -c otherwise return wrong values when using the modulo function -c--------------------------------------------------------------------- - i = cell_coord(1,1)-1 - j = cell_coord(2,1)-1 - - predecessor(1) = mod(i-1+p,p) + p*j - predecessor(2) = i + p*mod(j-1+p,p) - predecessor(3) = mod(i+1,p) + p*mod(j-1+p,p) - successor(1) = mod(i+1,p) + p*j - successor(2) = i + p*mod(j+1,p) - successor(3) = mod(i-1+p,p) + p*mod(j+1,p) - -c--------------------------------------------------------------------- -c now compute the sizes of the cells -c--------------------------------------------------------------------- - do dir= 1, 3 -c--------------------------------------------------------------------- -c set cell_coord range for each direction -c--------------------------------------------------------------------- - size = grid_points(dir)/p - excess = mod(grid_points(dir),p) - do c=1, ncells - if (cell_coord(dir,c) .le. excess) then - cell_size(dir,c) = size+1 - cell_low(dir,c) = (cell_coord(dir,c)-1)*(size+1) - cell_high(dir,c) = cell_low(dir,c)+size - else - cell_size(dir,c) = size - cell_low(dir,c) = excess*(size+1)+ - > (cell_coord(dir,c)-excess-1)*size - cell_high(dir,c) = cell_low(dir,c)+size-1 - endif - if (cell_size(dir, c) .le. 2) then - write(*,50) - 50 format(' Error: Cell size too small. Min size is 3') - ierrcode = 1 - call MPI_Abort(mpi_comm_world,ierrcode,ierr) - stop - endif - end do - end do - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/mpinpb.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/mpinpb.h deleted file mode 100644 index f621f08..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/mpinpb.h +++ /dev/null @@ -1,12 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'mpif.h' - - integer node, no_nodes, total_nodes, root, comm_setup, - > comm_solve, comm_rhs, dp_type - logical active - common /mpistuff/ node, no_nodes, total_nodes, root, comm_setup, - > comm_solve, comm_rhs, dp_type, active - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/rhs.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/rhs.f deleted file mode 100644 index e4a43a8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/rhs.f +++ /dev/null @@ -1,542 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine compute_rhs - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - integer c, i, j, k, m - double precision rho_inv, uijk, up1, um1, vijk, vp1, vm1, - > wijk, wp1, wm1 - - - if (timeron) call timer_start(t_rhs) -c--------------------------------------------------------------------- -c loop over all cells owned by this node -c--------------------------------------------------------------------- - - do c = 1, ncells - -c--------------------------------------------------------------------- -c compute the reciprocal of density, and the kinetic energy, -c and the speed of sound. -c--------------------------------------------------------------------- -!1$omp parallel do private(k,j,i,rho_inv) collapse(2) - -!DVM$ region out (rho_i,us,vs,ws,square,qs) -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,rho_inv), -!DVM$& TIE(u(*,i,j,k,*),vs(i,j,k,*),ws(i,j,k,*), -!DVM$& qs(i,j,k,*),square(i,j,k,*),rho_i(i,j,k,*),us(i,j,k,*)) - do k = -1, cell_size(3,c) - do j = -1, cell_size(2,c) - do i = -1, cell_size(1,c) - rho_inv = 1.0d0/u(1,i,j,k,c) - rho_i(i,j,k,c) = rho_inv - us(i,j,k,c) = u(2,i,j,k,c) * rho_inv - vs(i,j,k,c) = u(3,i,j,k,c) * rho_inv - ws(i,j,k,c) = u(4,i,j,k,c) * rho_inv - square(i,j,k,c) = 0.5d0* ( - > u(2,i,j,k,c)*u(2,i,j,k,c) + - > u(3,i,j,k,c)*u(3,i,j,k,c) + - > u(4,i,j,k,c)*u(4,i,j,k,c) ) * rho_inv - qs(i,j,k,c) = square(i,j,k,c) * rho_inv - enddo - enddo - enddo -!DVM$ end region -c--------------------------------------------------------------------- -c copy the exact forcing term to the right hand side; because -c this forcing term is known, we can store it on the whole of every -c cell, including the boundary -c--------------------------------------------------------------------- -!1$omp parallel do private(k,j,i) collapse(2) - -!DVM$ region out (rhs) -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,m), -!DVM$& TIE(rhs(*,i,j,k,*),forcing(*,i,j,k,*)) - do k = 0, cell_size(3,c)-1 - do j = 0, cell_size(2,c)-1 - do i = 0, cell_size(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = forcing(m,i,j,k,c) - enddo - enddo - enddo - enddo -!DVM$ end region - -c--------------------------------------------------------------------- -c compute xi-direction fluxes -c--------------------------------------------------------------------- -!1$omp parallel do private(k,j,i,uijk,up1,um1) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,uijk,up1,um1), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*),vs(i,j,k,*),ws(i,j,k,*), -!DVM$& qs(i,j,k,*),square(i,j,k,*),rho_i(i,j,k,*),us(i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - uijk = us(i,j,k,c) - up1 = us(i+1,j,k,c) - um1 = us(i-1,j,k,c) - - rhs(1,i,j,k,c) = rhs(1,i,j,k,c) + dx1tx1 * - > (u(1,i+1,j,k,c) - 2.0d0*u(1,i,j,k,c) + - > u(1,i-1,j,k,c)) - - > tx2 * (u(2,i+1,j,k,c) - u(2,i-1,j,k,c)) - - rhs(2,i,j,k,c) = rhs(2,i,j,k,c) + dx2tx1 * - > (u(2,i+1,j,k,c) - 2.0d0*u(2,i,j,k,c) + - > u(2,i-1,j,k,c)) + - > xxcon2*con43 * (up1 - 2.0d0*uijk + um1) - - > tx2 * (u(2,i+1,j,k,c)*up1 - - > u(2,i-1,j,k,c)*um1 + - > (u(5,i+1,j,k,c)- square(i+1,j,k,c)- - > u(5,i-1,j,k,c)+ square(i-1,j,k,c))* - > c2) - - rhs(3,i,j,k,c) = rhs(3,i,j,k,c) + dx3tx1 * - > (u(3,i+1,j,k,c) - 2.0d0*u(3,i,j,k,c) + - > u(3,i-1,j,k,c)) + - > xxcon2 * (vs(i+1,j,k,c) - 2.0d0*vs(i,j,k,c) + - > vs(i-1,j,k,c)) - - > tx2 * (u(3,i+1,j,k,c)*up1 - - > u(3,i-1,j,k,c)*um1) - - rhs(4,i,j,k,c) = rhs(4,i,j,k,c) + dx4tx1 * - > (u(4,i+1,j,k,c) - 2.0d0*u(4,i,j,k,c) + - > u(4,i-1,j,k,c)) + - > xxcon2 * (ws(i+1,j,k,c) - 2.0d0*ws(i,j,k,c) + - > ws(i-1,j,k,c)) - - > tx2 * (u(4,i+1,j,k,c)*up1 - - > u(4,i-1,j,k,c)*um1) - - rhs(5,i,j,k,c) = rhs(5,i,j,k,c) + dx5tx1 * - > (u(5,i+1,j,k,c) - 2.0d0*u(5,i,j,k,c) + - > u(5,i-1,j,k,c)) + - > xxcon3 * (qs(i+1,j,k,c) - 2.0d0*qs(i,j,k,c) + - > qs(i-1,j,k,c)) + - > xxcon4 * (up1*up1 - 2.0d0*uijk*uijk + - > um1*um1) + - > xxcon5 * (u(5,i+1,j,k,c)*rho_i(i+1,j,k,c) - - > 2.0d0*u(5,i,j,k,c)*rho_i(i,j,k,c) + - > u(5,i-1,j,k,c)*rho_i(i-1,j,k,c)) - - > tx2 * ( (c1*u(5,i+1,j,k,c) - - > c2*square(i+1,j,k,c))*up1 - - > (c1*u(5,i-1,j,k,c) - - > c2*square(i-1,j,k,c))*um1 ) - enddo - enddo - enddo -!DVM$ end region -c--------------------------------------------------------------------- -c add fourth order xi-direction dissipation -c--------------------------------------------------------------------- - if (start(1,c) .gt. 0) then - i = 1 -!DVM$ region -!1$omp parallel do private(k,j,m) collapse(2) -!DVM$ PARALLEL(k,j), PRIVATE(k,j,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c)- dssp * - > ( 5.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i+1,j,k,c) + - > u(m,i+2,j,k,c)) - enddo - enddo - enddo -!DVM$ end region - i = 2 -!DVM$ region -!1$omp parallel do private(k,j,m) collapse(2) -!DVM$ PARALLEL(k,j), PRIVATE(k,j,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > (-4.0d0*u(m,i-1,j,k,c) + 6.0d0*u(m,i,j,k,c) - - > 4.0d0*u(m,i+1,j,k,c) + u(m,i+2,j,k,c)) - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,m), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = 3*start(1,c),cell_size(1,c)-3*end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i-2,j,k,c) - 4.0d0*u(m,i-1,j,k,c) + - > 6.0*u(m,i,j,k,c) - 4.0d0*u(m,i+1,j,k,c) + - > u(m,i+2,j,k,c) ) - enddo - enddo - enddo - enddo -!DVM$ end region - - if (end(1,c) .gt. 0) then - i = cell_size(1,c)-3 -!1$omp parallel do private(k,j,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j), PRIVATE(k,j,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i-2,j,k,c) - 4.0d0*u(m,i-1,j,k,c) + - > 6.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i+1,j,k,c) ) - enddo - enddo - enddo -!DVM$ end region - i = cell_size(1,c)-2 - -!1$omp parallel do private(k,j,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j), PRIVATE(k,j,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i-2,j,k,c) - 4.d0*u(m,i-1,j,k,c) + - > 5.d0*u(m,i,j,k,c) ) - enddo - enddo - enddo -!DVM$ end region - endif - -c--------------------------------------------------------------------- -c compute eta-direction fluxes -c--------------------------------------------------------------------- -!1$omp parallel do private(k,j,i,vijk,vp1,vm1) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,vijk,vp1,vm1), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*),vs(i,j,k,*),ws(i,j,k,*), -!DVM$& qs(i,j,k,*),square(i,j,k,*),rho_i(i,j,k,*),us(i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - vijk = vs(i,j,k,c) - vp1 = vs(i,j+1,k,c) - vm1 = vs(i,j-1,k,c) - rhs(1,i,j,k,c) = rhs(1,i,j,k,c) + dy1ty1 * - > (u(1,i,j+1,k,c) - 2.0d0*u(1,i,j,k,c) + - > u(1,i,j-1,k,c)) - - > ty2 * (u(3,i,j+1,k,c) - u(3,i,j-1,k,c)) - rhs(2,i,j,k,c) = rhs(2,i,j,k,c) + dy2ty1 * - > (u(2,i,j+1,k,c) - 2.0d0*u(2,i,j,k,c) + - > u(2,i,j-1,k,c)) + - > yycon2 * (us(i,j+1,k,c) - 2.0d0*us(i,j,k,c) + - > us(i,j-1,k,c)) - - > ty2 * (u(2,i,j+1,k,c)*vp1 - - > u(2,i,j-1,k,c)*vm1) - rhs(3,i,j,k,c) = rhs(3,i,j,k,c) + dy3ty1 * - > (u(3,i,j+1,k,c) - 2.0d0*u(3,i,j,k,c) + - > u(3,i,j-1,k,c)) + - > yycon2*con43 * (vp1 - 2.0d0*vijk + vm1) - - > ty2 * (u(3,i,j+1,k,c)*vp1 - - > u(3,i,j-1,k,c)*vm1 + - > (u(5,i,j+1,k,c) - square(i,j+1,k,c) - - > u(5,i,j-1,k,c) + square(i,j-1,k,c)) - > *c2) - rhs(4,i,j,k,c) = rhs(4,i,j,k,c) + dy4ty1 * - > (u(4,i,j+1,k,c) - 2.0d0*u(4,i,j,k,c) + - > u(4,i,j-1,k,c)) + - > yycon2 * (ws(i,j+1,k,c) - 2.0d0*ws(i,j,k,c) + - > ws(i,j-1,k,c)) - - > ty2 * (u(4,i,j+1,k,c)*vp1 - - > u(4,i,j-1,k,c)*vm1) - rhs(5,i,j,k,c) = rhs(5,i,j,k,c) + dy5ty1 * - > (u(5,i,j+1,k,c) - 2.0d0*u(5,i,j,k,c) + - > u(5,i,j-1,k,c)) + - > yycon3 * (qs(i,j+1,k,c) - 2.0d0*qs(i,j,k,c) + - > qs(i,j-1,k,c)) + - > yycon4 * (vp1*vp1 - 2.0d0*vijk*vijk + - > vm1*vm1) + - > yycon5 * (u(5,i,j+1,k,c)*rho_i(i,j+1,k,c) - - > 2.0d0*u(5,i,j,k,c)*rho_i(i,j,k,c) + - > u(5,i,j-1,k,c)*rho_i(i,j-1,k,c)) - - > ty2 * ((c1*u(5,i,j+1,k,c) - - > c2*square(i,j+1,k,c)) * vp1 - - > (c1*u(5,i,j-1,k,c) - - > c2*square(i,j-1,k,c)) * vm1) - enddo - enddo - enddo -!DVM$ end region -c--------------------------------------------------------------------- -c add fourth order eta-direction dissipation -c--------------------------------------------------------------------- - if (start(2,c) .gt. 0) then - j = 1 -!1$omp parallel do private(k,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,i,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c)- dssp * - > ( 5.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i,j+1,k,c) + - > u(m,i,j+2,k,c)) - enddo - enddo - enddo -!DVM$ end region - j = 2 -!1$omp parallel do private(k,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,i,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > (-4.0d0*u(m,i,j-1,k,c) + 6.0d0*u(m,i,j,k,c) - - > 4.0d0*u(m,i,j+1,k,c) + u(m,i,j+2,k,c)) - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,i,j,m), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = 3*start(2,c), cell_size(2,c)-3*end(2,c)-1 - do i = start(1,c),cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j-2,k,c) - 4.0d0*u(m,i,j-1,k,c) + - > 6.0*u(m,i,j,k,c) - 4.0d0*u(m,i,j+1,k,c) + - > u(m,i,j+2,k,c) ) - enddo - enddo - enddo - enddo -!DVM$ end region - if (end(2,c) .gt. 0) then - - j = cell_size(2,c)-3 -!1$omp parallel do private(k,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,i,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j-2,k,c) - 4.0d0*u(m,i,j-1,k,c) + - > 6.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i,j+1,k,c) ) - enddo - enddo - enddo -!DVM$ end region - j = cell_size(2,c)-2 -!1$omp parallel do private(k,i,m) collapse(2) -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,i,m) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j-2,k,c) - 4.d0*u(m,i,j-1,k,c) + - > 5.d0*u(m,i,j,k,c) ) - enddo - enddo - enddo -!DVM$ end region - endif - -c--------------------------------------------------------------------- -c compute zeta-direction fluxes -c--------------------------------------------------------------------- - -!1$omp parallel do private(k,j,i,wijk,wp1,wm1) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,j,i,wijk,wp1,wm1), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*),vs(i,j,k,*),ws(i,j,k,*), -!DVM$& qs(i,j,k,*),square(i,j,k,*),rho_i(i,j,k,*),us(i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - wijk = ws(i,j,k,c) - wp1 = ws(i,j,k+1,c) - wm1 = ws(i,j,k-1,c) - - rhs(1,i,j,k,c) = rhs(1,i,j,k,c) + dz1tz1 * - > (u(1,i,j,k+1,c) - 2.0d0*u(1,i,j,k,c) + - > u(1,i,j,k-1,c)) - - > tz2 * (u(4,i,j,k+1,c) - u(4,i,j,k-1,c)) - rhs(2,i,j,k,c) = rhs(2,i,j,k,c) + dz2tz1 * - > (u(2,i,j,k+1,c) - 2.0d0*u(2,i,j,k,c) + - > u(2,i,j,k-1,c)) + - > zzcon2 * (us(i,j,k+1,c) - 2.0d0*us(i,j,k,c) + - > us(i,j,k-1,c)) - - > tz2 * (u(2,i,j,k+1,c)*wp1 - - > u(2,i,j,k-1,c)*wm1) - rhs(3,i,j,k,c) = rhs(3,i,j,k,c) + dz3tz1 * - > (u(3,i,j,k+1,c) - 2.0d0*u(3,i,j,k,c) + - > u(3,i,j,k-1,c)) + - > zzcon2 * (vs(i,j,k+1,c) - 2.0d0*vs(i,j,k,c) + - > vs(i,j,k-1,c)) - - > tz2 * (u(3,i,j,k+1,c)*wp1 - - > u(3,i,j,k-1,c)*wm1) - rhs(4,i,j,k,c) = rhs(4,i,j,k,c) + dz4tz1 * - > (u(4,i,j,k+1,c) - 2.0d0*u(4,i,j,k,c) + - > u(4,i,j,k-1,c)) + - > zzcon2*con43 * (wp1 - 2.0d0*wijk + wm1) - - > tz2 * (u(4,i,j,k+1,c)*wp1 - - > u(4,i,j,k-1,c)*wm1 + - > (u(5,i,j,k+1,c) - square(i,j,k+1,c) - - > u(5,i,j,k-1,c) + square(i,j,k-1,c)) - > *c2) - rhs(5,i,j,k,c) = rhs(5,i,j,k,c) + dz5tz1 * - > (u(5,i,j,k+1,c) - 2.0d0*u(5,i,j,k,c) + - > u(5,i,j,k-1,c)) + - > zzcon3 * (qs(i,j,k+1,c) - 2.0d0*qs(i,j,k,c) + - > qs(i,j,k-1,c)) + - > zzcon4 * (wp1*wp1 - 2.0d0*wijk*wijk + - > wm1*wm1) + - > zzcon5 * (u(5,i,j,k+1,c)*rho_i(i,j,k+1,c) - - > 2.0d0*u(5,i,j,k,c)*rho_i(i,j,k,c) + - > u(5,i,j,k-1,c)*rho_i(i,j,k-1,c)) - - > tz2 * ( (c1*u(5,i,j,k+1,c) - - > c2*square(i,j,k+1,c))*wp1 - - > (c1*u(5,i,j,k-1,c) - - > c2*square(i,j,k-1,c))*wm1) - enddo - enddo - enddo -!DVM$ end region -c--------------------------------------------------------------------- -c add fourth order zeta-direction dissipation -c--------------------------------------------------------------------- - if (start(3,c) .gt. 0) then - k = 1 -!1$omp parallel do private(j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(i,j,m) - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c)- dssp * - > ( 5.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i,j,k+1,c) + - > u(m,i,j,k+2,c)) - enddo - enddo - enddo -!DVM$ end region - k = 2 -!1$omp parallel do private(j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(i,j,m) - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > (-4.0d0*u(m,i,j,k-1,c) + 6.0d0*u(m,i,j,k,c) - - > 4.0d0*u(m,i,j,k+1,c) + u(m,i,j,k+2,c)) - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,i,j,m), -!DVM$& TIE(rhs(*,i,j,k,*),u(*,i,j,k,*)) - do k = 3*start(3,c), cell_size(3,c)-3*end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c),cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j,k-2,c) - 4.0d0*u(m,i,j,k-1,c) + - > 6.0*u(m,i,j,k,c) - 4.0d0*u(m,i,j,k+1,c) + - > u(m,i,j,k+2,c) ) - enddo - enddo - enddo - enddo -!DVM$ end region - if (end(3,c) .gt. 0) then - k = cell_size(3,c)-3 - -!1$omp parallel do private(j,i,m) collapse(2) -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(i,j,m) - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j,k-2,c) - 4.0d0*u(m,i,j,k-1,c) + - > 6.0d0*u(m,i,j,k,c) - 4.0d0*u(m,i,j,k+1,c) ) - enddo - enddo - enddo -!DVM$ end region - k = cell_size(3,c)-2 -!1$omp parallel do private(j,i,m) collapse(2) -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(i,j,m) - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - dssp * - > ( u(m,i,j,k-2,c) - 4.d0*u(m,i,j,k-1,c) + - > 5.d0*u(m,i,j,k,c) ) - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j,i), PRIVATE(k,i,j,m), -!DVM$& TIE(rhs(*,i,j,k,*)) - do k = start(3,c), cell_size(3,c)-end(3,c)-1 - do j = start(2,c), cell_size(2,c)-end(2,c)-1 - do i = start(1,c), cell_size(1,c)-end(1,c)-1 - do m = 1, 5 - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) * dt - enddo - enddo - enddo - enddo -!DVM$ end region - enddo - - if (timeron) call timer_stop(t_rhs) - - return - end - - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/set_constants.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/set_constants.f deleted file mode 100644 index 81397d4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/set_constants.f +++ /dev/null @@ -1,202 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine set_constants - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - - ce(1,1) = 2.0d0 - ce(1,2) = 0.0d0 - ce(1,3) = 0.0d0 - ce(1,4) = 4.0d0 - ce(1,5) = 5.0d0 - ce(1,6) = 3.0d0 - ce(1,7) = 0.5d0 - ce(1,8) = 0.02d0 - ce(1,9) = 0.01d0 - ce(1,10) = 0.03d0 - ce(1,11) = 0.5d0 - ce(1,12) = 0.4d0 - ce(1,13) = 0.3d0 - - ce(2,1) = 1.0d0 - ce(2,2) = 0.0d0 - ce(2,3) = 0.0d0 - ce(2,4) = 0.0d0 - ce(2,5) = 1.0d0 - ce(2,6) = 2.0d0 - ce(2,7) = 3.0d0 - ce(2,8) = 0.01d0 - ce(2,9) = 0.03d0 - ce(2,10) = 0.02d0 - ce(2,11) = 0.4d0 - ce(2,12) = 0.3d0 - ce(2,13) = 0.5d0 - - ce(3,1) = 2.0d0 - ce(3,2) = 2.0d0 - ce(3,3) = 0.0d0 - ce(3,4) = 0.0d0 - ce(3,5) = 0.0d0 - ce(3,6) = 2.0d0 - ce(3,7) = 3.0d0 - ce(3,8) = 0.04d0 - ce(3,9) = 0.03d0 - ce(3,10) = 0.05d0 - ce(3,11) = 0.3d0 - ce(3,12) = 0.5d0 - ce(3,13) = 0.4d0 - - ce(4,1) = 2.0d0 - ce(4,2) = 2.0d0 - ce(4,3) = 0.0d0 - ce(4,4) = 0.0d0 - ce(4,5) = 0.0d0 - ce(4,6) = 2.0d0 - ce(4,7) = 3.0d0 - ce(4,8) = 0.03d0 - ce(4,9) = 0.05d0 - ce(4,10) = 0.04d0 - ce(4,11) = 0.2d0 - ce(4,12) = 0.1d0 - ce(4,13) = 0.3d0 - - ce(5,1) = 5.0d0 - ce(5,2) = 4.0d0 - ce(5,3) = 3.0d0 - ce(5,4) = 2.0d0 - ce(5,5) = 0.1d0 - ce(5,6) = 0.4d0 - ce(5,7) = 0.3d0 - ce(5,8) = 0.05d0 - ce(5,9) = 0.04d0 - ce(5,10) = 0.03d0 - ce(5,11) = 0.1d0 - ce(5,12) = 0.3d0 - ce(5,13) = 0.2d0 - - c1 = 1.4d0 - c2 = 0.4d0 - c3 = 0.1d0 - c4 = 1.0d0 - c5 = 1.4d0 - - bt = dsqrt(0.5d0) - - dnxm1 = 1.0d0 / dble(grid_points(1)-1) - dnym1 = 1.0d0 / dble(grid_points(2)-1) - dnzm1 = 1.0d0 / dble(grid_points(3)-1) - - c1c2 = c1 * c2 - c1c5 = c1 * c5 - c3c4 = c3 * c4 - c1345 = c1c5 * c3c4 - - conz1 = (1.0d0-c1c5) - - tx1 = 1.0d0 / (dnxm1 * dnxm1) - tx2 = 1.0d0 / (2.0d0 * dnxm1) - tx3 = 1.0d0 / dnxm1 - - ty1 = 1.0d0 / (dnym1 * dnym1) - ty2 = 1.0d0 / (2.0d0 * dnym1) - ty3 = 1.0d0 / dnym1 - - tz1 = 1.0d0 / (dnzm1 * dnzm1) - tz2 = 1.0d0 / (2.0d0 * dnzm1) - tz3 = 1.0d0 / dnzm1 - - dx1 = 0.75d0 - dx2 = 0.75d0 - dx3 = 0.75d0 - dx4 = 0.75d0 - dx5 = 0.75d0 - - dy1 = 0.75d0 - dy2 = 0.75d0 - dy3 = 0.75d0 - dy4 = 0.75d0 - dy5 = 0.75d0 - - dz1 = 1.0d0 - dz2 = 1.0d0 - dz3 = 1.0d0 - dz4 = 1.0d0 - dz5 = 1.0d0 - - dxmax = dmax1(dx3, dx4) - dymax = dmax1(dy2, dy4) - dzmax = dmax1(dz2, dz3) - - dssp = 0.25d0 * dmax1(dx1, dmax1(dy1, dz1) ) - - c4dssp = 4.0d0 * dssp - c5dssp = 5.0d0 * dssp - - dttx1 = dt*tx1 - dttx2 = dt*tx2 - dtty1 = dt*ty1 - dtty2 = dt*ty2 - dttz1 = dt*tz1 - dttz2 = dt*tz2 - - c2dttx1 = 2.0d0*dttx1 - c2dtty1 = 2.0d0*dtty1 - c2dttz1 = 2.0d0*dttz1 - - dtdssp = dt*dssp - - comz1 = dtdssp - comz4 = 4.0d0*dtdssp - comz5 = 5.0d0*dtdssp - comz6 = 6.0d0*dtdssp - - c3c4tx3 = c3c4*tx3 - c3c4ty3 = c3c4*ty3 - c3c4tz3 = c3c4*tz3 - - dx1tx1 = dx1*tx1 - dx2tx1 = dx2*tx1 - dx3tx1 = dx3*tx1 - dx4tx1 = dx4*tx1 - dx5tx1 = dx5*tx1 - - dy1ty1 = dy1*ty1 - dy2ty1 = dy2*ty1 - dy3ty1 = dy3*ty1 - dy4ty1 = dy4*ty1 - dy5ty1 = dy5*ty1 - - dz1tz1 = dz1*tz1 - dz2tz1 = dz2*tz1 - dz3tz1 = dz3*tz1 - dz4tz1 = dz4*tz1 - dz5tz1 = dz5*tz1 - - c2iv = 2.5d0 - con43 = 4.0d0/3.0d0 - con16 = 1.0d0/6.0d0 - - xxcon1 = c3c4tx3*con43*tx3 - xxcon2 = c3c4tx3*tx3 - xxcon3 = c3c4tx3*conz1*tx3 - xxcon4 = c3c4tx3*con16*tx3 - xxcon5 = c3c4tx3*c1c5*tx3 - - yycon1 = c3c4ty3*con43*ty3 - yycon2 = c3c4ty3*ty3 - yycon3 = c3c4ty3*conz1*ty3 - yycon4 = c3c4ty3*con16*ty3 - yycon5 = c3c4ty3*c1c5*ty3 - - zzcon1 = c3c4tz3*con43*tz3 - zzcon2 = c3c4tz3*tz3 - zzcon3 = c3c4tz3*conz1*tz3 - zzcon4 = c3c4tz3*con16*tz3 - zzcon5 = c3c4tz3*c1c5*tz3 - - return - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/setup_mpi.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/setup_mpi.f deleted file mode 100644 index 987c6bf..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/setup_mpi.f +++ /dev/null @@ -1,64 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_mpi - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c set up MPI stuff -c--------------------------------------------------------------------- - - implicit none - include 'mpinpb.h' - include 'npbparams.h' - integer error, color, nc - - call mpi_init(error) - - call mpi_comm_size(MPI_COMM_WORLD, total_nodes, error) - call mpi_comm_rank(MPI_COMM_WORLD, node, error) - - if (.not. convertdouble) then - dp_type = MPI_DOUBLE_PRECISION - else - dp_type = MPI_REAL - endif - -c--------------------------------------------------------------------- -c compute square root; add small number to allow for roundoff -c--------------------------------------------------------------------- - nc = dint(dsqrt(dble(total_nodes) + 0.00001d0)) - -c--------------------------------------------------------------------- -c We handle a non-square number of nodes by making the excess nodes -c inactive. However, we can never handle more cells than were compiled -c in. -c--------------------------------------------------------------------- - - if (nc .gt. maxcells) nc = maxcells - if (node .ge. nc*nc) then - active = .false. - color = 1 - else - active = .true. - color = 0 - end if - - call mpi_comm_split(MPI_COMM_WORLD,color,node,comm_setup,error) - if (.not. active) return - - call mpi_comm_size(comm_setup, no_nodes, error) - call mpi_comm_dup(comm_setup, comm_solve, error) - call mpi_comm_dup(comm_setup, comm_rhs, error) - -c--------------------------------------------------------------------- -c let node 0 be the root for the group (there is only one) -c--------------------------------------------------------------------- - root = 0 - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/simple_mpiio.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/simple_mpiio.f deleted file mode 100644 index 02e2700..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/simple_mpiio.f +++ /dev/null @@ -1,213 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine setup_btio - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer m, ierr - - iseek=0 - - if (node .eq. root) then - call MPI_File_delete(filenm, MPI_INFO_NULL, ierr) - endif - - call MPI_Barrier(comm_solve, ierr) - - call MPI_File_open(comm_solve, - $ filenm, - $ MPI_MODE_RDWR + MPI_MODE_CREATE, - $ MPI_INFO_NULL, - $ fp, - $ ierr) - - call MPI_File_set_view(fp, - $ iseek, MPI_DOUBLE_PRECISION, MPI_DOUBLE_PRECISION, - $ 'native', MPI_INFO_NULL, ierr) - - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error opening file' - stop - endif - - do m = 1, 5 - xce_sub(m) = 0.d0 - end do - - idump_sub = 0 - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine output_timestep - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - include 'header.h' - include 'mpinpb.h' - - integer count, jio, kio, cio, aio - integer ierr - integer mstatus(MPI_STATUS_SIZE) - - do cio=1,ncells - do kio=0, cell_size(3,cio)-1 - do jio=0, cell_size(2,cio)-1 - iseek=5*(cell_low(1,cio) + - $ PROBLEM_SIZE*((cell_low(2,cio)+jio) + - $ PROBLEM_SIZE*((cell_low(3,cio)+kio) + - $ PROBLEM_SIZE*idump_sub))) - - count=5*cell_size(1,cio) - - call MPI_File_write_at(fp, iseek, - $ u(1,0,jio,kio,cio), - $ count, MPI_DOUBLE_PRECISION, - $ mstatus, ierr) - - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error writing to file' - stop - endif - enddo - enddo - enddo - - idump_sub = idump_sub + 1 - if (rd_interval .gt. 0) then - if (idump_sub .ge. rd_interval) then - - call acc_sub_norms(idump+1) - - idump_sub = 0 - endif - endif - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine acc_sub_norms(idump_cur) - - include 'header.h' - include 'mpinpb.h' - - integer idump_cur - - integer count, jio, kio, cio, ii, m, ichunk - integer ierr - integer mstatus(MPI_STATUS_SIZE) - double precision xce_single(5) - - ichunk = idump_cur - idump_sub + 1 - do ii=0, idump_sub-1 - do cio=1,ncells - do kio=0, cell_size(3,cio)-1 - do jio=0, cell_size(2,cio)-1 - iseek=5*(cell_low(1,cio) + - $ PROBLEM_SIZE*((cell_low(2,cio)+jio) + - $ PROBLEM_SIZE*((cell_low(3,cio)+kio) + - $ PROBLEM_SIZE*ii))) - - count=5*cell_size(1,cio) - - call MPI_File_read_at(fp, iseek, - $ u(1,0,jio,kio,cio), - $ count, MPI_DOUBLE_PRECISION, - $ mstatus, ierr) - - if (ierr .ne. MPI_SUCCESS) then - print *, 'Error reading back file' - call MPI_File_close(fp, ierr) - stop - endif - enddo - enddo - enddo - - if (node .eq. root) print *, 'Reading data set ', ii+ichunk - - call error_norm(xce_single) - do m = 1, 5 - xce_sub(m) = xce_sub(m) + xce_single(m) - end do - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine btio_cleanup - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer ierr - - call MPI_File_close(fp, ierr) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine accumulate_norms(xce_acc) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - double precision xce_acc(5) - integer m, ierr - - if (rd_interval .gt. 0) goto 20 - - call MPI_File_open(comm_solve, - $ filenm, - $ MPI_MODE_RDONLY, - $ MPI_INFO_NULL, - $ fp, - $ ierr) - - iseek = 0 - call MPI_File_set_view(fp, - $ iseek, MPI_DOUBLE_PRECISION, MPI_DOUBLE_PRECISION, - $ 'native', MPI_INFO_NULL, ierr) - -c clear the last time step - - call clear_timestep - -c read back the time steps and accumulate norms - - call acc_sub_norms(idump) - - call MPI_File_close(fp, ierr) - - 20 continue - do m = 1, 5 - xce_acc(m) = xce_sub(m) / dble(idump) - end do - - return - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/verify.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/verify.f deleted file mode 100644 index d1863f2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/verify.f +++ /dev/null @@ -1,434 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine verify(no_time_steps, class, verified) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c verification routine -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - double precision xcrref(5),xceref(5),xcrdif(5),xcedif(5), - > epsilon, xce(5), xcr(5), dtref - integer m, no_time_steps - character class - logical verified - -c--------------------------------------------------------------------- -c tolerance level -c--------------------------------------------------------------------- - epsilon = 1.0d-08 - verified = .true. - -c--------------------------------------------------------------------- -c compute the error norm and the residual norm, and exit if not printing -c--------------------------------------------------------------------- - - if (iotype .ne. 0) then - call accumulate_norms(xce) - else - call error_norm(xce) - endif - - call copy_faces - - call rhs_norm(xcr) - - do m = 1, 5 - xcr(m) = xcr(m) / dt - enddo - - if (node .ne. 0) return - - class = 'U' - - do m = 1,5 - xcrref(m) = 1.0 - xceref(m) = 1.0 - end do - -c--------------------------------------------------------------------- -c reference data for 12X12X12 grids after 60 time steps, with DT = 1.0d-02 -c--------------------------------------------------------------------- - if ( (grid_points(1) .eq. 12 ) .and. - > (grid_points(2) .eq. 12 ) .and. - > (grid_points(3) .eq. 12 ) .and. - > (no_time_steps .eq. 60 )) then - - class = 'S' - dtref = 1.0d-2 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 1.7034283709541311d-01 - xcrref(2) = 1.2975252070034097d-02 - xcrref(3) = 3.2527926989486055d-02 - xcrref(4) = 2.6436421275166801d-02 - xcrref(5) = 1.9211784131744430d-01 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 4.9976913345811579d-04 - xceref(2) = 4.5195666782961927d-05 - xceref(3) = 7.3973765172921357d-05 - xceref(4) = 7.3821238632439731d-05 - xceref(5) = 8.9269630987491446d-04 - else - xceref(1) = 0.1149036328945d+02 - xceref(2) = 0.9156788904727d+00 - xceref(3) = 0.2857899428614d+01 - xceref(4) = 0.2598273346734d+01 - xceref(5) = 0.2652795397547d+02 - endif - -c--------------------------------------------------------------------- -c reference data for 24X24X24 grids after 200 time steps, with DT = 0.8d-3 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 24) .and. - > (grid_points(2) .eq. 24) .and. - > (grid_points(3) .eq. 24) .and. - > (no_time_steps . eq. 200) ) then - - class = 'W' - dtref = 0.8d-3 -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.1125590409344d+03 - xcrref(2) = 0.1180007595731d+02 - xcrref(3) = 0.2710329767846d+02 - xcrref(4) = 0.2469174937669d+02 - xcrref(5) = 0.2638427874317d+03 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 0.4419655736008d+01 - xceref(2) = 0.4638531260002d+00 - xceref(3) = 0.1011551749967d+01 - xceref(4) = 0.9235878729944d+00 - xceref(5) = 0.1018045837718d+02 - else - xceref(1) = 0.6729594398612d+02 - xceref(2) = 0.5264523081690d+01 - xceref(3) = 0.1677107142637d+02 - xceref(4) = 0.1508721463436d+02 - xceref(5) = 0.1477018363393d+03 - endif - - -c--------------------------------------------------------------------- -c reference data for 64X64X64 grids after 200 time steps, with DT = 0.8d-3 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 64) .and. - > (grid_points(2) .eq. 64) .and. - > (grid_points(3) .eq. 64) .and. - > (no_time_steps . eq. 200) ) then - - class = 'A' - dtref = 0.8d-3 -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 1.0806346714637264d+02 - xcrref(2) = 1.1319730901220813d+01 - xcrref(3) = 2.5974354511582465d+01 - xcrref(4) = 2.3665622544678910d+01 - xcrref(5) = 2.5278963211748344d+02 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 4.2348416040525025d+00 - xceref(2) = 4.4390282496995698d-01 - xceref(3) = 9.6692480136345650d-01 - xceref(4) = 8.8302063039765474d-01 - xceref(5) = 9.7379901770829278d+00 - else - xceref(1) = 0.6482218724961d+02 - xceref(2) = 0.5066461714527d+01 - xceref(3) = 0.1613931961359d+02 - xceref(4) = 0.1452010201481d+02 - xceref(5) = 0.1420099377681d+03 - endif - -c--------------------------------------------------------------------- -c reference data for 102X102X102 grids after 200 time steps, -c with DT = 3.0d-04 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 102) .and. - > (grid_points(2) .eq. 102) .and. - > (grid_points(3) .eq. 102) .and. - > (no_time_steps . eq. 200) ) then - - class = 'B' - dtref = 3.0d-4 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 1.4233597229287254d+03 - xcrref(2) = 9.9330522590150238d+01 - xcrref(3) = 3.5646025644535285d+02 - xcrref(4) = 3.2485447959084092d+02 - xcrref(5) = 3.2707541254659363d+03 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 5.2969847140936856d+01 - xceref(2) = 4.4632896115670668d+00 - xceref(3) = 1.3122573342210174d+01 - xceref(4) = 1.2006925323559144d+01 - xceref(5) = 1.2459576151035986d+02 - else - xceref(1) = 0.1477545106464d+03 - xceref(2) = 0.1108895555053d+02 - xceref(3) = 0.3698065590331d+02 - xceref(4) = 0.3310505581440d+02 - xceref(5) = 0.3157928282563d+03 - endif - -c--------------------------------------------------------------------- -c reference data for 162X162X162 grids after 200 time steps, -c with DT = 1.0d-04 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 162) .and. - > (grid_points(2) .eq. 162) .and. - > (grid_points(3) .eq. 162) .and. - > (no_time_steps . eq. 200) ) then - - class = 'C' - dtref = 1.0d-4 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.62398116551764615d+04 - xcrref(2) = 0.50793239190423964d+03 - xcrref(3) = 0.15423530093013596d+04 - xcrref(4) = 0.13302387929291190d+04 - xcrref(5) = 0.11604087428436455d+05 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 0.16462008369091265d+03 - xceref(2) = 0.11497107903824313d+02 - xceref(3) = 0.41207446207461508d+02 - xceref(4) = 0.37087651059694167d+02 - xceref(5) = 0.36211053051841265d+03 - else - xceref(1) = 0.2597156483475d+03 - xceref(2) = 0.1985384289495d+02 - xceref(3) = 0.6517950485788d+02 - xceref(4) = 0.5757235541520d+02 - xceref(5) = 0.5215668188726d+03 - endif - - -c--------------------------------------------------------------------- -c reference data for 408x408x408 grids after 250 time steps, -c with DT = 0.2d-04 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 408) .and. - > (grid_points(2) .eq. 408) .and. - > (grid_points(3) .eq. 408) .and. - > (no_time_steps . eq. 250) ) then - - class = 'D' - dtref = 0.2d-4 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.2533188551738d+05 - xcrref(2) = 0.2346393716980d+04 - xcrref(3) = 0.6294554366904d+04 - xcrref(4) = 0.5352565376030d+04 - xcrref(5) = 0.3905864038618d+05 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 0.3100009377557d+03 - xceref(2) = 0.2424086324913d+02 - xceref(3) = 0.7782212022645d+02 - xceref(4) = 0.6835623860116d+02 - xceref(5) = 0.6065737200368d+03 - else - xceref(1) = 0.3813781566713d+03 - xceref(2) = 0.3160872966198d+02 - xceref(3) = 0.9593576357290d+02 - xceref(4) = 0.8363391989815d+02 - xceref(5) = 0.7063466087423d+03 - endif - - -c--------------------------------------------------------------------- -c reference data for 1020x1020x1020 grids after 250 time steps, -c with DT = 0.4d-05 -c--------------------------------------------------------------------- - elseif ( (grid_points(1) .eq. 1020) .and. - > (grid_points(2) .eq. 1020) .and. - > (grid_points(3) .eq. 1020) .and. - > (no_time_steps . eq. 250) ) then - - class = 'E' - dtref = 0.4d-5 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of residual. -c--------------------------------------------------------------------- - xcrref(1) = 0.9795372484517d+05 - xcrref(2) = 0.9739814511521d+04 - xcrref(3) = 0.2467606342965d+05 - xcrref(4) = 0.2092419572860d+05 - xcrref(5) = 0.1392138856939d+06 - -c--------------------------------------------------------------------- -c Reference values of RMS-norms of solution error. -c--------------------------------------------------------------------- - - if (iotype .eq. 0) then - xceref(1) = 0.4327562208414d+03 - xceref(2) = 0.3699051964887d+02 - xceref(3) = 0.1089845040954d+03 - xceref(4) = 0.9462517622043d+02 - xceref(5) = 0.7765512765309d+03 - else -c wr_interval = 5 - xceref(1) = 0.4729898413058d+03 - xceref(2) = 0.4145899331704d+02 - xceref(3) = 0.1192850917138d+03 - xceref(4) = 0.1032746026932d+03 - xceref(5) = 0.8270322177634d+03 -c wr_interval = 10 -c xceref(1) = 0.4718135916251d+03 -c xceref(2) = 0.4132620259096d+02 -c xceref(3) = 0.1189831133503d+03 -c xceref(4) = 0.1030212798803d+03 -c xceref(5) = 0.8255924078458d+03 - endif - - else - verified = .false. - endif - -c--------------------------------------------------------------------- -c verification test for residuals if gridsize is one of -c the defined grid sizes above (class .ne. 'U') -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Compute the difference of solution values and the known reference -c values. -c--------------------------------------------------------------------- - do m = 1, 5 - - xcrdif(m) = dabs((xcr(m)-xcrref(m))/xcrref(m)) - xcedif(m) = dabs((xce(m)-xceref(m))/xceref(m)) - - enddo - -c--------------------------------------------------------------------- -c Output the comparison of computed results to known cases. -c--------------------------------------------------------------------- - - if (class .ne. 'U') then - write(*, 1990) class - 1990 format(' Verification being performed for class ', a) - write (*,2000) epsilon - 2000 format(' accuracy setting for epsilon = ', E20.13) - verified = (dabs(dt-dtref) .le. epsilon) - if (.not.verified) then - class = 'U' - write (*,1000) dtref - 1000 format(' DT does not match the reference value of ', - > E15.8) - endif - else - write(*, 1995) - 1995 format(' Unknown class') - endif - - - if (class .ne. 'U') then - write (*,2001) - else - write (*, 2005) - endif - - 2001 format(' Comparison of RMS-norms of residual') - 2005 format(' RMS-norms of residual') - do m = 1, 5 - if (class .eq. 'U') then - write(*, 2015) m, xcr(m) - else if (xcrdif(m) .le. epsilon) then - write (*,2011) m,xcr(m),xcrref(m),xcrdif(m) - else - verified = .false. - write (*,2010) m,xcr(m),xcrref(m),xcrdif(m) - endif - enddo - - if (class .ne. 'U') then - write (*,2002) - else - write (*,2006) - endif - 2002 format(' Comparison of RMS-norms of solution error') - 2006 format(' RMS-norms of solution error') - - do m = 1, 5 - if (class .eq. 'U') then - write(*, 2015) m, xce(m) - else if (xcedif(m) .le. epsilon) then - write (*,2011) m,xce(m),xceref(m),xcedif(m) - else - verified = .false. - write (*,2010) m,xce(m),xceref(m),xcedif(m) - endif - enddo - - 2010 format(' FAILURE: ', i2, E20.13, E20.13, E20.13) - 2011 format(' ', i2, E20.13, E20.13, E20.13) - 2015 format(' ', i2, E20.13) - - if (class .eq. 'U') then - write(*, 2022) - write(*, 2023) - 2022 format(' No reference values provided') - 2023 format(' No verification performed') - else if (verified) then - write(*, 2020) - 2020 format(' Verification Successful') - else - write(*, 2021) - 2021 format(' Verification failed') - endif - - return - - - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/work_lhs.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/work_lhs.h deleted file mode 100644 index d9bc9e4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/work_lhs.h +++ /dev/null @@ -1,14 +0,0 @@ -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- -c -c work_lhs.h -c -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - double precision fjac(5, 5, -2:MAX_CELL_DIM+1), - > njac(5, 5, -2:MAX_CELL_DIM+1), - > lhsa(5, 5, -1:MAX_CELL_DIM), - > lhsb(5, 5, -1:MAX_CELL_DIM), - > tmp1, tmp2, tmp3 - common /work_lhs/ fjac, njac, lhsa, lhsb, tmp1, tmp2, tmp3 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/x_solve.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/x_solve.f deleted file mode 100644 index e0daab3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/BT_dvmh/x_solve.f +++ /dev/null @@ -1,3547 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine lhsabinit(lhsa, lhsb, size) - implicit none - intent (out)::lhsa, lhsb - intent (in)::size - integer size - double precision lhsa(5, 5, -1:size), lhsb(5, 5, -1:size) - - integer i, m, n - -c--------------------------------------------------------------------- -c next, set all diagonal values to 1. This is overkill, but convenient -c--------------------------------------------------------------------- - do i = 0, size - do m = 1, 5 - do n = 1, 5 - lhsa(m,n,i) = 0.0d0 - lhsb(m,n,i) = 0.0d0 - enddo - lhsb(m,m,i) = 1.0d0 - enddo - enddo - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - pure subroutine matvec_sub(ablock,avec,bvec) -!DVM$ routine -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c subtracts bvec=bvec - ablock*avec -c--------------------------------------------------------------------- - - implicit none - intent (inout)::ablock,avec,bvec - double precision ablock,avec,bvec - dimension ablock(5,5),avec(5),bvec(5) - -c--------------------------------------------------------------------- -c rhs(i,ic,jc,kc,ccell) = rhs(i,ic,jc,kc,ccell) -c $ - lhs(i,1,ablock,ia,ja,ka,acell)* -c--------------------------------------------------------------------- - bvec(1) = bvec(1) - ablock(1,1)*avec(1) - > - ablock(1,2)*avec(2) - > - ablock(1,3)*avec(3) - > - ablock(1,4)*avec(4) - > - ablock(1,5)*avec(5) - bvec(2) = bvec(2) - ablock(2,1)*avec(1) - > - ablock(2,2)*avec(2) - > - ablock(2,3)*avec(3) - > - ablock(2,4)*avec(4) - > - ablock(2,5)*avec(5) - bvec(3) = bvec(3) - ablock(3,1)*avec(1) - > - ablock(3,2)*avec(2) - > - ablock(3,3)*avec(3) - > - ablock(3,4)*avec(4) - > - ablock(3,5)*avec(5) - bvec(4) = bvec(4) - ablock(4,1)*avec(1) - > - ablock(4,2)*avec(2) - > - ablock(4,3)*avec(3) - > - ablock(4,4)*avec(4) - > - ablock(4,5)*avec(5) - bvec(5) = bvec(5) - ablock(5,1)*avec(1) - > - ablock(5,2)*avec(2) - > - ablock(5,3)*avec(3) - > - ablock(5,4)*avec(4) - > - ablock(5,5)*avec(5) - - - return - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine matmul_sub(ablock, bblock, cblock) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c subtracts a(i,j,k) X b(i,j,k) from c(i,j,k) -c--------------------------------------------------------------------- - - implicit none - intent (inout)::cblock - intent (in)::ablock, bblock - double precision ablock, bblock, cblock - dimension ablock(5,5), bblock(5,5), cblock(5,5) - - - cblock(1,1) = cblock(1,1) - ablock(1,1)*bblock(1,1) - > - ablock(1,2)*bblock(2,1) - > - ablock(1,3)*bblock(3,1) - > - ablock(1,4)*bblock(4,1) - > - ablock(1,5)*bblock(5,1) - cblock(2,1) = cblock(2,1) - ablock(2,1)*bblock(1,1) - > - ablock(2,2)*bblock(2,1) - > - ablock(2,3)*bblock(3,1) - > - ablock(2,4)*bblock(4,1) - > - ablock(2,5)*bblock(5,1) - cblock(3,1) = cblock(3,1) - ablock(3,1)*bblock(1,1) - > - ablock(3,2)*bblock(2,1) - > - ablock(3,3)*bblock(3,1) - > - ablock(3,4)*bblock(4,1) - > - ablock(3,5)*bblock(5,1) - cblock(4,1) = cblock(4,1) - ablock(4,1)*bblock(1,1) - > - ablock(4,2)*bblock(2,1) - > - ablock(4,3)*bblock(3,1) - > - ablock(4,4)*bblock(4,1) - > - ablock(4,5)*bblock(5,1) - cblock(5,1) = cblock(5,1) - ablock(5,1)*bblock(1,1) - > - ablock(5,2)*bblock(2,1) - > - ablock(5,3)*bblock(3,1) - > - ablock(5,4)*bblock(4,1) - > - ablock(5,5)*bblock(5,1) - cblock(1,2) = cblock(1,2) - ablock(1,1)*bblock(1,2) - > - ablock(1,2)*bblock(2,2) - > - ablock(1,3)*bblock(3,2) - > - ablock(1,4)*bblock(4,2) - > - ablock(1,5)*bblock(5,2) - cblock(2,2) = cblock(2,2) - ablock(2,1)*bblock(1,2) - > - ablock(2,2)*bblock(2,2) - > - ablock(2,3)*bblock(3,2) - > - ablock(2,4)*bblock(4,2) - > - ablock(2,5)*bblock(5,2) - cblock(3,2) = cblock(3,2) - ablock(3,1)*bblock(1,2) - > - ablock(3,2)*bblock(2,2) - > - ablock(3,3)*bblock(3,2) - > - ablock(3,4)*bblock(4,2) - > - ablock(3,5)*bblock(5,2) - cblock(4,2) = cblock(4,2) - ablock(4,1)*bblock(1,2) - > - ablock(4,2)*bblock(2,2) - > - ablock(4,3)*bblock(3,2) - > - ablock(4,4)*bblock(4,2) - > - ablock(4,5)*bblock(5,2) - cblock(5,2) = cblock(5,2) - ablock(5,1)*bblock(1,2) - > - ablock(5,2)*bblock(2,2) - > - ablock(5,3)*bblock(3,2) - > - ablock(5,4)*bblock(4,2) - > - ablock(5,5)*bblock(5,2) - cblock(1,3) = cblock(1,3) - ablock(1,1)*bblock(1,3) - > - ablock(1,2)*bblock(2,3) - > - ablock(1,3)*bblock(3,3) - > - ablock(1,4)*bblock(4,3) - > - ablock(1,5)*bblock(5,3) - cblock(2,3) = cblock(2,3) - ablock(2,1)*bblock(1,3) - > - ablock(2,2)*bblock(2,3) - > - ablock(2,3)*bblock(3,3) - > - ablock(2,4)*bblock(4,3) - > - ablock(2,5)*bblock(5,3) - cblock(3,3) = cblock(3,3) - ablock(3,1)*bblock(1,3) - > - ablock(3,2)*bblock(2,3) - > - ablock(3,3)*bblock(3,3) - > - ablock(3,4)*bblock(4,3) - > - ablock(3,5)*bblock(5,3) - cblock(4,3) = cblock(4,3) - ablock(4,1)*bblock(1,3) - > - ablock(4,2)*bblock(2,3) - > - ablock(4,3)*bblock(3,3) - > - ablock(4,4)*bblock(4,3) - > - ablock(4,5)*bblock(5,3) - cblock(5,3) = cblock(5,3) - ablock(5,1)*bblock(1,3) - > - ablock(5,2)*bblock(2,3) - > - ablock(5,3)*bblock(3,3) - > - ablock(5,4)*bblock(4,3) - > - ablock(5,5)*bblock(5,3) - cblock(1,4) = cblock(1,4) - ablock(1,1)*bblock(1,4) - > - ablock(1,2)*bblock(2,4) - > - ablock(1,3)*bblock(3,4) - > - ablock(1,4)*bblock(4,4) - > - ablock(1,5)*bblock(5,4) - cblock(2,4) = cblock(2,4) - ablock(2,1)*bblock(1,4) - > - ablock(2,2)*bblock(2,4) - > - ablock(2,3)*bblock(3,4) - > - ablock(2,4)*bblock(4,4) - > - ablock(2,5)*bblock(5,4) - cblock(3,4) = cblock(3,4) - ablock(3,1)*bblock(1,4) - > - ablock(3,2)*bblock(2,4) - > - ablock(3,3)*bblock(3,4) - > - ablock(3,4)*bblock(4,4) - > - ablock(3,5)*bblock(5,4) - cblock(4,4) = cblock(4,4) - ablock(4,1)*bblock(1,4) - > - ablock(4,2)*bblock(2,4) - > - ablock(4,3)*bblock(3,4) - > - ablock(4,4)*bblock(4,4) - > - ablock(4,5)*bblock(5,4) - cblock(5,4) = cblock(5,4) - ablock(5,1)*bblock(1,4) - > - ablock(5,2)*bblock(2,4) - > - ablock(5,3)*bblock(3,4) - > - ablock(5,4)*bblock(4,4) - > - ablock(5,5)*bblock(5,4) - cblock(1,5) = cblock(1,5) - ablock(1,1)*bblock(1,5) - > - ablock(1,2)*bblock(2,5) - > - ablock(1,3)*bblock(3,5) - > - ablock(1,4)*bblock(4,5) - > - ablock(1,5)*bblock(5,5) - cblock(2,5) = cblock(2,5) - ablock(2,1)*bblock(1,5) - > - ablock(2,2)*bblock(2,5) - > - ablock(2,3)*bblock(3,5) - > - ablock(2,4)*bblock(4,5) - > - ablock(2,5)*bblock(5,5) - cblock(3,5) = cblock(3,5) - ablock(3,1)*bblock(1,5) - > - ablock(3,2)*bblock(2,5) - > - ablock(3,3)*bblock(3,5) - > - ablock(3,4)*bblock(4,5) - > - ablock(3,5)*bblock(5,5) - cblock(4,5) = cblock(4,5) - ablock(4,1)*bblock(1,5) - > - ablock(4,2)*bblock(2,5) - > - ablock(4,3)*bblock(3,5) - > - ablock(4,4)*bblock(4,5) - > - ablock(4,5)*bblock(5,5) - cblock(5,5) = cblock(5,5) - ablock(5,1)*bblock(1,5) - > - ablock(5,2)*bblock(2,5) - > - ablock(5,3)*bblock(3,5) - > - ablock(5,4)*bblock(4,5) - > - ablock(5,5)*bblock(5,5) - - - return - end - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine binvcrhs( lhs,c,r ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - - implicit none - intent (inout)::lhs,c,r - double precision pivot, coeff, lhs - dimension lhs(5,5) - double precision c(5,5), r(5) - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - - pivot = 1.00d0/lhs(1,1) - lhs(1,2) = lhs(1,2)*pivot - lhs(1,3) = lhs(1,3)*pivot - lhs(1,4) = lhs(1,4)*pivot - lhs(1,5) = lhs(1,5)*pivot - c(1,1) = c(1,1)*pivot - c(1,2) = c(1,2)*pivot - c(1,3) = c(1,3)*pivot - c(1,4) = c(1,4)*pivot - c(1,5) = c(1,5)*pivot - r(1) = r(1) *pivot - - coeff = lhs(2,1) - lhs(2,2)= lhs(2,2) - coeff*lhs(1,2) - lhs(2,3)= lhs(2,3) - coeff*lhs(1,3) - lhs(2,4)= lhs(2,4) - coeff*lhs(1,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(1,5) - c(2,1) = c(2,1) - coeff*c(1,1) - c(2,2) = c(2,2) - coeff*c(1,2) - c(2,3) = c(2,3) - coeff*c(1,3) - c(2,4) = c(2,4) - coeff*c(1,4) - c(2,5) = c(2,5) - coeff*c(1,5) - r(2) = r(2) - coeff*r(1) - - coeff = lhs(3,1) - lhs(3,2)= lhs(3,2) - coeff*lhs(1,2) - lhs(3,3)= lhs(3,3) - coeff*lhs(1,3) - lhs(3,4)= lhs(3,4) - coeff*lhs(1,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(1,5) - c(3,1) = c(3,1) - coeff*c(1,1) - c(3,2) = c(3,2) - coeff*c(1,2) - c(3,3) = c(3,3) - coeff*c(1,3) - c(3,4) = c(3,4) - coeff*c(1,4) - c(3,5) = c(3,5) - coeff*c(1,5) - r(3) = r(3) - coeff*r(1) - - coeff = lhs(4,1) - lhs(4,2)= lhs(4,2) - coeff*lhs(1,2) - lhs(4,3)= lhs(4,3) - coeff*lhs(1,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(1,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(1,5) - c(4,1) = c(4,1) - coeff*c(1,1) - c(4,2) = c(4,2) - coeff*c(1,2) - c(4,3) = c(4,3) - coeff*c(1,3) - c(4,4) = c(4,4) - coeff*c(1,4) - c(4,5) = c(4,5) - coeff*c(1,5) - r(4) = r(4) - coeff*r(1) - - coeff = lhs(5,1) - lhs(5,2)= lhs(5,2) - coeff*lhs(1,2) - lhs(5,3)= lhs(5,3) - coeff*lhs(1,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(1,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(1,5) - c(5,1) = c(5,1) - coeff*c(1,1) - c(5,2) = c(5,2) - coeff*c(1,2) - c(5,3) = c(5,3) - coeff*c(1,3) - c(5,4) = c(5,4) - coeff*c(1,4) - c(5,5) = c(5,5) - coeff*c(1,5) - r(5) = r(5) - coeff*r(1) - - - pivot = 1.00d0/lhs(2,2) - lhs(2,3) = lhs(2,3)*pivot - lhs(2,4) = lhs(2,4)*pivot - lhs(2,5) = lhs(2,5)*pivot - c(2,1) = c(2,1)*pivot - c(2,2) = c(2,2)*pivot - c(2,3) = c(2,3)*pivot - c(2,4) = c(2,4)*pivot - c(2,5) = c(2,5)*pivot - r(2) = r(2) *pivot - - coeff = lhs(1,2) - lhs(1,3)= lhs(1,3) - coeff*lhs(2,3) - lhs(1,4)= lhs(1,4) - coeff*lhs(2,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(2,5) - c(1,1) = c(1,1) - coeff*c(2,1) - c(1,2) = c(1,2) - coeff*c(2,2) - c(1,3) = c(1,3) - coeff*c(2,3) - c(1,4) = c(1,4) - coeff*c(2,4) - c(1,5) = c(1,5) - coeff*c(2,5) - r(1) = r(1) - coeff*r(2) - - coeff = lhs(3,2) - lhs(3,3)= lhs(3,3) - coeff*lhs(2,3) - lhs(3,4)= lhs(3,4) - coeff*lhs(2,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(2,5) - c(3,1) = c(3,1) - coeff*c(2,1) - c(3,2) = c(3,2) - coeff*c(2,2) - c(3,3) = c(3,3) - coeff*c(2,3) - c(3,4) = c(3,4) - coeff*c(2,4) - c(3,5) = c(3,5) - coeff*c(2,5) - r(3) = r(3) - coeff*r(2) - - coeff = lhs(4,2) - lhs(4,3)= lhs(4,3) - coeff*lhs(2,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(2,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(2,5) - c(4,1) = c(4,1) - coeff*c(2,1) - c(4,2) = c(4,2) - coeff*c(2,2) - c(4,3) = c(4,3) - coeff*c(2,3) - c(4,4) = c(4,4) - coeff*c(2,4) - c(4,5) = c(4,5) - coeff*c(2,5) - r(4) = r(4) - coeff*r(2) - - coeff = lhs(5,2) - lhs(5,3)= lhs(5,3) - coeff*lhs(2,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(2,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(2,5) - c(5,1) = c(5,1) - coeff*c(2,1) - c(5,2) = c(5,2) - coeff*c(2,2) - c(5,3) = c(5,3) - coeff*c(2,3) - c(5,4) = c(5,4) - coeff*c(2,4) - c(5,5) = c(5,5) - coeff*c(2,5) - r(5) = r(5) - coeff*r(2) - - - pivot = 1.00d0/lhs(3,3) - lhs(3,4) = lhs(3,4)*pivot - lhs(3,5) = lhs(3,5)*pivot - c(3,1) = c(3,1)*pivot - c(3,2) = c(3,2)*pivot - c(3,3) = c(3,3)*pivot - c(3,4) = c(3,4)*pivot - c(3,5) = c(3,5)*pivot - r(3) = r(3) *pivot - - coeff = lhs(1,3) - lhs(1,4)= lhs(1,4) - coeff*lhs(3,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(3,5) - c(1,1) = c(1,1) - coeff*c(3,1) - c(1,2) = c(1,2) - coeff*c(3,2) - c(1,3) = c(1,3) - coeff*c(3,3) - c(1,4) = c(1,4) - coeff*c(3,4) - c(1,5) = c(1,5) - coeff*c(3,5) - r(1) = r(1) - coeff*r(3) - - coeff = lhs(2,3) - lhs(2,4)= lhs(2,4) - coeff*lhs(3,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(3,5) - c(2,1) = c(2,1) - coeff*c(3,1) - c(2,2) = c(2,2) - coeff*c(3,2) - c(2,3) = c(2,3) - coeff*c(3,3) - c(2,4) = c(2,4) - coeff*c(3,4) - c(2,5) = c(2,5) - coeff*c(3,5) - r(2) = r(2) - coeff*r(3) - - coeff = lhs(4,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(3,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(3,5) - c(4,1) = c(4,1) - coeff*c(3,1) - c(4,2) = c(4,2) - coeff*c(3,2) - c(4,3) = c(4,3) - coeff*c(3,3) - c(4,4) = c(4,4) - coeff*c(3,4) - c(4,5) = c(4,5) - coeff*c(3,5) - r(4) = r(4) - coeff*r(3) - - coeff = lhs(5,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(3,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(3,5) - c(5,1) = c(5,1) - coeff*c(3,1) - c(5,2) = c(5,2) - coeff*c(3,2) - c(5,3) = c(5,3) - coeff*c(3,3) - c(5,4) = c(5,4) - coeff*c(3,4) - c(5,5) = c(5,5) - coeff*c(3,5) - r(5) = r(5) - coeff*r(3) - - - pivot = 1.00d0/lhs(4,4) - lhs(4,5) = lhs(4,5)*pivot - c(4,1) = c(4,1)*pivot - c(4,2) = c(4,2)*pivot - c(4,3) = c(4,3)*pivot - c(4,4) = c(4,4)*pivot - c(4,5) = c(4,5)*pivot - r(4) = r(4) *pivot - - coeff = lhs(1,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(4,5) - c(1,1) = c(1,1) - coeff*c(4,1) - c(1,2) = c(1,2) - coeff*c(4,2) - c(1,3) = c(1,3) - coeff*c(4,3) - c(1,4) = c(1,4) - coeff*c(4,4) - c(1,5) = c(1,5) - coeff*c(4,5) - r(1) = r(1) - coeff*r(4) - - coeff = lhs(2,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(4,5) - c(2,1) = c(2,1) - coeff*c(4,1) - c(2,2) = c(2,2) - coeff*c(4,2) - c(2,3) = c(2,3) - coeff*c(4,3) - c(2,4) = c(2,4) - coeff*c(4,4) - c(2,5) = c(2,5) - coeff*c(4,5) - r(2) = r(2) - coeff*r(4) - - coeff = lhs(3,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(4,5) - c(3,1) = c(3,1) - coeff*c(4,1) - c(3,2) = c(3,2) - coeff*c(4,2) - c(3,3) = c(3,3) - coeff*c(4,3) - c(3,4) = c(3,4) - coeff*c(4,4) - c(3,5) = c(3,5) - coeff*c(4,5) - r(3) = r(3) - coeff*r(4) - - coeff = lhs(5,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(4,5) - c(5,1) = c(5,1) - coeff*c(4,1) - c(5,2) = c(5,2) - coeff*c(4,2) - c(5,3) = c(5,3) - coeff*c(4,3) - c(5,4) = c(5,4) - coeff*c(4,4) - c(5,5) = c(5,5) - coeff*c(4,5) - r(5) = r(5) - coeff*r(4) - - - pivot = 1.00d0/lhs(5,5) - c(5,1) = c(5,1)*pivot - c(5,2) = c(5,2)*pivot - c(5,3) = c(5,3)*pivot - c(5,4) = c(5,4)*pivot - c(5,5) = c(5,5)*pivot - r(5) = r(5) *pivot - - coeff = lhs(1,5) - c(1,1) = c(1,1) - coeff*c(5,1) - c(1,2) = c(1,2) - coeff*c(5,2) - c(1,3) = c(1,3) - coeff*c(5,3) - c(1,4) = c(1,4) - coeff*c(5,4) - c(1,5) = c(1,5) - coeff*c(5,5) - r(1) = r(1) - coeff*r(5) - - coeff = lhs(2,5) - c(2,1) = c(2,1) - coeff*c(5,1) - c(2,2) = c(2,2) - coeff*c(5,2) - c(2,3) = c(2,3) - coeff*c(5,3) - c(2,4) = c(2,4) - coeff*c(5,4) - c(2,5) = c(2,5) - coeff*c(5,5) - r(2) = r(2) - coeff*r(5) - - coeff = lhs(3,5) - c(3,1) = c(3,1) - coeff*c(5,1) - c(3,2) = c(3,2) - coeff*c(5,2) - c(3,3) = c(3,3) - coeff*c(5,3) - c(3,4) = c(3,4) - coeff*c(5,4) - c(3,5) = c(3,5) - coeff*c(5,5) - r(3) = r(3) - coeff*r(5) - - coeff = lhs(4,5) - c(4,1) = c(4,1) - coeff*c(5,1) - c(4,2) = c(4,2) - coeff*c(5,2) - c(4,3) = c(4,3) - coeff*c(5,3) - c(4,4) = c(4,4) - coeff*c(5,4) - c(4,5) = c(4,5) - coeff*c(5,5) - r(4) = r(4) - coeff*r(5) - - - return - end - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine binvrhs( lhs,r ) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - - implicit none - intent (inout)::lhs,r - double precision pivot, coeff, lhs - dimension lhs(5,5) - double precision r(5) - -c--------------------------------------------------------------------- -c -c--------------------------------------------------------------------- - - - pivot = 1.00d0/lhs(1,1) - lhs(1,2) = lhs(1,2)*pivot - lhs(1,3) = lhs(1,3)*pivot - lhs(1,4) = lhs(1,4)*pivot - lhs(1,5) = lhs(1,5)*pivot - r(1) = r(1) *pivot - - coeff = lhs(2,1) - lhs(2,2)= lhs(2,2) - coeff*lhs(1,2) - lhs(2,3)= lhs(2,3) - coeff*lhs(1,3) - lhs(2,4)= lhs(2,4) - coeff*lhs(1,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(1,5) - r(2) = r(2) - coeff*r(1) - - coeff = lhs(3,1) - lhs(3,2)= lhs(3,2) - coeff*lhs(1,2) - lhs(3,3)= lhs(3,3) - coeff*lhs(1,3) - lhs(3,4)= lhs(3,4) - coeff*lhs(1,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(1,5) - r(3) = r(3) - coeff*r(1) - - coeff = lhs(4,1) - lhs(4,2)= lhs(4,2) - coeff*lhs(1,2) - lhs(4,3)= lhs(4,3) - coeff*lhs(1,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(1,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(1,5) - r(4) = r(4) - coeff*r(1) - - coeff = lhs(5,1) - lhs(5,2)= lhs(5,2) - coeff*lhs(1,2) - lhs(5,3)= lhs(5,3) - coeff*lhs(1,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(1,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(1,5) - r(5) = r(5) - coeff*r(1) - - - pivot = 1.00d0/lhs(2,2) - lhs(2,3) = lhs(2,3)*pivot - lhs(2,4) = lhs(2,4)*pivot - lhs(2,5) = lhs(2,5)*pivot - r(2) = r(2) *pivot - - coeff = lhs(1,2) - lhs(1,3)= lhs(1,3) - coeff*lhs(2,3) - lhs(1,4)= lhs(1,4) - coeff*lhs(2,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(2,5) - r(1) = r(1) - coeff*r(2) - - coeff = lhs(3,2) - lhs(3,3)= lhs(3,3) - coeff*lhs(2,3) - lhs(3,4)= lhs(3,4) - coeff*lhs(2,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(2,5) - r(3) = r(3) - coeff*r(2) - - coeff = lhs(4,2) - lhs(4,3)= lhs(4,3) - coeff*lhs(2,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(2,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(2,5) - r(4) = r(4) - coeff*r(2) - - coeff = lhs(5,2) - lhs(5,3)= lhs(5,3) - coeff*lhs(2,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(2,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(2,5) - r(5) = r(5) - coeff*r(2) - - - pivot = 1.00d0/lhs(3,3) - lhs(3,4) = lhs(3,4)*pivot - lhs(3,5) = lhs(3,5)*pivot - r(3) = r(3) *pivot - - coeff = lhs(1,3) - lhs(1,4)= lhs(1,4) - coeff*lhs(3,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(3,5) - r(1) = r(1) - coeff*r(3) - - coeff = lhs(2,3) - lhs(2,4)= lhs(2,4) - coeff*lhs(3,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(3,5) - r(2) = r(2) - coeff*r(3) - - coeff = lhs(4,3) - lhs(4,4)= lhs(4,4) - coeff*lhs(3,4) - lhs(4,5)= lhs(4,5) - coeff*lhs(3,5) - r(4) = r(4) - coeff*r(3) - - coeff = lhs(5,3) - lhs(5,4)= lhs(5,4) - coeff*lhs(3,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(3,5) - r(5) = r(5) - coeff*r(3) - - - pivot = 1.00d0/lhs(4,4) - lhs(4,5) = lhs(4,5)*pivot - r(4) = r(4) *pivot - - coeff = lhs(1,4) - lhs(1,5)= lhs(1,5) - coeff*lhs(4,5) - r(1) = r(1) - coeff*r(4) - - coeff = lhs(2,4) - lhs(2,5)= lhs(2,5) - coeff*lhs(4,5) - r(2) = r(2) - coeff*r(4) - - coeff = lhs(3,4) - lhs(3,5)= lhs(3,5) - coeff*lhs(4,5) - r(3) = r(3) - coeff*r(4) - - coeff = lhs(5,4) - lhs(5,5)= lhs(5,5) - coeff*lhs(4,5) - r(5) = r(5) - coeff*r(4) - - - pivot = 1.00d0/lhs(5,5) - r(5) = r(5) *pivot - - coeff = lhs(1,5) - r(1) = r(1) - coeff*r(5) - - coeff = lhs(2,5) - r(2) = r(2) - coeff*r(5) - - coeff = lhs(3,5) - r(3) = r(3) - coeff*r(5) - - coeff = lhs(4,5) - r(4) = r(4) - coeff*r(5) - - - return - end - - - - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c -c Performs line solves in X direction by first factoring -c the block-tridiagonal matrix into an upper triangular matrix, -c and then performing back substitution to solve for the unknow -c vectors of each line. -c -c Make sure we treat elements zero to cell_size in the direction -c of the sweep. -c -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer c, istart, stage, - > first, last, recv_id, error, r_status(MPI_STATUS_SIZE), - > isize,jsize,ksize,send_id,k,j,i - - istart = 0 - - if (timeron) call timer_start(t_xsolve) -c--------------------------------------------------------------------- -c in our terminology stage is the number of the cell in the x-direction -c i.e. stage = 1 means the start of the line stage=ncells means end -c--------------------------------------------------------------------- - call x_first() - do stage = 1,ncells - c = slice(1,stage) - isize = cell_size(1,c) - 1 - jsize = cell_size(2,c) - 1 - ksize = cell_size(3,c) - 1 - -c--------------------------------------------------------------------- -c set last-cell flag -c--------------------------------------------------------------------- - if (stage .eq. ncells) then - last = 1 - else - last = 0 - endif - - if (stage .eq. 1) then -c--------------------------------------------------------------------- -c This is the first cell, so solve without receiving data -c--------------------------------------------------------------------- - first = 1 -c call lhsx(c) - call x_solve_cell(first,last,c) - else -c--------------------------------------------------------------------- -c Not the first cell of this line, so receive info from -c processor working on preceeding cell -c--------------------------------------------------------------------- - first = 0 - if (timeron) call timer_start(t_xcomm) - call x_receive_solve_info(recv_id,c) -c--------------------------------------------------------------------- -c overlap computations and communications -c--------------------------------------------------------------------- -c call lhsx(c) -c--------------------------------------------------------------------- -c wait for completion -c--------------------------------------------------------------------- - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_xcomm) -c--------------------------------------------------------------------- -c install C'(istart) and rhs'(istart) to be used in this cell -c--------------------------------------------------------------------- - call x_unpack_solve_info(c) - call x_solve_cell(first,last,c) - endif - - if (last .eq. 0) call x_send_solve_info(send_id,c) - enddo -c--------------------------------------------------------------------- -c now perform backsubstitution in reverse direction -c--------------------------------------------------------------------- - do stage = ncells, 1, -1 - c = slice(1,stage) - first = 0 - last = 0 - if (stage .eq. 1) first = 1 - if (stage .eq. ncells) then - last = 1 -c--------------------------------------------------------------------- -c last cell, so perform back substitute without waiting -c--------------------------------------------------------------------- - call x_backsubstitute(first, last,c) - else - if (timeron) call timer_start(t_xcomm) - call x_receive_backsub_info(recv_id,c) - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_xcomm) - call x_unpack_backsub_info(c) - call x_backsubstitute(first,last,c) - endif - if (first .eq. 0) call x_send_backsub_info(send_id,c) - enddo - if (timeron) call timer_stop(t_xsolve) - - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_unpack_solve_info(c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack C'(-1) and rhs'(-1) for -c all j and k -c--------------------------------------------------------------------- - - include 'header.h' - integer j,k,m,n,ptr,c,istart - - istart = 0 - ptr = 0 -!DVM$ actual(out_buffer) -!DVM$ region -!DVM$ PARALLEL(k,j), PRIVATE(ptr,m,n), -!DVM$& TIE(lhsc(*,*,*,j,k,*), rhs(*,*,j,k,c)) - do k=0,KMAX-1 - do j=0,JMAX-1 - ptr = (k * JMAX + J) * (BLOCK_SIZE +BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - lhsc(m,n,istart-1,j,k,c) = out_buffer(ptr+n+(m-1)*BLOCK_SIZE) - enddo - enddo - - do n=1,BLOCK_SIZE - rhs(n,istart-1,j,k,c) = out_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) - enddo - enddo - enddo -!DVM$ end region - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_send_solve_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send C'(iend) and rhs'(iend) for -c all j and k -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer j,k,m,n,isize,ptr,c,jp,kp - integer error,send_id,buffer_size - - isize = cell_size(1,c)-1 - jp = cell_coord(2,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - -c--------------------------------------------------------------------- -c pack up buffer -c--------------------------------------------------------------------- - ptr = 0 -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(k,j), PRIVATE(ptr,m,n), -!DVM$& TIE(lhsc(*,*,*,j,k,*), rhs(*,*,j,k,c)) - do k=0,KMAX-1 - do j=0,JMAX-1 - ptr = (k * JMAX + J) * (BLOCK_SIZE +BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n+(m-1)*BLOCK_SIZE) = lhsc(m,n,isize,j,k,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - do n=1,BLOCK_SIZE - in_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) = rhs(n,isize,j,k,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region -!DVM$ get_actual(in_buffer) -c--------------------------------------------------------------------- -c send buffer -c--------------------------------------------------------------------- - if (timeron) call timer_start(t_xcomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, successor(1), - > WEST+jp+kp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_xcomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_send_backsub_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send U(istart) for all j and k -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer j,k,n,ptr,c,istart,jp,kp - integer error,send_id,buffer_size - -c--------------------------------------------------------------------- -c Send element 0 to previous processor -c--------------------------------------------------------------------- - istart = 0 - jp = cell_coord(2,c)-1 - kp = cell_coord(3,c)-1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - ptr = 0 - -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(k,j), PRIVATE(n,ptr), -!DVM$& TIE(rhs(*,*,j,k,*)) - do k=0,KMAX-1 - do j=0,JMAX-1 - ptr = (k * JMAX + j) * BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n) = rhs(n,istart,j,k,c) - enddo - enddo - enddo -!DVM$ end region -!DVM$ get_actual(in_buffer) - - if (timeron) call timer_start(t_xcomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, predecessor(1), - > EAST+jp+kp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_xcomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_unpack_backsub_info(c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack U(isize) for all j and k -c--------------------------------------------------------------------- - - include 'header.h' - integer j,k,n,ptr,c - - ptr = 0 - -!DVM$ actual(out_buffer) - -!DVM$ region out(backsub_info) -!DVM$ PARALLEL(k,j), PRIVATE(n,ptr), -!DVM$& TIE(backsub_info(*,j,k,*)) - do k=0,KMAX-1 - do j=0,JMAX-1 - ptr = (k * JMAX + j) * BLOCK_SIZE - do n=1,BLOCK_SIZE - backsub_info(n,j,k,c) = out_buffer(ptr+n) - enddo - enddo - enddo -!DVM$ end region - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_receive_backsub_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer error,recv_id,jp,kp,c,buffer_size - jp = cell_coord(2,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - call mpi_irecv(out_buffer, buffer_size, - > dp_type, successor(1), - > EAST+jp+kp*NCELLS, comm_solve, - > recv_id, error) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_receive_solve_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer jp,kp,recv_id,error,c,buffer_size - jp = cell_coord(2,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - call mpi_irecv(out_buffer, buffer_size, - > dp_type, predecessor(1), - > WEST+jp+kp*NCELLS, comm_solve, - > recv_id, error) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_backsubstitute(first, last, c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c back solve: if last cell, then generate U(isize)=rhs(isize) -c else assume U(isize) is loaded in un pack backsub_info -c so just use it -c after call u(istart) will be sent to next cell -c--------------------------------------------------------------------- - - include 'header.h' - - integer first, last, c, i, j, k - integer m,n,isize,jsize,ksize,istart - - istart = 0 - isize = cell_size(1,c)-1 - jsize = cell_size(2,c)-end(2,c)-1 - ksize = cell_size(3,c)-end(3,c)-1 - if (last .eq. 0) then - -!1$omp parallel do private(k,j,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j), PRIVATE(k,j,m,n), -!DVM$& TIE(lhsc(*,*,*,j,k,*), rhs(*,*,j,k,*),backsub_info(*,j,k,*)) - do k=start(3,c),ksize - do j=start(2,c),jsize -c--------------------------------------------------------------------- -c U(isize) uses info from previous cell if not last cell -c--------------------------------------------------------------------- - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,isize,j,k,c) = rhs(m,isize,j,k,c) - > - lhsc(m,n,isize,j,k,c)* - > backsub_info(n,j,k,c) -c--------------------------------------------------------------------- -c rhs(m,isize,j,k,c) = rhs(m,isize,j,k,c) -c $ - lhsc(m,n,isize,j,k,c)*rhs(n,isize+1,j,k,c) -c--------------------------------------------------------------------- - enddo - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,j), PRIVATE(k,j,i,m,n), -!DVM$& TIE(lhsc(*,*,*,j,k,*), rhs(*,*,j,k,*)) - do k=start(3,c),ksize - do j=start(2,c),jsize - do i=isize-1,istart,-1 - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - > - lhsc(m,n,i,j,k,c)*rhs(n,i+1,j,k,c) - enddo - enddo - enddo - enddo - enddo -!DVM$ end region - return - end - - pure subroutine fjac_x_solve(fjac,u_,rho_i_,qs_,c1,c2) - implicit none - INTENT (out) :: fjac - INTENT (in) :: u_,rho_i_,qs_,c1,c2 - double precision fjac(5,5),tmp1,tmp2,u_(5),rho_i_,qs_ - double precision c1,c2 - tmp1 = rho_i_ - tmp2 = tmp1 * tmp1 - - fjac(1,1) = 0.0d+00 - fjac(1,2) = 1.0d+00 - fjac(1,3) = 0.0d+00 - fjac(1,4) = 0.0d+00 - fjac(1,5) = 0.0d+00 - - fjac(2,1) = -(u_(2) * tmp2 * u_(2)) + c2 * qs_ - fjac(2,2) = ( 2.0d+00 - c2 ) * ( u_(2) * tmp1 ) - fjac(2,3) = - c2 * ( u_(3) * tmp1 ) - fjac(2,4) = - c2 * ( u_(4) * tmp1 ) - fjac(2,5) = c2 - - fjac(3,1) = - (u_(2)*u_(3)) * tmp2 - fjac(3,2) = u_(3) * tmp1 - fjac(3,3) = u_(2) * tmp1 - fjac(3,4) = 0.0d+00 - fjac(3,5) = 0.0d+00 - - fjac(4,1) = - ( u_(2)*u_(4) ) * tmp2 - fjac(4,2) = u_(4) * tmp1 - fjac(4,3) = 0.0d+00 - fjac(4,4) = u_(2) * tmp1 - fjac(4,5) = 0.0d+00 - - fjac(5,1) = ( c2 * 2.0d0 * qs_ - > - c1 * ( u_(5) * tmp1)) * (u_(2) * tmp1) - fjac(5,2) = c1 * u_(5) * tmp1 - c2 - > * ( u_(2)*u_(2) * tmp2 + qs_ ) - fjac(5,3) = - c2 * ( u_(3)*u_(2) )* tmp2 - fjac(5,4) = - c2 * ( u_(4)*u_(2) )* tmp2 - fjac(5,5) = c1 * ( u_(2) * tmp1 ) - end - - pure subroutine njac_x_solve(njac,u,rho_i,con43,c3c4,c1345) - implicit none - INTENT (out) :: njac - INTENT (in) :: u,rho_i,con43,c3c4,c1345 - double precision njac(5,5),tmp1,tmp2,tmp3,rho_i,u(5) - double precision con43,c3c4,c1345 - - tmp1 = rho_i - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - - njac(1,1) = 0.0d+00 - njac(1,2) = 0.0d+00 - njac(1,3) = 0.0d+00 - njac(1,4) = 0.0d+00 - njac(1,5) = 0.0d+00 - - njac(2,1) = - con43 * c3c4 * tmp2 * u(2) - njac(2,2) = con43 * c3c4 * tmp1 - njac(2,3) = 0.0d+00 - njac(2,4) = 0.0d+00 - njac(2,5) = 0.0d+00 - - njac(3,1) = - c3c4 * tmp2 * u(3) - njac(3,2) = 0.0d+00 - njac(3,3) = c3c4 * tmp1 - njac(3,4) = 0.0d+00 - njac(3,5) = 0.0d+00 - - njac(4,1) = - c3c4 * tmp2 * u(4) - njac(4,2) = 0.0d+00 - njac(4,3) = 0.0d+00 - njac(4,4) = c3c4 * tmp1 - njac(4,5) = 0.0d+00 - - njac(5,1) = - ( con43 * c3c4 - > - c1345 ) * tmp3 * (u(2)**2) - > - ( c3c4 - c1345 ) * tmp3 * (u(3)**2) - > - ( c3c4 - c1345 ) * tmp3 * (u(4)**2) - > - c1345 * tmp2 * u(5) - - njac(5,2) = ( con43 * c3c4 - > - c1345 ) * tmp2 * u(2) - njac(5,3) = ( c3c4 - c1345 ) * tmp2 * u(3) - njac(5,4) = ( c3c4 - c1345 ) * tmp2 * u(4) - njac(5,5) = ( c1345 ) * tmp1 - end - - pure subroutine lhsa_x_solve(lhsa,u_,rho_i_,qs_, - >dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2) - implicit none - - INTENT (out) :: lhsa - INTENT (in) :: u_,rho_i_,qs_ - INTENT(in)::dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2 - - double precision lhsa(5,5),tmp1,tmp2,rho_i_,qs_ - double precision fjac_(5,5,1),njac_(5,5,1),u_(5),tx1,tx2 - double precision dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345 - interface - pure subroutine fjac_x_solve(fjac,u_,rho_i_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: rho_i_,qs_,u_,c1,c2 - double precision fjac(5,5),tmp1,tmp2,tmp3,u_(5) - double precision rho_i_,qs_,c1,c2 - end subroutine - - pure subroutine njac_x_solve(njac,u_,rho_i_,con43,c3c4,c1345) - INTENT (out) :: njac - INTENT (in) :: u_,rho_i_,con43,c3c4,c1345 - double precision njac(5,5),tmp1,tmp2,tmp3 - double precision u_(5),rho_i_,con43,c3c4,c1345 - end subroutine - end interface - - tmp1 = dt * tx1 - tmp2 = dt * tx2 - - call fjac_x_solve(fjac_(1,1,1),u_,rho_i_,qs_,c1,c2) - call njac_x_solve(njac_(1,1,1),u_,rho_i_,con43,c3c4,c1345) - - lhsa(1,1) = - tmp2 * fjac_(1,1,1) - > - tmp1 * njac_(1,1,1) - > - tmp1 * dx1 - lhsa(1,2) = - tmp2 * fjac_(1,2,1) - > - tmp1 * njac_(1,2,1) - lhsa(1,3) = - tmp2 * fjac_(1,3,1) - > - tmp1 * njac_(1,3,1) - lhsa(1,4) = - tmp2 * fjac_(1,4,1) - > - tmp1 * njac_(1,4,1) - lhsa(1,5) = - tmp2 * fjac_(1,5,1) - > - tmp1 * njac_(1,5,1) - - lhsa(2,1) = - tmp2 * fjac_(2,1,1) - > - tmp1 * njac_(2,1,1) - lhsa(2,2) = - tmp2 * fjac_(2,2,1) - > - tmp1 * njac_(2,2,1) - > - tmp1 * dx2 - lhsa(2,3) = - tmp2 * fjac_(2,3,1) - > - tmp1 * njac_(2,3,1) - lhsa(2,4) = - tmp2 * fjac_(2,4,1) - > - tmp1 * njac_(2,4,1) - lhsa(2,5) = - tmp2 * fjac_(2,5,1) - > - tmp1 * njac_(2,5,1) - - lhsa(3,1) = - tmp2 * fjac_(3,1,1) - > - tmp1 * njac_(3,1,1) - lhsa(3,2) = - tmp2 * fjac_(3,2,1) - > - tmp1 * njac_(3,2,1) - lhsa(3,3) = - tmp2 * fjac_(3,3,1) - > - tmp1 * njac_(3,3,1) - > - tmp1 * dx3 - lhsa(3,4) = - tmp2 * fjac_(3,4,1) - > - tmp1 * njac_(3,4,1) - lhsa(3,5) = - tmp2 * fjac_(3,5,1) - > - tmp1 * njac_(3,5,1) - - lhsa(4,1) = - tmp2 * fjac_(4,1,1) - > - tmp1 * njac_(4,1,1) - lhsa(4,2) = - tmp2 * fjac_(4,2,1) - > - tmp1 * njac_(4,2,1) - lhsa(4,3) = - tmp2 * fjac_(4,3,1) - > - tmp1 * njac_(4,3,1) - lhsa(4,4) = - tmp2 * fjac_(4,4,1) - > - tmp1 * njac_(4,4,1) - > - tmp1 * dx4 - lhsa(4,5) = - tmp2 * fjac_(4,5,1) - > - tmp1 * njac_(4,5,1) - - lhsa(5,1) = - tmp2 * fjac_(5,1,1) - > - tmp1 * njac_(5,1,1) - lhsa(5,2) = - tmp2 * fjac_(5,2,1) - > - tmp1 * njac_(5,2,1) - lhsa(5,3) = - tmp2 * fjac_(5,3,1) - > - tmp1 * njac_(5,3,1) - lhsa(5,4) = - tmp2 * fjac_(5,4,1) - > - tmp1 * njac_(5,4,1) - lhsa(5,5) = - tmp2 * fjac_(5,5,1) - > - tmp1 * njac_(5,5,1) - > - tmp1 * dx5 - end - - pure subroutine lhsb_x_solve(lhsb,u_,rho_i_, - >dt,tx1,dx1,dx2,dx3,dx4,dx5,con43,c3c4,c1345) - implicit none - INTENT (out) :: lhsb - INTENT (in) :: u_,rho_i_ - INTENT (in)::dt,tx1,dx1,dx2,dx3,dx4,dx5,con43,c3c4,c1345 - double precision lhsb(5,5),tmp1,njac_(5,5,2:2) - double precision u_(5),rho_i_ - double precision dt,tx1,dx1,dx2,dx3,dx4,dx5,con43,c3c4,c1345 - interface - pure subroutine njac_x_solve(njac,u_,rho_i_,con43,c3c4,c1345) - INTENT (out) :: njac - INTENT (in) :: u_,rho_i_,con43,c3c4,c1345 - double precision njac(5,5),tmp1,tmp2,tmp3 - double precision u_(5),rho_i_,con43,c3c4,c1345 - end subroutine - end interface - - tmp1 = dt * tx1 - - call njac_x_solve(njac_(1,1,2),u_,rho_i_,con43,c3c4,c1345) - - lhsb(1,1) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(1,1,2) - > + tmp1 * 2.0d+00 * dx1 - lhsb(1,2) = tmp1 * 2.0d+00 * njac_(1,2,2) - lhsb(1,3) = tmp1 * 2.0d+00 * njac_(1,3,2) - lhsb(1,4) = tmp1 * 2.0d+00 * njac_(1,4,2) - lhsb(1,5) = tmp1 * 2.0d+00 * njac_(1,5,2) - - lhsb(2,1) = tmp1 * 2.0d+00 * njac_(2,1,2) - lhsb(2,2) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(2,2,2) - > + tmp1 * 2.0d+00 * dx2 - lhsb(2,3) = tmp1 * 2.0d+00 * njac_(2,3,2) - lhsb(2,4) = tmp1 * 2.0d+00 * njac_(2,4,2) - lhsb(2,5) = tmp1 * 2.0d+00 * njac_(2,5,2) - - lhsb(3,1) = tmp1 * 2.0d+00 * njac_(3,1,2) - lhsb(3,2) = tmp1 * 2.0d+00 * njac_(3,2,2) - lhsb(3,3) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(3,3,2) - > + tmp1 * 2.0d+00 * dx3 - lhsb(3,4) = tmp1 * 2.0d+00 * njac_(3,4,2) - lhsb(3,5) = tmp1 * 2.0d+00 * njac_(3,5,2) - - lhsb(4,1) = tmp1 * 2.0d+00 * njac_(4,1,2) - lhsb(4,2) = tmp1 * 2.0d+00 * njac_(4,2,2) - lhsb(4,3) = tmp1 * 2.0d+00 * njac_(4,3,2) - lhsb(4,4) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(4,4,2) - > + tmp1 * 2.0d+00 * dx4 - lhsb(4,5) = tmp1 * 2.0d+00 * njac_(4,5,2) - - lhsb(5,1) = tmp1 * 2.0d+00 * njac_(5,1,2) - lhsb(5,2) = tmp1 * 2.0d+00 * njac_(5,2,2) - lhsb(5,3) = tmp1 * 2.0d+00 * njac_(5,3,2) - lhsb(5,4) = tmp1 * 2.0d+00 * njac_(5,4,2) - lhsb(5,5) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(5,5,2) - > + tmp1 * 2.0d+00 * dx5 - end - - pure subroutine lhsc_x_solve(lhsc,u_,rho_i_,qs_, - >dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2) - implicit none - - INTENT (out) :: lhsc - INTENT (in) :: u_,rho_i_,qs_ - INTENT(in)::dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2 - - double precision lhsc(5,5),tmp1,tmp2,rho_i_,qs_ - double precision fjac_(5,5,2:2),njac_(5,5,3:3),u_(5),tx1,tx2 - double precision dt,dx1,dx2,dx3,dx4,dx5,c1,c2,con43,c3c4,c1345 - interface - pure subroutine fjac_x_solve(fjac,u_,rho_i_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: rho_i_,qs_,u_,c1,c2 - double precision fjac(5,5),tmp1,tmp2,tmp3,u_(5) - double precision rho_i_,qs_,c1,c2 - end subroutine - - pure subroutine njac_x_solve(njac,u_,rho_i_,con43,c3c4,c1345) - INTENT (out) :: njac - INTENT (in) :: u_,rho_i_,con43,c3c4,c1345 - double precision njac(5,5),tmp1,tmp2,tmp3 - double precision u_(5),rho_i_,con43,c3c4,c1345 - end subroutine - end interface - - tmp1 = dt * tx1 - tmp2 = dt * tx2 - - call fjac_x_solve(fjac_(1,1,2),u_,rho_i_,qs_,c1,c2) - call njac_x_solve(njac_(1,1,3),u_,rho_i_,con43,c3c4,c1345) - - lhsc(1,1) = tmp2 * fjac_(1,1,2) - > - tmp1 * njac_(1,1,3) - > - tmp1 * dx1 - lhsc(1,2) = tmp2 * fjac_(1,2,2) - > - tmp1 * njac_(1,2,3) - lhsc(1,3) = tmp2 * fjac_(1,3,2) - > - tmp1 * njac_(1,3,3) - lhsc(1,4) = tmp2 * fjac_(1,4,2) - > - tmp1 * njac_(1,4,3) - lhsc(1,5) = tmp2 * fjac_(1,5,2) - > - tmp1 * njac_(1,5,3) - - lhsc(2,1) = tmp2 * fjac_(2,1,2) - > - tmp1 * njac_(2,1,3) - lhsc(2,2) = tmp2 * fjac_(2,2,2) - > - tmp1 * njac_(2,2,3) - > - tmp1 * dx2 - lhsc(2,3) = tmp2 * fjac_(2,3,2) - > - tmp1 * njac_(2,3,3) - lhsc(2,4) = tmp2 * fjac_(2,4,2) - > - tmp1 * njac_(2,4,3) - lhsc(2,5) = tmp2 * fjac_(2,5,2) - > - tmp1 * njac_(2,5,3) - - lhsc(3,1) = tmp2 * fjac_(3,1,2) - > - tmp1 * njac_(3,1,3) - lhsc(3,2) = tmp2 * fjac_(3,2,2) - > - tmp1 * njac_(3,2,3) - lhsc(3,3) = tmp2 * fjac_(3,3,2) - > - tmp1 * njac_(3,3,3) - > - tmp1 * dx3 - lhsc(3,4) = tmp2 * fjac_(3,4,2) - > - tmp1 * njac_(3,4,3) - lhsc(3,5) = tmp2 * fjac_(3,5,2) - > - tmp1 * njac_(3,5,3) - - lhsc(4,1) = tmp2 * fjac_(4,1,2) - > - tmp1 * njac_(4,1,3) - lhsc(4,2) = tmp2 * fjac_(4,2,2) - > - tmp1 * njac_(4,2,3) - lhsc(4,3) = tmp2 * fjac_(4,3,2) - > - tmp1 * njac_(4,3,3) - lhsc(4,4) = tmp2 * fjac_(4,4,2) - > - tmp1 * njac_(4,4,3) - > - tmp1 * dx4 - lhsc(4,5) = tmp2 * fjac_(4,5,2) - > - tmp1 * njac_(4,5,3) - - lhsc(5,1) = tmp2 * fjac_(5,1,2) - > - tmp1 * njac_(5,1,3) - lhsc(5,2) = tmp2 * fjac_(5,2,2) - > - tmp1 * njac_(5,2,3) - lhsc(5,3) = tmp2 * fjac_(5,3,2) - > - tmp1 * njac_(5,3,3) - lhsc(5,4) = tmp2 * fjac_(5,4,2) - > - tmp1 * njac_(5,4,3) - lhsc(5,5) = tmp2 * fjac_(5,5,2) - > - tmp1 * njac_(5,5,3) - > - tmp1 * dx5 - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine x_first() - - include 'header.h' - include 'work_lhs.h' - - integer j,k - -!DVM$ region out(lhsc) -!DVM$ PARALLEL(k,j), TIE(lhsc(*,*,*,j,k,*)) - do k=0,1 - do j=0,1 - if (j .eq. 2) lhsc(1,1,1,j,k,1) = 0 - enddo - enddo -!DVM$ end region - end - - subroutine x_solve_cell(first,last,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c performs guaussian elimination on this cell. -c -c assumes that unpacking routines for non-first cells -c preload C' and rhs' from previous cell. -c -c assumed send happens outside this routine, but that -c c'(IMAX) and rhs'(IMAX) will be sent to next cell -c--------------------------------------------------------------------- - - include 'header.h' - include 'work_lhs.h' - - integer first,last,c,m,n - integer i,j,k,isize,ksize,jsize,istart - double precision fjac_(5,5,2:2),njac_(5,5,3:3),lhscP_(5,5) - double precision diff(5,5),lhsa_(5,5),lhsb_(5,5),lhsc_(5,5) - double precision rhs_(5), rhsP_(5),qs_(0:3),u_(5),uP_(5),uM_(5) - - interface - pure subroutine matvec_sub(ablock,avec,bvec) -!DVM$ routine - intent (inout)::ablock,avec,bvec - double precision ablock(5,5),avec(5),bvec(5) - end - end interface - - istart = 0 - isize = cell_size(1,c)-1 - jsize = cell_size(2,c)-end(2,c)-1 - ksize = cell_size(3,c)-end(3,c)-1 -! call lhsabinit(lhsa, lhsb, isize) - -!1$omp parallel do private(k,j),private(fjac_,njac_,lhsa_,lhsb_, -!1$omp& tmp1,tmp2,tmp3,i) collapse(2) - -!DVM$ region - -!DVM$ PARALLEL(k,j),PRIVATE(i,lhsa_,lhsb_,lhsc_,lhscP_,n,m,rhs_,rhsP_, -!DVM$& qs_,u_,uP_,uM_) -!DVM$& ,TIE(lhsc(*,*,*,j,k,*),u(*,*,j,k,*),qs(*,j,k,*) -!DVM$& ,rhs(*,*,j,k,*)) - do k=start(3,c),ksize - do j=start(2,c),jsize - do i=istart,isize - - if (i.eq.istart) then - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc(m,n,i-1,j,k,c) - enddo - rhsP_(m) = rhs(m,i-1,j,k,c) - uM_(m) = u(m,i-1,j,k,c) - u_(m) = u(m,i,j,k,c) - enddo - qs_(0) = qs(i-1,j,k,c) - qs_(1) = qs(i,j,k,c) - endif - do m = 1, 5 - rhs_(m) = rhs(m,i,j,k,c) - uP_(m) = u(m,i+1,j,k,c) - enddo - qs_(2) = qs(i+1,j,k,c) - if (i .eq. istart .and. first .eq. 1) then - do m = 1, 5 - do n = 1, 5 - lhsb_(m,n) = 0.0d0 - lhsc_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - call binvcrhs(lhsb_,lhsc_,rhs_) - - else if (i .eq. isize .and. last .eq. 1) then - do m = 1, 5 - do n = 1, 5 - lhsa_(m,n) = 0.0d0 - lhsb_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvrhs(lhsb_,rhs_) - - else - - call lhsa_x_solve(lhsa_,uM_,1.0d0/uM_(1), - > qs_(0),dt,dx1,dx2,dx3, - > dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2) - call lhsb_x_solve(lhsb_,u_,1.0d0/u_(1), - > dt,tx1,dx1,dx2,dx3,dx4,dx5,con43,c3c4,c1345) - call lhsc_x_solve(lhsc_,uP_,1.0d0/uP_(1), - > qs_(2),dt,dx1,dx2,dx3, - > dx4,dx5,c1,c2,con43,c3c4,c1345,tx1,tx2) - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvcrhs(lhsb_,lhsc_,rhs_) - - endif - - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc_(m,n) - enddo - rhs(m,i-1,j,k,c) = rhsP_(m) - rhsP_(m) = rhs_(m) - uM_(m)=u_(m) - u_(m)=uP_(m) - enddo - - if (.not. (i .eq. isize .and. last .eq. 1)) then - do m = 1, 5 - do n = 1, 5 - lhsc(m,n,i,j,k,c) = lhsc_(m,n) - enddo - enddo - endif - qs_(0) = qs_(1) - qs_(1) = qs_(2) - if (i.eq.isize) then - do m = 1, 5 - rhs(m,i,j,k,c) = rhs_(m) - enddo - endif - enddo - enddo - enddo -!DVM$ end region - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Performs line solves in Z direction by first factoring -c the block-tridiagonal matrix into an upper triangular matrix, -c and then performing back substitution to solve for the unknow -c vectors of each line. -c -c Make sure we treat elements zero to cell_size in the direction -c of the sweep. -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer c, kstart, stage, - > first, last, recv_id, error, r_status(MPI_STATUS_SIZE), - > isize,jsize,ksize,send_id - - kstart = 0 - - if (timeron) call timer_start(t_zsolve) -c--------------------------------------------------------------------- -c in our terminology stage is the number of the cell in the y-direction -c i.e. stage = 1 means the start of the line stage=ncells means end -c--------------------------------------------------------------------- - call z_first() - do stage = 1,ncells - c = slice(3,stage) - isize = cell_size(1,c) - 1 - jsize = cell_size(2,c) - 1 - ksize = cell_size(3,c) - 1 -c--------------------------------------------------------------------- -c set last-cell flag -c--------------------------------------------------------------------- - if (stage .eq. ncells) then - last = 1 - else - last = 0 - endif - - if (stage .eq. 1) then -c--------------------------------------------------------------------- -c This is the first cell, so solve without receiving data -c--------------------------------------------------------------------- - first = 1 -c call lhsz(c) - call z_solve_cell(first,last,c) - else -c--------------------------------------------------------------------- -c Not the first cell of this line, so receive info from -c processor working on preceeding cell -c--------------------------------------------------------------------- - first = 0 - if (timeron) call timer_start(t_zcomm) - call z_receive_solve_info(recv_id,c) -c--------------------------------------------------------------------- -c overlap computations and communications -c--------------------------------------------------------------------- -c call lhsz(c) -c--------------------------------------------------------------------- -c wait for completion -c--------------------------------------------------------------------- - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_zcomm) -c--------------------------------------------------------------------- -c install C'(kstart+1) and rhs'(kstart+1) to be used in this cell -c--------------------------------------------------------------------- - call z_unpack_solve_info(c) - call z_solve_cell(first,last,c) - endif - - if (last .eq. 0) call z_send_solve_info(send_id,c) - enddo - -c--------------------------------------------------------------------- -c now perform backsubstitution in reverse direction -c--------------------------------------------------------------------- - do stage = ncells, 1, -1 - c = slice(3,stage) - first = 0 - last = 0 - if (stage .eq. 1) first = 1 - if (stage .eq. ncells) then - last = 1 -c--------------------------------------------------------------------- -c last cell, so perform back substitute without waiting -c--------------------------------------------------------------------- - call z_backsubstitute(first, last,c) - else - if (timeron) call timer_start(t_zcomm) - call z_receive_backsub_info(recv_id,c) - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_zcomm) - call z_unpack_backsub_info(c) - call z_backsubstitute(first,last,c) - endif - if (first .eq. 0) call z_send_backsub_info(send_id,c) - enddo - - if (timeron) call timer_stop(t_zsolve) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_unpack_solve_info(c) -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack C'(-1) and rhs'(-1) for -c all i and j -c--------------------------------------------------------------------- - - include 'header.h' - - integer i,j,m,n,ptr,c,kstart - - kstart = 0 - ptr = 0 -!DVM$ actual(out_buffer) - -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(ptr,m,n), -!DVM$& TIE(rhs(*,i,j,*,*),lhsc(*,*,i,j,*,*)) - do j=0,JMAX-1 - do i=0,IMAX-1 - ptr = (j * IMAX + I) * (BLOCK_SIZE+BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - lhsc(m,n,i,j,kstart-1,c) = out_buffer(ptr+n+(m-1)*BLOCK_SIZE) - enddo - enddo - do n=1,BLOCK_SIZE - rhs(n,i,j,kstart-1,c) = out_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) - enddo - enddo - enddo -!DVM$ end region - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_send_solve_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send C'(kend) and rhs'(kend) for -c all i and j -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i,j,m,n,ksize,ptr,c,ip,jp - integer error,send_id,buffer_size - - ksize = cell_size(3,c)-1 - ip = cell_coord(1,c) - 1 - jp = cell_coord(2,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - -c--------------------------------------------------------------------- -c pack up buffer -c--------------------------------------------------------------------- - - ptr = 0 -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(j,i), PRIVATE(ptr,m,n), -!DVM$& TIE(rhs(*,i,j,*,*),lhsc(*,*,i,j,*,*)) - do j=0,JMAX-1 - do i=0,IMAX-1 - ptr = (j * IMAX + I) * (BLOCK_SIZE+BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n+(m-1)*BLOCK_SIZE) = lhsc(m,n,i,j,ksize,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - do n=1,BLOCK_SIZE - in_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) = rhs(n,i,j,ksize,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region - -!DVM$ get_actual(in_buffer) -c--------------------------------------------------------------------- -c send buffer -c--------------------------------------------------------------------- - if (timeron) call timer_start(t_zcomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, successor(3), - > BOTTOM+ip+jp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_zcomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_send_backsub_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send U(jstart) for all i and j -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i,j,n,ptr,c,kstart,ip,jp - integer error,send_id,buffer_size - -c--------------------------------------------------------------------- -c Send element 0 to previous processor -c--------------------------------------------------------------------- - kstart = 0 - ip = cell_coord(1,c)-1 - jp = cell_coord(2,c)-1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - ptr = 0 - -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(j,i), PRIVATE(n,ptr),TIE(rhs(*,i,j,*,*)) - do j=0,JMAX-1 - do i=0,IMAX-1 - ptr=(j*IMAX+i)*BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n) = rhs(n,i,j,kstart,c) - enddo - enddo - enddo -!DVM$ end region - -!DVM$ get_actual(in_buffer) - if (timeron) call timer_start(t_zcomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, predecessor(3), - > TOP+ip+jp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_zcomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_unpack_backsub_info(c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack U(ksize) for all i and j -c--------------------------------------------------------------------- - - include 'header.h' - - integer i,j,n,ptr,c - - ptr = 0 -!DVM$ actual(out_buffer) - -!DVM$ region out(backsub_info) -!DVM$ PARALLEL(j,i), PRIVATE(ptr,n),TIE(backsub_info(*,i,j,*)) - do j=0,JMAX-1 - do i=0,IMAX-1 - ptr=(j*IMAX+i)*BLOCK_SIZE - do n=1,BLOCK_SIZE - backsub_info(n,i,j,c) = out_buffer(ptr+n) - enddo - enddo - enddo -!DVM$ end region - return - end - - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_receive_backsub_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer error,recv_id,ip,jp,c,buffer_size - ip = cell_coord(1,c) - 1 - jp = cell_coord(2,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - call mpi_irecv(out_buffer, buffer_size, - > dp_type, successor(3), - > TOP+ip+jp*NCELLS, comm_solve, - > recv_id, error) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_receive_solve_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer ip,jp,recv_id,error,c,buffer_size - ip = cell_coord(1,c) - 1 - jp = cell_coord(2,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - call mpi_irecv(out_buffer, buffer_size, - > dp_type, predecessor(3), - > BOTTOM+ip+jp*NCELLS, comm_solve, - > recv_id, error) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine z_backsubstitute(first, last, c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c back solve: if last cell, then generate U(ksize)=rhs(ksize) -c else assume U(ksize) is loaded in un pack backsub_info -c so just use it -c after call u(kstart) will be sent to next cell -c--------------------------------------------------------------------- - - include 'header.h' - - integer first, last, c, i, k - integer m,n,j,jsize,isize,ksize,kstart - - kstart = 0 - isize = cell_size(1,c)-end(1,c)-1 - jsize = cell_size(2,c)-end(2,c)-1 - ksize = cell_size(3,c)-1 - if (last .eq. 0) then - -!1$omp parallel do private(k,j,i,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(j,i,m,n), -!DVM$& TIE(rhs(*,i,j,*,*),lhsc(*,*,i,j,*,*),backsub_info(*,i,j,*)) - do j=start(2,c),jsize - do i=start(1,c),isize -c--------------------------------------------------------------------- -c U(jsize) uses info from previous cell if not last cell -c--------------------------------------------------------------------- - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,i,j,ksize,c) = rhs(m,i,j,ksize,c) - > - lhsc(m,n,i,j,ksize,c)* - > backsub_info(n,i,j,c) - enddo - enddo - enddo - enddo -!DVM$ end region - endif - -! $omp parallel do private(k,j,i,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(j,i), PRIVATE(k,j,i,m,n), -!DVM$& TIE(rhs(*,i,j,*,*),lhsc(*,*,i,j,*,*)) - do j=start(2,c),jsize - do i=start(1,c),isize - do k=ksize-1,kstart,-1 - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - > - lhsc(m,n,i,j,k,c)*rhs(n,i,j,k+1,c) - enddo - enddo - enddo - enddo - enddo -!DVM$ end region - return - end - - pure subroutine fjac_z_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - implicit none - double precision utmp(6),tmp1,tmp2 - double precision u1_,u2_,u3_,u4_,u5_,qs_,fjac(5,5),c1,c2 - INTENT(in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - INTENT(out) :: fjac - utmp(1) = 1.0d0 / u1_ - utmp(2) = u2_ - utmp(3) = u3_ - utmp(4) = u4_ - utmp(5) = u5_ - utmp(6) = qs_ - - tmp1 = utmp(1) - tmp2 = tmp1 * tmp1 - - fjac(1,1) = 0.0d+00 - fjac(1,2) = 0.0d+00 - fjac(1,3) = 0.0d+00 - fjac(1,4) = 1.0d+00 - fjac(1,5) = 0.0d+00 - - fjac(2,1) = - ( utmp(2)*utmp(4) ) - > * tmp2 - fjac(2,2) = utmp(4) * tmp1 - fjac(2,3) = 0.0d+00 - fjac(2,4) = utmp(2) * tmp1 - fjac(2,5) = 0.0d+00 - - fjac(3,1) = - ( utmp(3)*utmp(4) ) - > * tmp2 - fjac(3,2) = 0.0d+00 - fjac(3,3) = utmp(4) * tmp1 - fjac(3,4) = utmp(3) * tmp1 - fjac(3,5) = 0.0d+00 - - fjac(4,1) = - (utmp(4)*utmp(4) * tmp2 ) - > + c2 * utmp(6) - fjac(4,2) = - c2 * utmp(2) * tmp1 - fjac(4,3) = - c2 * utmp(3) * tmp1 - fjac(4,4) = ( 2.0d+00 - c2 ) - > * utmp(4) * tmp1 - fjac(4,5) = c2 - - fjac(5,1) = ( c2 * 2.0d0 * utmp(6) - > - c1 * ( utmp(5) * tmp1 ) ) - > * ( utmp(4) * tmp1 ) - fjac(5,2) = - c2 * ( utmp(2)*utmp(4) ) - > * tmp2 - fjac(5,3) = - c2 * ( utmp(3)*utmp(4) ) - > * tmp2 - fjac(5,4) = c1 * ( utmp(5) * tmp1 ) - > - c2 * ( utmp(6) - > + utmp(4)*utmp(4) * tmp2 ) - fjac(5,5) = c1 * utmp(4) * tmp1 - - end - - pure subroutine njac_z_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - implicit none - double precision utmp(6),tmp1,tmp2,tmp3,c1345,c3,c4 - double precision u1_,u2_,u3_,u4_,u5_,qs_,njac(5,5),c3c4,con43 - INTENT(in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345,c3,c4 - INTENT(out) :: njac - - utmp(1) = 1.0d0 / u1_ - utmp(2) = u2_ - utmp(3) = u3_ - utmp(4) = u4_ - utmp(5) = u5_ - utmp(6) = qs_ - - tmp1 = utmp(1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - - njac(1,1) = 0.0d+00 - njac(1,2) = 0.0d+00 - njac(1,3) = 0.0d+00 - njac(1,4) = 0.0d+00 - njac(1,5) = 0.0d+00 - - njac(2,1) = - c3c4 * tmp2 * utmp(2) - njac(2,2) = c3c4 * tmp1 - njac(2,3) = 0.0d+00 - njac(2,4) = 0.0d+00 - njac(2,5) = 0.0d+00 - - njac(3,1) = - c3c4 * tmp2 * utmp(3) - njac(3,2) = 0.0d+00 - njac(3,3) = c3c4 * tmp1 - njac(3,4) = 0.0d+00 - njac(3,5) = 0.0d+00 - - njac(4,1) = - con43 * c3c4 * tmp2 * utmp(4) - njac(4,2) = 0.0d+00 - njac(4,3) = 0.0d+00 - njac(4,4) = con43 * c3 * c4 * tmp1 - njac(4,5) = 0.0d+00 - - njac(5,1) = - ( c3c4 - > - c1345 ) * tmp3 * (utmp(2)**2) - > - ( c3c4 - c1345 ) * tmp3 * (utmp(3)**2) - > - ( con43 * c3c4 - > - c1345 ) * tmp3 * (utmp(4)**2) - > - c1345 * tmp2 * utmp(5) - - njac(5,2) = ( c3c4 - c1345 ) * tmp2 * utmp(2) - njac(5,3) = ( c3c4 - c1345 ) * tmp2 * utmp(3) - njac(5,4) = ( con43 * c3c4 - > - c1345 ) * tmp2 * utmp(4) - njac(5,5) = ( c1345 )* tmp1 - - end - - pure subroutine lhsa_z_solve(lhsa,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, - & c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, c3c4,con43,c1345 - INTENT(IN)::u1_,u2_,u3_,u4_,u5_,qs_,c1,c2,c3c4,con43,c1345 - double precision lhsa(5,5),c3,c4 - INTENT(out)::lhsa - - double precision tmp1, tmp2,fjac_(5,5),njac_(5,5) - double precision tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt - INTENT(IN):: tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4 - - interface - pure subroutine fjac_z_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - double precision fjac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - end subroutine - - pure subroutine njac_z_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345,c3,c4 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4,c3,c4 - & ,con43,c1345 - end subroutine - end interface - - call fjac_z_solve(fjac_,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - call njac_z_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - - tmp1 = dt * tz1 - tmp2 = dt * tz2 - - lhsa(1,1) = - tmp2 * fjac_(1,1) - > - tmp1 * njac_(1,1) - > - tmp1 * dz1 - lhsa(1,2) = - tmp2 * fjac_(1,2) - > - tmp1 * njac_(1,2) - lhsa(1,3) = - tmp2 * fjac_(1,3) - > - tmp1 * njac_(1,3) - lhsa(1,4) = - tmp2 * fjac_(1,4) - > - tmp1 * njac_(1,4) - lhsa(1,5) = - tmp2 * fjac_(1,5) - > - tmp1 * njac_(1,5) - - lhsa(2,1) = - tmp2 * fjac_(2,1) - > - tmp1 * njac_(2,1) - lhsa(2,2) = - tmp2 * fjac_(2,2) - > - tmp1 * njac_(2,2) - > - tmp1 * dz2 - lhsa(2,3) = - tmp2 * fjac_(2,3) - > - tmp1 * njac_(2,3) - lhsa(2,4) = - tmp2 * fjac_(2,4) - > - tmp1 * njac_(2,4) - lhsa(2,5) = - tmp2 * fjac_(2,5) - > - tmp1 * njac_(2,5) - - lhsa(3,1) = - tmp2 * fjac_(3,1) - > - tmp1 * njac_(3,1) - lhsa(3,2) = - tmp2 * fjac_(3,2) - > - tmp1 * njac_(3,2) - lhsa(3,3) = - tmp2 * fjac_(3,3) - > - tmp1 * njac_(3,3) - > - tmp1 * dz3 - lhsa(3,4) = - tmp2 * fjac_(3,4) - > - tmp1 * njac_(3,4) - lhsa(3,5) = - tmp2 * fjac_(3,5) - > - tmp1 * njac_(3,5) - - lhsa(4,1) = - tmp2 * fjac_(4,1) - > - tmp1 * njac_(4,1) - lhsa(4,2) = - tmp2 * fjac_(4,2) - > - tmp1 * njac_(4,2) - lhsa(4,3) = - tmp2 * fjac_(4,3) - > - tmp1 * njac_(4,3) - lhsa(4,4) = - tmp2 * fjac_(4,4) - > - tmp1 * njac_(4,4) - > - tmp1 * dz4 - lhsa(4,5) = - tmp2 * fjac_(4,5) - > - tmp1 * njac_(4,5) - - lhsa(5,1) = - tmp2 * fjac_(5,1) - > - tmp1 * njac_(5,1) - lhsa(5,2) = - tmp2 * fjac_(5,2) - > - tmp1 * njac_(5,2) - lhsa(5,3) = - tmp2 * fjac_(5,3) - > - tmp1 * njac_(5,3) - lhsa(5,4) = - tmp2 * fjac_(5,4) - > - tmp1 * njac_(5,4) - lhsa(5,5) = - tmp2 * fjac_(5,5) - > - tmp1 * njac_(5,5) - > - tmp1 * dz5 - end - - pure subroutine lhsb_z_solve(lhsb,u1_,u2_,u3_,u4_,u5_,qs_, - & c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_, c3c4,con43,c1345 - INTENT(IN)::u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345,c3,c4 - double precision lhsb(5,5) - INTENT(out)::lhsb - - double precision tmp1, njac_(5,5),c3,c4 - double precision tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt - INTENT(IN)::tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt - - interface - pure subroutine njac_z_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345,c3,c4 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4,c3,c4 - & ,con43,c1345 - end subroutine - end interface - - call njac_z_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - - tmp1 = dt * tz1 - - lhsb(1,1) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(1,1) - > + tmp1 * 2.0d+00 * dz1 - lhsb(1,2) = tmp1 * 2.0d+00 * njac_(1,2) - lhsb(1,3) = tmp1 * 2.0d+00 * njac_(1,3) - lhsb(1,4) = tmp1 * 2.0d+00 * njac_(1,4) - lhsb(1,5) = tmp1 * 2.0d+00 * njac_(1,5) - - lhsb(2,1) = tmp1 * 2.0d+00 * njac_(2,1) - lhsb(2,2) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(2,2) - > + tmp1 * 2.0d+00 * dz2 - lhsb(2,3) = tmp1 * 2.0d+00 * njac_(2,3) - lhsb(2,4) = tmp1 * 2.0d+00 * njac_(2,4) - lhsb(2,5) = tmp1 * 2.0d+00 * njac_(2,5) - - lhsb(3,1) = tmp1 * 2.0d+00 * njac_(3,1) - lhsb(3,2) = tmp1 * 2.0d+00 * njac_(3,2) - lhsb(3,3) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(3,3) - > + tmp1 * 2.0d+00 * dz3 - lhsb(3,4) = tmp1 * 2.0d+00 * njac_(3,4) - lhsb(3,5) = tmp1 * 2.0d+00 * njac_(3,5) - - lhsb(4,1) = tmp1 * 2.0d+00 * njac_(4,1) - lhsb(4,2) = tmp1 * 2.0d+00 * njac_(4,2) - lhsb(4,3) = tmp1 * 2.0d+00 * njac_(4,3) - lhsb(4,4) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(4,4) - > + tmp1 * 2.0d+00 * dz4 - lhsb(4,5) = tmp1 * 2.0d+00 * njac_(4,5) - - lhsb(5,1) = tmp1 * 2.0d+00 * njac_(5,1) - lhsb(5,2) = tmp1 * 2.0d+00 * njac_(5,2) - lhsb(5,3) = tmp1 * 2.0d+00 * njac_(5,3) - lhsb(5,4) = tmp1 * 2.0d+00 * njac_(5,4) - lhsb(5,5) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(5,5) - > + tmp1 * 2.0d+00 * dz5 - - end - - pure subroutine lhsc_z_solve(lhsc,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, - & c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, c3c4,con43,c1345 - INTENT(IN)::u1_,u2_,u3_,u4_,u5_,qs_,c1,c2,c3c4,con43,c1345 - double precision lhsc(5,5),c3,c4 - INTENT(out)::lhsc - - double precision tmp1, tmp2,fjac_(5,5),njac_(5,5) - double precision tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt - INTENT(IN):: tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4 - - interface - pure subroutine fjac_z_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - double precision fjac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - end subroutine - - pure subroutine njac_z_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345,c3,c4 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4,c3,c4 - & ,con43,c1345 - end subroutine - end interface - - call fjac_z_solve(fjac_,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - call njac_z_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345,c3,c4) - - tmp1 = dt * tz1 - tmp2 = dt * tz2 - - lhsc(1,1) = tmp2 * fjac_(1,1) - > - tmp1 * njac_(1,1) - > - tmp1 * dz1 - lhsc(1,2) = tmp2 * fjac_(1,2) - > - tmp1 * njac_(1,2) - lhsc(1,3) = tmp2 * fjac_(1,3) - > - tmp1 * njac_(1,3) - lhsc(1,4) = tmp2 * fjac_(1,4) - > - tmp1 * njac_(1,4) - lhsc(1,5) = tmp2 * fjac_(1,5) - > - tmp1 * njac_(1,5) - - lhsc(2,1) = tmp2 * fjac_(2,1) - > - tmp1 * njac_(2,1) - lhsc(2,2) = tmp2 * fjac_(2,2) - > - tmp1 * njac_(2,2) - > - tmp1 * dz2 - lhsc(2,3) = tmp2 * fjac_(2,3) - > - tmp1 * njac_(2,3) - lhsc(2,4) = tmp2 * fjac_(2,4) - > - tmp1 * njac_(2,4) - lhsc(2,5) = tmp2 * fjac_(2,5) - > - tmp1 * njac_(2,5) - - lhsc(3,1) = tmp2 * fjac_(3,1) - > - tmp1 * njac_(3,1) - lhsc(3,2) = tmp2 * fjac_(3,2) - > - tmp1 * njac_(3,2) - lhsc(3,3) = tmp2 * fjac_(3,3) - > - tmp1 * njac_(3,3) - > - tmp1 * dz3 - lhsc(3,4) = tmp2 * fjac_(3,4) - > - tmp1 * njac_(3,4) - lhsc(3,5) = tmp2 * fjac_(3,5) - > - tmp1 * njac_(3,5) - - lhsc(4,1) = tmp2 * fjac_(4,1) - > - tmp1 * njac_(4,1) - lhsc(4,2) = tmp2 * fjac_(4,2) - > - tmp1 * njac_(4,2) - lhsc(4,3) = tmp2 * fjac_(4,3) - > - tmp1 * njac_(4,3) - lhsc(4,4) = tmp2 * fjac_(4,4) - > - tmp1 * njac_(4,4) - > - tmp1 * dz4 - lhsc(4,5) = tmp2 * fjac_(4,5) - > - tmp1 * njac_(4,5) - - lhsc(5,1) = tmp2 * fjac_(5,1) - > - tmp1 * njac_(5,1) - lhsc(5,2) = tmp2 * fjac_(5,2) - > - tmp1 * njac_(5,2) - lhsc(5,3) = tmp2 * fjac_(5,3) - > - tmp1 * njac_(5,3) - lhsc(5,4) = tmp2 * fjac_(5,4) - > - tmp1 * njac_(5,4) - lhsc(5,5) = tmp2 * fjac_(5,5) - > - tmp1 * njac_(5,5) - > - tmp1 * dz5 - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - subroutine z_first() - - include 'header.h' - include 'work_lhs.h' - - integer i,j,k - -!DVM$ region out(lhsc) -!DVM$ PARALLEL(j,i), TIE(lhsc(*,*,i,j,*,*)) - do j=0,1 - do i=0,1 - if (i .eq. 2) lhsc(1,1,i,j,1,1) = 0 - enddo - enddo -!DVM$ end region - end - - subroutine z_solve_cell(first,last,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c performs guaussian elimination on this cell. -c -c assumes that unpacking routines for non-first cells -c preload C' and rhs' from previous cell. -c -c assumed send happens outside this routine, but that -c c'(KMAX) and rhs'(KMAX) will be sent to next cell. -c--------------------------------------------------------------------- - - include 'header.h' - include 'work_lhs.h' - - integer first,last,c,j_start,m,n,js,is,ks,ke - integer i,j,k,isize,ksize,jsize,kstart - double precision utmp(6,-2:KMAX+1),lhsa_(5,5),lhsb_(5,5) - double precision fjac_(5,5), njac_(5,5),lhsc_(5,5),lhscP_(5,5) - double precision rhs_(5), rhsP_(5),qs_(0:3),u_(5),uP_(5),uM_(5) - - interface - pure subroutine matvec_sub(ablock,avec,bvec) -!DVM$ routine - intent (inout)::ablock,avec,bvec - double precision ablock(5,5),avec(5),bvec(5) - end - end interface - - kstart = 0 - isize = cell_size(1,c)-end(1,c)-1 - jsize = cell_size(2,c)-end(2,c)-1 - ksize = cell_size(3,c)-1 - js = start(2,c) - is = start(1,c) - ks = start(3,c) - ke = ksize-end(3,c) -!1$omp parallel do private(k,i),private(fjac,njac,lhsa,lhsb,tmp1,tmp2 -!1$omp& ,tmp3,utmp,j) collapse(2) - -!DVM$ interval 12 -!DVM$ region -!DVM$ PARALLEL(j,i),PRIVATE(k,m,n,lhsa_,lhsb_,lhsc_,lhscP_,rhs_,rhsP_, -!DVM$& qs_,u_,uP_,uM_) -!DVM$& ,TIE(rhs(*,i,j,*,*),lhsc(*,*,i,j,*,*),u(*,i,j,*,*),qs(i,j,*,*)) - do j=js,jsize - do i=is,isize - - do k=kstart,ksize - if (k.eq.kstart) then - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc(m,n,i,j,k-1,c) - enddo - enddo - do m = 1, 5 - rhsP_(m) = rhs(m,i,j,k-1,c) - uM_(m)=u(m,i,j,k-1,c) - u_(m)=u(m,i,j,k,c) - enddo - qs_(0)=qs(i,j,k-1,c) - qs_(1)=qs(i,j,k,c) - endif - qs_(2)=qs(i,j,k+1,c) - do m = 1, 5 - rhs_(m) = rhs(m,i,j,k,c) - uP_(m)=u(m,i,j,k+1,c) - enddo - - if (k.eq.kstart .and. first.eq.1) then - do m = 1, 5 - do n = 1, 5 - lhsb_(m,n) = 0.0d0 - lhsc_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - - call binvcrhs( lhsb_, lhsc_, rhs_) - else if (k.eq.ksize .and. last.eq.1) then - do m = 1, 5 - do n = 1, 5 - lhsa_(m,n) = 0.0d0 - lhsb_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvrhs( lhsb_,rhs_) - else - - call lhsa_z_solve(lhsa_,uM_(1),uM_(2) - &,uM_(3),uM_(4),uM_(5),qs_(0), - & c1,c2,c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - - call lhsb_z_solve(lhsb_,u_(1),u_(2) - &,u_(3),u_(4),u_(5),qs_(1), - & c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - - call lhsc_z_solve(lhsc_,uP_(1),uP_(2) - &,uP_(3),uP_(4),uP_(5),qs_(2), - & c1,c2,c3c4,con43,c1345,tz1,tz2,dz1,dz2,dz3,dz4,dz5,dt,c3,c4) - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvcrhs( lhsb_,lhsc_,rhs_) - endif - - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc_(m,n) - enddo - rhs(m,i,j,k-1,c) = rhsP_(m) - rhsP_(m) = rhs_(m) - uM_(m) = u_(m) - u_(m) = uP_(m) - enddo - qs_(0) = qs_(1) - qs_(1) = qs_(2) - - if (.not. (k.eq.ksize .and. last.eq.1)) then - do m = 1, 5 - do n = 1, 5 - lhsc(m,n,i,j,k,c) = lhsc_(m,n) - enddo - enddo - endif - - if (k.eq.ksize) then - do m = 1, 5 - rhs(m,i,j,k,c) = rhs_(m) - enddo - endif - enddo - enddo - enddo -!DVM$ end region -!DVM$ end interval - return - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_solve - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c Performs line solves in Y direction by first factoring -c the block-tridiagonal matrix into an upper triangular matrix, -c and then performing back substitution to solve for the unknow -c vectors of each line. -c -c Make sure we treat elements zero to cell_size in the direction -c of the sweep. -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer - > c, jstart, stage, - > first, last, recv_id, error, r_status(MPI_STATUS_SIZE), - > isize,jsize,ksize,send_id - - jstart = 0 - - if (timeron) call timer_start(t_ysolve) -c--------------------------------------------------------------------- -c in our terminology stage is the number of the cell in the y-direction -c i.e. stage = 1 means the start of the line stage=ncells means end -c--------------------------------------------------------------------- - call y_first() - do stage = 1,ncells - c = slice(2,stage) - isize = cell_size(1,c) - 1 - jsize = cell_size(2,c) - 1 - ksize = cell_size(3,c) - 1 - -c--------------------------------------------------------------------- -c set last-cell flag -c--------------------------------------------------------------------- - if (stage .eq. ncells) then - last = 1 - else - last = 0 - endif - - if (stage .eq. 1) then -c--------------------------------------------------------------------- -c This is the first cell, so solve without receiving data -c--------------------------------------------------------------------- - first = 1 -c call lhsy(c) - call y_solve_cell(first,last,c) - else -c--------------------------------------------------------------------- -c Not the first cell of this line, so receive info from -c processor working on preceeding cell -c--------------------------------------------------------------------- - first = 0 - if (timeron) call timer_start(t_ycomm) - call y_receive_solve_info(recv_id,c) -c--------------------------------------------------------------------- -c overlap computations and communications -c--------------------------------------------------------------------- -c call lhsy(c) -c--------------------------------------------------------------------- -c wait for completion -c--------------------------------------------------------------------- - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_ycomm) -c--------------------------------------------------------------------- -c install C'(jstart+1) and rhs'(jstart+1) to be used in this cell -c--------------------------------------------------------------------- - call y_unpack_solve_info(c) - call y_solve_cell(first,last,c) - endif - - if (last .eq. 0) call y_send_solve_info(send_id,c) - enddo - -c--------------------------------------------------------------------- -c now perform backsubstitution in reverse direction -c--------------------------------------------------------------------- - do stage = ncells, 1, -1 - c = slice(2,stage) - first = 0 - last = 0 - if (stage .eq. 1) first = 1 - if (stage .eq. ncells) then - last = 1 -c--------------------------------------------------------------------- -c last cell, so perform back substitute without waiting -c--------------------------------------------------------------------- - call y_backsubstitute(first, last,c) - else - if (timeron) call timer_start(t_ycomm) - call y_receive_backsub_info(recv_id,c) - call mpi_wait(send_id,r_status,error) - call mpi_wait(recv_id,r_status,error) - if (timeron) call timer_stop(t_ycomm) - call y_unpack_backsub_info(c) - call y_backsubstitute(first,last,c) - endif - if (first .eq. 0) call y_send_backsub_info(send_id,c) - enddo - - if (timeron) call timer_stop(t_ysolve) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_unpack_solve_info(c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack C'(-1) and rhs'(-1) for -c all i and k -c--------------------------------------------------------------------- - - include 'header.h' - - integer i,k,m,n,ptr,c,jstart - - jstart = 0 - ptr = 0 -!DVM$ actual(out_buffer) - -!DVM$ region -!DVM$ PARALLEL(k,i),PRIVATE(m,n,ptr), -!DVM$& TIE(lhsc(*,*,i,*,k,*),rhs(*,i,*,k,*)) - do k=0,KMAX-1 - do i=0,IMAX-1 - ptr=(k*IMAX+I)*(BLOCK_SIZE+BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - lhsc(m,n,i,jstart-1,k,c) = out_buffer(ptr+n+(m-1)*BLOCK_SIZE) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - do n=1,BLOCK_SIZE - rhs(n,i,jstart-1,k,c) = out_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_send_solve_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send C'(jend) and rhs'(jend) for -c all i and k -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i,k,m,n,jsize,ptr,c,ip,kp - integer error,send_id,buffer_size - - jsize = cell_size(2,c)-1 - ip = cell_coord(1,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - -c--------------------------------------------------------------------- -c pack up buffer -c--------------------------------------------------------------------- - ptr = 0 - -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(k,i),PRIVATE(m,n,ptr), -!DVM$& TIE(lhsc(*,*,i,*,k,*),rhs(*,i,*,k,*)) - do k=0,KMAX-1 - do i=0,IMAX-1 - ptr=(k*IMAX+I)*(BLOCK_SIZE+BLOCK_SIZE*BLOCK_SIZE) - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n+(m-1)*BLOCK_SIZE) = lhsc(m,n,i,jsize,k,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - do n=1,BLOCK_SIZE - in_buffer(ptr+n+BLOCK_SIZE*BLOCK_SIZE) = rhs(n,i,jsize,k,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region -!DVM$ get_actual(in_buffer) -c--------------------------------------------------------------------- -c send buffer -c--------------------------------------------------------------------- - if (timeron) call timer_start(t_ycomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, successor(2), - > SOUTH+ip+kp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_ycomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_send_backsub_info(send_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c pack up and send U(jstart) for all i and k -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer i,k,n,ptr,c,jstart,ip,kp - integer error,send_id,buffer_size - -c--------------------------------------------------------------------- -c Send element 0 to previous processor -c--------------------------------------------------------------------- - jstart = 0 - ip = cell_coord(1,c)-1 - kp = cell_coord(3,c)-1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - ptr = 0 - -!DVM$ region out(in_buffer) -!DVM$ PARALLEL(k,i), PRIVATE(ptr,n),TIE(rhs(*,i,*,k,*)) - do k=0,KMAX-1 - do i=0,IMAX-1 - ptr = (k*IMAX+i) * BLOCK_SIZE - do n=1,BLOCK_SIZE - in_buffer(ptr+n) = rhs(n,i,jstart,k,c) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region -!DVM$ get_actual(in_buffer) - if (timeron) call timer_start(t_ycomm) - call mpi_isend(in_buffer, buffer_size, - > dp_type, predecessor(2), - > NORTH+ip+kp*NCELLS, comm_solve, - > send_id,error) - if (timeron) call timer_stop(t_ycomm) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_unpack_backsub_info(c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c unpack U(jsize) for all i and k -c--------------------------------------------------------------------- - - include 'header.h' - - integer i,k,n,ptr,c - - ptr = 0 -!DVM$ actual(out_buffer) - -!DVM$ region out(backsub_info) -!DVM$ PARALLEL(k,i), PRIVATE(ptr,n),TIE(backsub_info(*,i,k,*)) - do k=0,KMAX-1 - do i=0,IMAX-1 - ptr = (k*IMAX+i) * BLOCK_SIZE - do n=1,BLOCK_SIZE - backsub_info(n,i,k,c) = out_buffer(ptr+n) - enddo -! ptr = ptr+BLOCK_SIZE - enddo - enddo -!DVM$ end region - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_receive_backsub_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer error,recv_id,ip,kp,c,buffer_size - ip = cell_coord(1,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM*BLOCK_SIZE - call mpi_irecv(out_buffer, buffer_size, - > dp_type, successor(2), - > NORTH+ip+kp*NCELLS, comm_solve, - > recv_id, error) - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_receive_solve_info(recv_id,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c post mpi receives -c--------------------------------------------------------------------- - - include 'header.h' - include 'mpinpb.h' - - integer ip,kp,recv_id,error,c,buffer_size - ip = cell_coord(1,c) - 1 - kp = cell_coord(3,c) - 1 - buffer_size=MAX_CELL_DIM*MAX_CELL_DIM* - > (BLOCK_SIZE*BLOCK_SIZE + BLOCK_SIZE) - call mpi_irecv(out_buffer, buffer_size, - > dp_type, predecessor(2), - > SOUTH+ip+kp*NCELLS, comm_solve, - > recv_id, error) - - return - end - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - subroutine y_backsubstitute(first, last, c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c back solve: if last cell, then generate U(jsize)=rhs(jsize) -c else assume U(jsize) is loaded in un pack backsub_info -c so just use it -c after call u(jstart) will be sent to next cell -c--------------------------------------------------------------------- - - include 'header.h' - - integer first, last, c, i, k - integer m,n,j,jsize,isize,ksize,jstart - - jstart = 0 - isize = cell_size(1,c)-end(1,c)-1 - jsize = cell_size(2,c)-1 - ksize = cell_size(3,c)-end(3,c)-1 - if (last .eq. 0) then - -!1$omp parallel do private(k,i,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,i,m,n), -!DVM$& TIE(rhs(*,i,*,k,*),lhsc(*,*,i,*,k,*),backsub_info(*,i,k,*)) - do k=start(3,c),ksize - do i=start(1,c),isize -c--------------------------------------------------------------------- -c U(jsize) uses info from previous cell if not last cell -c--------------------------------------------------------------------- - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,i,jsize,k,c) = rhs(m,i,jsize,k,c) - > - lhsc(m,n,i,jsize,k,c)* - > backsub_info(n,i,k,c) - enddo - enddo - enddo - enddo -!DVM$ end region - endif - -!1$omp parallel do private(k,j,i,m,n) collapse(2) - -!DVM$ region -!DVM$ PARALLEL(k,i), PRIVATE(k,j,i,m,n), -!DVM$& TIE(rhs(*,i,*,k,*),lhsc(*,*,i,*,k,*)) - do k=start(3,c),ksize - do i=start(1,c),isize - do j=jsize-1,jstart,-1 - do m=1,BLOCK_SIZE - do n=1,BLOCK_SIZE - rhs(m,i,j,k,c) = rhs(m,i,j,k,c) - > - lhsc(m,n,i,j,k,c)*rhs(n,i,j+1,k,c) - enddo - enddo - enddo - enddo - enddo -!DVM$ end region - return - end - - pure subroutine fjac_y_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - implicit none - double precision utmp(6),tmp1,tmp2 - double precision u1_,u2_,u3_,u4_,u5_,qs_,fjac(5,5),c1,c2 - INTENT(in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - INTENT(out) :: fjac - - utmp(1) = 1.0d0 / u1_ - utmp(2) = u2_ - utmp(3) = u3_ - utmp(4) = u4_ - utmp(5) = u5_ - utmp(6) = qs_ - - tmp1 = utmp(1) - tmp2 = tmp1 * tmp1 - - fjac(1,1) = 0.0d+00 - fjac(1,2) = 0.0d+00 - fjac(1,3) = 1.0d+00 - fjac(1,4) = 0.0d+00 - fjac(1,5) = 0.0d+00 - - fjac(2,1) = - ( utmp(2)*utmp(3) ) - > * tmp2 - fjac(2,2) = utmp(3) * tmp1 - fjac(2,3) = utmp(2) * tmp1 - fjac(2,4) = 0.0d+00 - fjac(2,5) = 0.0d+00 - - fjac(3,1) = - ( utmp(3)*utmp(3)*tmp2) - > + c2 * utmp(6) - fjac(3,2) = - c2 * utmp(2) * tmp1 - fjac(3,3) = ( 2.0d+00 - c2 ) - > * utmp(3) * tmp1 - fjac(3,4) = - c2 * utmp(4) * tmp1 - fjac(3,5) = c2 - - fjac(4,1) = - ( utmp(3)*utmp(4) ) - > * tmp2 - fjac(4,2) = 0.0d+00 - fjac(4,3) = utmp(4) * tmp1 - fjac(4,4) = utmp(3) * tmp1 - fjac(4,5) = 0.0d+00 - - fjac(5,1) = ( c2 * 2.0d0 * utmp(6) - > - c1 * utmp(5) * tmp1 ) - > * utmp(3) * tmp1 - fjac(5,2) = - c2 * utmp(2)*utmp(3) - > * tmp2 - fjac(5,3) = c1 * utmp(5) * tmp1 - > - c2 * ( utmp(6) - > + utmp(3)*utmp(3) * tmp2 ) - fjac(5,4) = - c2 * ( utmp(3)*utmp(4) ) - > * tmp2 - fjac(5,5) = c1 * utmp(3) * tmp1 - end -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - pure subroutine njac_y_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - implicit none - double precision utmp(6),tmp1,tmp2,tmp3,c1345 - double precision u1_,u2_,u3_,u4_,u5_,qs_,njac(5,5),c3c4,con43 - INTENT(in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345 - INTENT(out) :: njac - utmp(1) = 1.0d0 / u1_ - utmp(2) = u2_ - utmp(3) = u3_ - utmp(4) = u4_ - utmp(5) = u5_ - utmp(6) = qs_ - - tmp1 = utmp(1) - tmp2 = tmp1 * tmp1 - tmp3 = tmp1 * tmp2 - - njac(1,1) = 0.0d+00 - njac(1,2) = 0.0d+00 - njac(1,3) = 0.0d+00 - njac(1,4) = 0.0d+00 - njac(1,5) = 0.0d+00 - - njac(2,1) = - c3c4 * tmp2 * utmp(2) - njac(2,2) = c3c4 * tmp1 - njac(2,3) = 0.0d+00 - njac(2,4) = 0.0d+00 - njac(2,5) = 0.0d+00 - - njac(3,1) = - con43 * c3c4 * tmp2 * utmp(3) - njac(3,2) = 0.0d+00 - njac(3,3) = con43 * c3c4 * tmp1 - njac(3,4) = 0.0d+00 - njac(3,5) = 0.0d+00 - - njac(4,1) = - c3c4 * tmp2 * utmp(4) - njac(4,2) = 0.0d+00 - njac(4,3) = 0.0d+00 - njac(4,4) = c3c4 * tmp1 - njac(4,5) = 0.0d+00 - - njac(5,1) = - ( c3c4 - > - c1345 ) * tmp3 * (utmp(2)**2) - > - ( con43 * c3c4 - > - c1345 ) * tmp3 * (utmp(3)**2) - > - ( c3c4 - c1345 ) * tmp3 * (utmp(4)**2) - > - c1345 * tmp2 * utmp(5) - - njac(5,2) = ( c3c4 - c1345 ) * tmp2 * utmp(2) - njac(5,3) = ( con43 * c3c4 - > - c1345 ) * tmp2 * utmp(3) - njac(5,4) = ( c3c4 - c1345 ) * tmp2 * utmp(4) - njac(5,5) = ( c1345 ) * tmp1 - end - - pure subroutine lhsa_y_solve(lhsa,u,qs_,c1,c2, - & c3c4,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, c3c4,con43,c1345 - INTENT(IN)::u,qs_,c1,c2,c3c4,con43,c1345 - double precision lhsa(5,5),u(5) - INTENT(out)::lhsa - - double precision tmp1, tmp2,fjac_(5,5),njac_(5,5) - double precision ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - INTENT(IN)::ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - - interface - pure subroutine fjac_y_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - double precision fjac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - end subroutine - - pure subroutine njac_y_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345 - end subroutine - end interface - u1_=u(1) - u2_=u(2) - u3_=u(3) - u4_=u(4) - u5_=u(5) - - call fjac_y_solve(fjac_,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - call njac_y_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - tmp1 = dt * ty1 - tmp2 = dt * ty2 - - lhsa(1,1) = - tmp2 * fjac_(1,1) - > - tmp1 * njac_(1,1) - > - tmp1 * dy1 - lhsa(1,2) = - tmp2 * fjac_(1,2) - > - tmp1 * njac_(1,2) - lhsa(1,3) = - tmp2 * fjac_(1,3) - > - tmp1 * njac_(1,3) - lhsa(1,4) = - tmp2 * fjac_(1,4) - > - tmp1 * njac_(1,4) - lhsa(1,5) = - tmp2 * fjac_(1,5) - > - tmp1 * njac_(1,5) - - lhsa(2,1) = - tmp2 * fjac_(2,1) - > - tmp1 * njac_(2,1) - lhsa(2,2) = - tmp2 * fjac_(2,2) - > - tmp1 * njac_(2,2) - > - tmp1 * dy2 - lhsa(2,3) = - tmp2 * fjac_(2,3) - > - tmp1 * njac_(2,3) - lhsa(2,4) = - tmp2 * fjac_(2,4) - > - tmp1 * njac_(2,4) - lhsa(2,5) = - tmp2 * fjac_(2,5) - > - tmp1 * njac_(2,5) - - lhsa(3,1) = - tmp2 * fjac_(3,1) - > - tmp1 * njac_(3,1) - lhsa(3,2) = - tmp2 * fjac_(3,2) - > - tmp1 * njac_(3,2) - lhsa(3,3) = - tmp2 * fjac_(3,3) - > - tmp1 * njac_(3,3) - > - tmp1 * dy3 - lhsa(3,4) = - tmp2 * fjac_(3,4) - > - tmp1 * njac_(3,4) - lhsa(3,5) = - tmp2 * fjac_(3,5) - > - tmp1 * njac_(3,5) - - lhsa(4,1) = - tmp2 * fjac_(4,1) - > - tmp1 * njac_(4,1) - lhsa(4,2) = - tmp2 * fjac_(4,2) - > - tmp1 * njac_(4,2) - lhsa(4,3) = - tmp2 * fjac_(4,3) - > - tmp1 * njac_(4,3) - lhsa(4,4) = - tmp2 * fjac_(4,4) - > - tmp1 * njac_(4,4) - > - tmp1 * dy4 - lhsa(4,5) = - tmp2 * fjac_(4,5) - > - tmp1 * njac_(4,5) - - lhsa(5,1) = - tmp2 * fjac_(5,1) - > - tmp1 * njac_(5,1) - lhsa(5,2) = - tmp2 * fjac_(5,2) - > - tmp1 * njac_(5,2) - lhsa(5,3) = - tmp2 * fjac_(5,3) - > - tmp1 * njac_(5,3) - lhsa(5,4) = - tmp2 * fjac_(5,4) - > - tmp1 * njac_(5,4) - lhsa(5,5) = - tmp2 * fjac_(5,5) - > - tmp1 * njac_(5,5) - > - tmp1 * dy5 - end - - pure subroutine lhsb_y_solve(lhsb,u,qs_, - & c3c4,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_, c3c4,con43,c1345 - INTENT(IN)::u,qs_,c3c4,con43,c1345 - double precision lhsb(5,5),u(5) - INTENT(out)::lhsb - - double precision tmp1, njac_(5,5) - double precision ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - INTENT(IN)::ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - - interface - pure subroutine njac_y_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345 - end subroutine - end interface - u1_=u(1) - u2_=u(2) - u3_=u(3) - u4_=u(4) - u5_=u(5) - tmp1 = dt * ty1 - - call njac_y_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - lhsb(1,1) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(1,1) - > + tmp1 * 2.0d+00 * dy1 - lhsb(1,2) = tmp1 * 2.0d+00 * njac_(1,2) - lhsb(1,3) = tmp1 * 2.0d+00 * njac_(1,3) - lhsb(1,4) = tmp1 * 2.0d+00 * njac_(1,4) - lhsb(1,5) = tmp1 * 2.0d+00 * njac_(1,5) - - lhsb(2,1) = tmp1 * 2.0d+00 * njac_(2,1) - lhsb(2,2) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(2,2) - > + tmp1 * 2.0d+00 * dy2 - lhsb(2,3) = tmp1 * 2.0d+00 * njac_(2,3) - lhsb(2,4) = tmp1 * 2.0d+00 * njac_(2,4) - lhsb(2,5) = tmp1 * 2.0d+00 * njac_(2,5) - - lhsb(3,1) = tmp1 * 2.0d+00 * njac_(3,1) - lhsb(3,2) = tmp1 * 2.0d+00 * njac_(3,2) - lhsb(3,3) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(3,3) - > + tmp1 * 2.0d+00 * dy3 - lhsb(3,4) = tmp1 * 2.0d+00 * njac_(3,4) - lhsb(3,5) = tmp1 * 2.0d+00 * njac_(3,5) - - lhsb(4,1) = tmp1 * 2.0d+00 * njac_(4,1) - lhsb(4,2) = tmp1 * 2.0d+00 * njac_(4,2) - lhsb(4,3) = tmp1 * 2.0d+00 * njac_(4,3) - lhsb(4,4) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(4,4) - > + tmp1 * 2.0d+00 * dy4 - lhsb(4,5) = tmp1 * 2.0d+00 * njac_(4,5) - - lhsb(5,1) = tmp1 * 2.0d+00 * njac_(5,1) - lhsb(5,2) = tmp1 * 2.0d+00 * njac_(5,2) - lhsb(5,3) = tmp1 * 2.0d+00 * njac_(5,3) - lhsb(5,4) = tmp1 * 2.0d+00 * njac_(5,4) - lhsb(5,5) = 1.0d+00 - > + tmp1 * 2.0d+00 * njac_(5,5) - > + tmp1 * 2.0d+00 * dy5 - - end - - pure subroutine lhsc_y_solve(lhsc,u,qs_,c1,c2, - & c3c4,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - implicit none - double precision u1_,u2_,u3_,u4_,u5_,qs_,c1,c2, c3c4,con43,c1345 - INTENT(IN)::u,qs_,c1,c2,c3c4,con43,c1345 - double precision lhsc(5,5),u(5) - INTENT(out)::lhsc - - double precision tmp1, tmp2,fjac_(5,5),njac_(5,5) - double precision ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - INTENT(IN)::ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt - - interface - pure subroutine fjac_y_solve(fjac,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - INTENT (out) :: fjac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - double precision fjac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c1,c2 - end subroutine - - pure subroutine njac_y_solve(njac,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - INTENT (out) :: njac - INTENT (in) :: u1_,u2_,u3_,u4_,u5_,qs_,c3c4,con43,c1345 - double precision njac(5,5),u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345 - end subroutine - end interface - u1_=u(1) - u2_=u(2) - u3_=u(3) - u4_=u(4) - u5_=u(5) - - call fjac_y_solve(fjac_,u1_,u2_,u3_,u4_,u5_,qs_,c1,c2) - call njac_y_solve(njac_,u1_,u2_,u3_,u4_,u5_,qs_,c3c4 - & ,con43,c1345) - tmp1 = dt * ty1 - tmp2 = dt * ty2 - - lhsc(1,1) = tmp2 * fjac_(1,1) - > - tmp1 * njac_(1,1) - > - tmp1 * dy1 - lhsc(1,2) = tmp2 * fjac_(1,2) - > - tmp1 * njac_(1,2) - lhsc(1,3) = tmp2 * fjac_(1,3) - > - tmp1 * njac_(1,3) - lhsc(1,4) = tmp2 * fjac_(1,4) - > - tmp1 * njac_(1,4) - lhsc(1,5) = tmp2 * fjac_(1,5) - > - tmp1 * njac_(1,5) - - lhsc(2,1) = tmp2 * fjac_(2,1) - > - tmp1 * njac_(2,1) - lhsc(2,2) = tmp2 * fjac_(2,2) - > - tmp1 * njac_(2,2) - > - tmp1 * dy2 - lhsc(2,3) = tmp2 * fjac_(2,3) - > - tmp1 * njac_(2,3) - lhsc(2,4) = tmp2 * fjac_(2,4) - > - tmp1 * njac_(2,4) - lhsc(2,5) = tmp2 * fjac_(2,5) - > - tmp1 * njac_(2,5) - - lhsc(3,1) = tmp2 * fjac_(3,1) - > - tmp1 * njac_(3,1) - lhsc(3,2) = tmp2 * fjac_(3,2) - > - tmp1 * njac_(3,2) - lhsc(3,3) = tmp2 * fjac_(3,3) - > - tmp1 * njac_(3,3) - > - tmp1 * dy3 - lhsc(3,4) = tmp2 * fjac_(3,4) - > - tmp1 * njac_(3,4) - lhsc(3,5) = tmp2 * fjac_(3,5) - > - tmp1 * njac_(3,5) - - lhsc(4,1) = tmp2 * fjac_(4,1) - > - tmp1 * njac_(4,1) - lhsc(4,2) = tmp2 * fjac_(4,2) - > - tmp1 * njac_(4,2) - lhsc(4,3) = tmp2 * fjac_(4,3) - > - tmp1 * njac_(4,3) - lhsc(4,4) = tmp2 * fjac_(4,4) - > - tmp1 * njac_(4,4) - > - tmp1 * dy4 - lhsc(4,5) = tmp2 * fjac_(4,5) - > - tmp1 * njac_(4,5) - - lhsc(5,1) = tmp2 * fjac_(5,1) - > - tmp1 * njac_(5,1) - lhsc(5,2) = tmp2 * fjac_(5,2) - > - tmp1 * njac_(5,2) - lhsc(5,3) = tmp2 * fjac_(5,3) - > - tmp1 * njac_(5,3) - lhsc(5,4) = tmp2 * fjac_(5,4) - > - tmp1 * njac_(5,4) - lhsc(5,5) = tmp2 * fjac_(5,5) - > - tmp1 * njac_(5,5) - > - tmp1 * dy5 - end - - subroutine y_first() - - include 'header.h' - include 'work_lhs.h' - - integer i,j,k - -!DVM$ region out(lhsc) -!DVM$ PARALLEL(k,i), TIE(lhsc(*,*,i,*,k,*)) - do k=0,1 - do i=0,1 - if (i .eq. 2) lhsc(1,1,i,1,k,1) = 0 - enddo - enddo -!DVM$ end region - end - - subroutine y_solve_cell(first,last,c) - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - -c--------------------------------------------------------------------- -c performs guaussian elimination on this cell. -c -c assumes that unpacking routines for non-first cells -c preload C' and rhs' from previous cell. -c -c assumed send happens outside this routine, but that -c c'(JMAX) and rhs'(JMAX) will be sent to next cell -c--------------------------------------------------------------------- - - include 'header.h' - include 'work_lhs.h' - - integer first,last,c,m1,m2 - integer i,j,k,isize,ksize,jsize,jstart,m,n - double precision fjac_(5,5),njac_(5,5), lhscP_(5,5) - double precision lhsb_(5,5), lhsa_(5,5), lhsc_(5,5) - double precision rhs_(5), rhsP_(5),uM_(5),u_(5),uP_(5),qs_(0:3) - - interface - pure subroutine matvec_sub(ablock,avec,bvec) -!DVM$ routine - intent (inout)::ablock,avec,bvec - double precision ablock(5,5),avec(5),bvec(5) - end - end interface - - jstart = 0 - isize = cell_size(1,c)-end(1,c)-1 - jsize = cell_size(2,c)-1 - ksize = cell_size(3,c)-end(3,c)-1 - -!1$omp parallel do private(k,i),private(fjac,njac,lhsa,lhsb,tmp1,tmp2 -!1$omp& ,tmp3,utmp,j) collapse(2) - -!DVM$ region - -!DVM$ PARALLEL(k,i),PRIVATE(j,m,n,lhsa_,lhsb_,lhsc_,lhscP_,rhs_,rhsP_ -!DVM$& ,uM_,u_,uP_,qs_) -!DVM$& ,TIE(rhs(*,i,*,k,*),lhsc(*,*,i,*,k,*),u(*,i,*,k,*),qs(i,*,k,*)) - do k=start(3,c),ksize - do i=start(1,c),isize - do j=jstart,jsize - - if (j.eq.jstart) then - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc(m,n,i,j-1,k,c) - enddo - rhsP_(m) = rhs(m,i,j-1,k,c) - uM_(m) = u(m,i,j-1,k,c) - u_(m) = u(m,i,j,k,c) - enddo - qs_(0) = qs(i,j-1,k,c) - qs_(1) = qs(i,j,k,c) - endif - do m = 1, 5 - rhs_(m) = rhs(m,i,j,k,c) - uP_(m) = u(m,i,j+1,k,c) - enddo - qs_(2) = qs(i,j+1,k,c) - - if (first .eq. 1 .and. jstart .eq. j) then - do m = 1, 5 - do n = 1, 5 - lhsb_(m,n) = 0.0d0 - lhsc_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - - call binvcrhs( lhsb_,lhsc_,rhs_) - - else if (last .eq. 1 .and. j .eq. jsize) then - do m = 1, 5 - do n = 1, 5 - lhsa_(m,n) = 0.0d0 - lhsb_(m,n) = 0.0d0 - enddo - lhsb_(m,m) = 1.0d0 - enddo - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvrhs(lhsb_,rhs_) - - else - - call lhsa_y_solve(lhsa_,uM_,qs_(0),c1,c2, - > c3c4,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - - call lhsb_y_solve(lhsb_,u_,qs_(1),c3c4 - > ,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - - call lhsc_y_solve(lhsc_,uP_,qs_(2),c1,c2, - > c3c4,con43,c1345,ty1,ty2,dy1,dy2,dy3,dy4,dy5,dt) - - call matvec_sub(lhsa_,rhsP_,rhs_) - call matmul_sub(lhsa_,lhscP_,lhsb_) - call binvcrhs( lhsb_,lhsc_,rhs_) - - endif - - do m = 1, 5 - do n = 1, 5 - lhscP_(m,n) = lhsc_(m,n) - enddo - rhs(m,i,j-1,k,c) = rhsP_(m) - rhsP_(m) = rhs_(m) - uM_(m) = u_(m) - u_(m) = uP_(m) - enddo - qs_(0) = qs_(1) - qs_(1) = qs_(2) - - if (.not. (last .eq. 1 .and. j .eq. jsize)) then - do m = 1, 5 - do n = 1, 5 - lhsc(m,n,i,j,k,c) = lhsc_(m,n) - enddo - enddo - endif - - if (j.eq.jsize) then - do m = 1, 5 - rhs(m,i,j,k,c) = rhs_(m) - enddo - endif - enddo - enddo - enddo -!DVM$ end region - return - end - - - - - - - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/Makefile deleted file mode 100644 index eae547f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=cg -BENCHMARKU=CG - -include ../config/make_dvmh.def - -OBJS = cg.o ${COMMON}/print_results.o \ - ${COMMON}/${RAND}.o ${COMMON}/timers.o - -include ../sys/make.common - -${PROGRAM}: config ${OBJS} - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}_dvmh ${OBJS} ${FMPI_LIB} - -cg.o: cg.f mpinpb.h npbparams.h timing.h - ${FCOMPILE} -dvmIrregAnalysis cg.f - -clean: - - rm -f *.o *~ - - rm -f npbparams.h core - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/cg.f b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/cg.f deleted file mode 100644 index 7ac2642..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/cg.f +++ /dev/null @@ -1,1623 +0,0 @@ - -! *** generated by SAPFOR with version 1757 and build date: Mar 26 2021 10:17:52 - -! *** generated by SAPFOR with version 1651 and build date: Oct 5 2020 10:15:03 -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! C G ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. ! -! It is described in NAS Technical Reports 95-020 and 02-007 ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! -!--------------------------------------------------------------------- -! -! Authors: M. Yarrow -! C. Kuszmaul -! R. F. Van der Wijngaart -! H. Jin -! -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - PROGRAM CG - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'mpinpb.h' - INCLUDE 'timing.h' - INTEGER :: STATUS(MPI_STATUS_SIZE),REQUEST,IERR - - INCLUDE 'npbparams.h' - INTEGER :: NUM_PROCS - PARAMETER (NUM_PROCS = NUM_PROC_COLS * NUM_PROC_ROWS) - -!--------------------------------------------------------------------- -! Class specific parameters: -! It appears here for reference only. -! These are their values, however, this info is imported in the npbparams.h -! include file, which is written by the sys/setparams.c program. -!--------------------------------------------------------------------- -!---------- -! Class S: -!---------- -!C parameter( na=1400, -!C > nonzer=7, -!C > shift=10., -!C > niter=15, -!C > rcond=1.0d-1 ) -!---------- -! Class W: -!---------- -!C parameter( na=7000, -!C > nonzer=8, -!C > shift=12., -!C > niter=15, -!C > rcond=1.0d-1 ) -!---------- -! Class A: -!---------- -!C parameter( na=14000, -!C > nonzer=11, -!C > shift=20., -!C > niter=15, -!C > rcond=1.0d-1 ) -!---------- -! Class B: -!---------- -!C parameter( na=75000, -!C > nonzer=13, -!C > shift=60., -!C > niter=75, -!C > rcond=1.0d-1 ) -!---------- -! Class C: -!---------- -!C parameter( na=150000, -!C > nonzer=15, -!C > shift=110., -!C > niter=75, -!C > rcond=1.0d-1 ) -!---------- -! Class D: -!---------- -!C parameter( na=1500000, -!C > nonzer=21, -!C > shift=500., -!C > niter=100, -!C > rcond=1.0d-1 ) -!---------- -! Class E: -!---------- -!C parameter( na=9000000, -!C > nonzer=26, -!C > shift=1500., -!C > niter=100, -!C > rcond=1.0d-1 ) - INTEGER :: NZ - PARAMETER (NZ = NA * (NONZER + 1) / NUM_PROCS * (NONZER + 1) + - &NONZER + NA * (NONZER + 2 + NUM_PROCS / 256) / NUM_PROC_COLS) - COMMON /PARTIT_SIZE/NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIR - &STROW,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_STA - &RT,SEND_LEN - INTEGER :: NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIRSTROW,LA - &STROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_START,SEND_ - &LEN - COMMON /MAIN_INT_MEM/COLIDX,ROWSTR,IV,AROW,ACOL - INTEGER :: COLIDX(NZ),ROWSTR(NA + 1),IV(2 * NA + 1),AROW(NZ),A - &COL(NZ) - COMMON /MAIN_FLT_MEM/V,AELT,A,X,Z,P,Q,R,W - DOUBLE PRECISION :: V(NA + 1),AELT(NZ),A(NZ),X(NA / NUM_PROC_R - &OWS + 2),Z(NA / NUM_PROC_ROWS + 2),P(NA / NUM_PROC_ROWS + 2),Q(NA - &/ NUM_PROC_ROWS + 2),R(NA / NUM_PROC_ROWS + 2),W(NA / NUM_PROC_ROW - &S + 2) - COMMON /URANDO/AMULT,TRAN - DOUBLE PRECISION :: AMULT,TRAN - INTEGER :: L2NPCOLS - INTEGER :: REDUCE_EXCH_PROC(NUM_PROC_COLS) - INTEGER :: REDUCE_SEND_STARTS(NUM_PROC_COLS) - INTEGER :: REDUCE_SEND_LENGTHS(NUM_PROC_COLS) - INTEGER :: REDUCE_RECV_STARTS(NUM_PROC_COLS) - INTEGER :: REDUCE_RECV_LENGTHS(NUM_PROC_COLS) - INTEGER :: I,J,K,IT - DOUBLE PRECISION :: ZETA,RANDLC - EXTERNAL RANDLC - DOUBLE PRECISION :: RNORM - DOUBLE PRECISION :: NORM_TEMP1(2),NORM_TEMP2(2) - DOUBLE PRECISION :: T,TMAX,MFLOPS - EXTERNAL TIMER_READ - DOUBLE PRECISION :: TIMER_READ - CHARACTER :: CLASS - LOGICAL :: VERIFIED - DOUBLE PRECISION :: ZETA_VERIFY_VALUE,EPSILON,ERR - DOUBLE PRECISION :: TSUM(T_LAST + 2),T1(T_LAST + 2),TMING(T_LA - &ST + 2),TMAXG(T_LAST + 2) - CHARACTER :: T_RECS(T_LAST + 2)*8 - DATA T_RECS/'total', 'conjg', 'rcomm', 'ncomm', ' to - &tcomp', ' totcomm'/ - INTERFACE - SUBROUTINE CONJ_GRAD (COLIDX, ROWSTR, X, Z, A, P, Q, R, W, R - &NORM, L2NPCOLS, REDUCE_EXCH_PROC, REDUCE_SEND_STARTS, REDUCE_SEND_ - &LENGTHS, REDUCE_RECV_STARTS, REDUCE_RECV_LENGTHS) - IMPLICIT NONE - COMMON /PARTIT_SIZE/NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW, - &FIRSTROW,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_ - &START,SEND_LEN - INTEGER :: NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIRSTROW - &,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_START,SE - &ND_LEN - DOUBLE PRECISION :: X(:),Z(:),P(:),Q(:),R(:),W(:) - DOUBLE PRECISION :: A(NZZ) - INTEGER :: COLIDX(NZZ),ROWSTR(NAA + 1) - INTEGER :: L2NPCOLS - INTEGER :: REDUCE_EXCH_PROC(L2NPCOLS) - INTEGER :: REDUCE_SEND_STARTS(L2NPCOLS) - INTEGER :: REDUCE_SEND_LENGTHS(L2NPCOLS) - INTEGER :: REDUCE_RECV_STARTS(L2NPCOLS) - INTEGER :: REDUCE_RECV_LENGTHS(L2NPCOLS) - DOUBLE PRECISION :: D,SUM,RHO,RHO0,ALPHA,BETA,RNORM - END SUBROUTINE - END INTERFACE - -!--------------------------------------------------------------------- -! Set up mpi initialization and number of proc testing -!--------------------------------------------------------------------- - CALL INITIALIZE_MPI() - IF (NA .EQ. 1400 .AND. NONZER .EQ. 7 .AND. NITER .EQ. 15 .AND. - &SHIFT .EQ. 10.D0) THEN - CLASS = 'S' - ZETA_VERIFY_VALUE = 8.5971775078648D0 - ELSE IF (NA .EQ. 7000 .AND. NONZER .EQ. 8 .AND. NITER .EQ. 15 . - &AND. SHIFT .EQ. 12.D0) THEN - CLASS = 'W' - ZETA_VERIFY_VALUE = 10.362595087124D0 - ELSE IF (NA .EQ. 14000 .AND. NONZER .EQ. 11 .AND. NITER .EQ. 15 - & .AND. SHIFT .EQ. 20.D0) THEN - CLASS = 'A' - ZETA_VERIFY_VALUE = 17.130235054029D0 - ELSE IF (NA .EQ. 75000 .AND. NONZER .EQ. 13 .AND. NITER .EQ. 75 - & .AND. SHIFT .EQ. 60.D0) THEN - CLASS = 'B' - ZETA_VERIFY_VALUE = 22.712745482631D0 - ELSE IF (NA .EQ. 150000 .AND. NONZER .EQ. 15 .AND. NITER .EQ. 7 - &5 .AND. SHIFT .EQ. 110.D0) THEN - CLASS = 'C' - ZETA_VERIFY_VALUE = 28.973605592845D0 - ELSE IF (NA .EQ. 1500000 .AND. NONZER .EQ. 21 .AND. NITER .EQ. - &100 .AND. SHIFT .EQ. 500.D0) THEN - CLASS = 'D' - ZETA_VERIFY_VALUE = 52.514532105794D0 - ELSE IF (NA .EQ. 9000000 .AND. NONZER .EQ. 26 .AND. NITER .EQ. - &100 .AND. SHIFT .EQ. 1.5D3) THEN - CLASS = 'E' - ZETA_VERIFY_VALUE = 77.522164599383D0 - ELSE - CLASS = 'U' - ENDIF - IF (ME .EQ. ROOT) THEN - WRITE (UNIT = *,FMT = 1000) - WRITE (UNIT = *,FMT = 1001) NA - WRITE (UNIT = *,FMT = 1002) NITER - WRITE (UNIT = *,FMT = 1003) NPROCS - WRITE (UNIT = *,FMT = 1004) NONZER - WRITE (UNIT = *,FMT = 1005) SHIFT -1000 FORMAT(//,' NAS Parallel Benchmarks 3.3 -- CG Benchmar - &k', /) -1001 FORMAT(' Size: ', I10 ) -1002 FORMAT(' Iterations: ', I5 ) -1003 FORMAT(' Number of active processes: ', I5 ) -1004 FORMAT(' Number of nonzeroes per row: ', I8) -1005 FORMAT(' Eigenvalue shift: ', E8.3) - ENDIF - IF (.NOT.(CONVERTDOUBLE)) THEN - DP_TYPE = MPI_DOUBLE_PRECISION - ELSE - DP_TYPE = MPI_REAL - ENDIF - NAA = NA - NZZ = NZ - -!--------------------------------------------------------------------- -! Set up processor info, such as whether sq num of procs, etc -!--------------------------------------------------------------------- - CALL SETUP_PROC_INFO(NUM_PROCS,NUM_PROC_ROWS,NUM_PROC_COLS) - -!--------------------------------------------------------------------- -! Set up partition's submatrix info: firstcol, lastcol, firstrow, lastrow -!--------------------------------------------------------------------- - CALL SETUP_SUBMATRIX_INFO(L2NPCOLS,REDUCE_EXCH_PROC,REDUCE_SEND - &_STARTS,REDUCE_SEND_LENGTHS,REDUCE_RECV_STARTS,REDUCE_RECV_LENGTHS - &) - DO I = 1,T_LAST - CALL TIMER_CLEAR(I) - ENDDO - -!--------------------------------------------------------------------- -! Inialize random number generator -!--------------------------------------------------------------------- - TRAN = 314159265.0D0 - AMULT = 1220703125.0D0 - ZETA = RANDLC (TRAN,AMULT) - -!--------------------------------------------------------------------- -! Set up partition's sparse random matrix for given class size -!--------------------------------------------------------------------- - CALL MAKEA(NAA,NZZ,A,COLIDX,ROWSTR,NONZER,FIRSTROW,LASTROW,FIRS - &TCOL,LASTCOL,RCOND,AROW,ACOL,AELT,V,IV,SHIFT) - -!--------------------------------------------------------------------- -! Note: as a result of the above call to makea: -! values of j used in indexing rowstr go from 1 --> lastrow-firstrow+1 -! values of colidx which are col indexes go from firstcol --> lastcol -! So: -! Shift the col index vals from actual (firstcol --> lastcol ) -! to local, i.e., (1 --> lastcol-firstcol+1) -!--------------------------------------------------------------------- -!DVM$ GET_ACTUAL (COLIDX,ROWSTR) - DO J = 1,LASTROW - FIRSTROW + 1 - DO K = ROWSTR(J),ROWSTR(J + 1) - 1 - COLIDX(K) = COLIDX(K) - FIRSTCOL + 1 - ENDDO - ENDDO -!DVM$ ACTUAL (COLIDX) - -!--------------------------------------------------------------------- -! set starting vector to (1, 1, .... 1) -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (I), PRIVATE (I),TIE (X(I)) - DO I = 1,NA / NUM_PROC_ROWS + 1 - X(I) = 1.0D0 - ENDDO -!DVM$ END REGION - ZETA = 0.0D0 - -!--------------------------------------------------------------------- -!----> -! Do one iteration untimed to init all code and data page tables -!----> (then reinit, start timing, to niter its) -!--------------------------------------------------------------------- - DO IT = 1,1 - -!--------------------------------------------------------------------- -! The call to the conjugate gradient routine: -!--------------------------------------------------------------------- - CALL CONJ_GRAD(COLIDX,ROWSTR,X,Z,A,P,Q,R,W,RNORM,L2NPCOLS,RE - &DUCE_EXCH_PROC,REDUCE_SEND_STARTS,REDUCE_SEND_LENGTHS,REDUCE_RECV_ - &STARTS,REDUCE_RECV_LENGTHS) - -!--------------------------------------------------------------------- -! zeta = shift + 1/(x.z) -! So, first: (x.z) -! Also, find norm of z -! So, first: (z.z) -!--------------------------------------------------------------------- - NORM_TEMP1(1) = 0.0D0 - NORM_TEMP1(2) = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (X(J),Z(J)),REDUCTION (SUM (NO -!DVM$&RM_TEMP1)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - NORM_TEMP1(1) = NORM_TEMP1(1) + X(J) * Z(J) - NORM_TEMP1(2) = NORM_TEMP1(2) + Z(J) * Z(J) - ENDDO -!DVM$ END REGION - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_NCOMM) - CALL MPI_IRECV(NORM_TEMP2,2,DP_TYPE,REDUCE_EXCH_PROC(I),I - &,MPI_COMM_WORLD,REQUEST,IERR) - CALL MPI_SEND(NORM_TEMP1,2,DP_TYPE,REDUCE_EXCH_PROC(I),I, - &MPI_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_NCOMM) - NORM_TEMP1(1) = NORM_TEMP1(1) + NORM_TEMP2(1) - NORM_TEMP1(2) = NORM_TEMP1(2) + NORM_TEMP2(2) - ENDDO -!DVM$ GET_ACTUAL (NORM_TEMP1) - NORM_TEMP1(2) = 1.0D0 / SQRT (NORM_TEMP1(2)) -!DVM$ ACTUAL (NORM_TEMP1(2)) - -!--------------------------------------------------------------------- -! Normalize z to obtain x -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (X(J),Z(J)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - X(J) = NORM_TEMP1(2) * Z(J) - ENDDO -!DVM$ END REGION - -! end of do one iteration untimed - ENDDO - -!--------------------------------------------------------------------- -! set starting vector to (1, 1, .... 1) -!--------------------------------------------------------------------- -! -! NOTE: a questionable limit on size: should this be na/num_proc_cols+1 ? -! -!DVM$ REGION -!DVM$ PARALLEL (I), PRIVATE (I),TIE (X(I)) - DO I = 1,NA / NUM_PROC_ROWS + 1 - X(I) = 1.0D0 - ENDDO -!DVM$ END REGION - ZETA = 0.0D0 - -!--------------------------------------------------------------------- -! Synchronize and start timing -!--------------------------------------------------------------------- - DO I = 1,T_LAST - CALL TIMER_CLEAR(I) - ENDDO - CALL MPI_BARRIER(MPI_COMM_WORLD,IERR) - CALL TIMER_CLEAR(1) - CALL TIMER_START(1) - -!--------------------------------------------------------------------- -!----> -! Main Iteration for inverse power method -!----> -!--------------------------------------------------------------------- - DO IT = 1,NITER - -!--------------------------------------------------------------------- -! The call to the conjugate gradient routine: -!--------------------------------------------------------------------- - CALL CONJ_GRAD(COLIDX,ROWSTR,X,Z,A,P,Q,R,W,RNORM,L2NPCOLS,RE - &DUCE_EXCH_PROC,REDUCE_SEND_STARTS,REDUCE_SEND_LENGTHS,REDUCE_RECV_ - &STARTS,REDUCE_RECV_LENGTHS) - -!--------------------------------------------------------------------- -! zeta = shift + 1/(x.z) -! So, first: (x.z) -! Also, find norm of z -! So, first: (z.z) -!--------------------------------------------------------------------- - NORM_TEMP1(1) = 0.0D0 - NORM_TEMP1(2) = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (X(J),Z(J)),REDUCTION (SUM (NO -!DVM$&RM_TEMP1)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - NORM_TEMP1(1) = NORM_TEMP1(1) + X(J) * Z(J) - NORM_TEMP1(2) = NORM_TEMP1(2) + Z(J) * Z(J) - ENDDO -!DVM$ END REGION - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_NCOMM) - CALL MPI_IRECV(NORM_TEMP2,2,DP_TYPE,REDUCE_EXCH_PROC(I),I - &,MPI_COMM_WORLD,REQUEST,IERR) - CALL MPI_SEND(NORM_TEMP1,2,DP_TYPE,REDUCE_EXCH_PROC(I),I, - &MPI_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_NCOMM) - NORM_TEMP1(1) = NORM_TEMP1(1) + NORM_TEMP2(1) - NORM_TEMP1(2) = NORM_TEMP1(2) + NORM_TEMP2(2) - ENDDO -!DVM$ GET_ACTUAL (NORM_TEMP1) - NORM_TEMP1(2) = 1.0D0 / SQRT (NORM_TEMP1(2)) -!DVM$ ACTUAL (NORM_TEMP1(2)) - IF (ME .EQ. ROOT) THEN - ZETA = SHIFT + 1.0D0 / NORM_TEMP1(1) - IF (IT .EQ. 1) WRITE (UNIT = *,FMT = 9000) - WRITE (UNIT = *,FMT = 9001) IT,RNORM,ZETA - ENDIF -9000 FORMAT( /,' iteration ||r|| - & zeta' ) -9001 FORMAT( 4X, I5, 7X, E20.14, F20.13 ) - -!--------------------------------------------------------------------- -! Normalize z to obtain x -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (X(J),Z(J)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - X(J) = NORM_TEMP1(2) * Z(J) - ENDDO -!DVM$ END REGION - -! end of main iter inv pow meth - ENDDO - CALL TIMER_STOP(1) - -!--------------------------------------------------------------------- -! End of timed section -!--------------------------------------------------------------------- - T = TIMER_READ (1) - CALL MPI_REDUCE(T,TMAX,1,DP_TYPE,MPI_MAX,ROOT,MPI_COMM_WORLD,IE - &RR) - IF (ME .EQ. ROOT) THEN - WRITE (UNIT = *,FMT = 100) -100 FORMAT(' Benchmark completed ') - EPSILON = 1.D-10 - IF (CLASS .NE. 'U') THEN - ERR = ABS (ZETA - ZETA_VERIFY_VALUE) / ZETA_VERIFY_VALUE - IF (ERR .LE. EPSILON) THEN - VERIFIED = .TRUE. - WRITE (UNIT = *,FMT = 200) - WRITE (UNIT = *,FMT = 201) ZETA - WRITE (UNIT = *,FMT = 202) ERR -200 FORMAT(' VERIFICATION SUCCE - &SSFUL ') -201 FORMAT(' Zeta is ', E20. - &13) -202 FORMAT(' Error is ', E20. - &13) - ELSE - VERIFIED = .FALSE. - WRITE (UNIT = *,FMT = 300) - WRITE (UNIT = *,FMT = 301) ZETA - WRITE (UNIT = *,FMT = 302) ZETA_VERIFY_VALUE -300 FORMAT(' VERIFICATION FAILE - &D') -301 FORMAT(' Zeta - & ', E20.13) -302 FORMAT(' The correct zeta i - &s ', E20.13) - ENDIF - ELSE - VERIFIED = .FALSE. - WRITE (UNIT = *,FMT = 400) - WRITE (UNIT = *,FMT = 401) - WRITE (UNIT = *,FMT = 201) ZETA -400 FORMAT(' Problem size unknown') -401 FORMAT(' NO VERIFICATION PERFORMED') - ENDIF - IF (TMAX .NE. 0.) THEN - MFLOPS = FLOAT (2 * 75 * 150000) * (3. + FLOAT (15 * (15 - &+ 1)) + 25. * (5. + FLOAT (15 * (15 + 1))) + 3.) / TMAX / 1000000. - &0 - ELSE - MFLOPS = 0.0 - ENDIF - CALL PRINT_RESULTS('CG',CLASS,NA,0,0,NITER,NNODES_COMPILED,N - &PROCS,TMAX,MFLOPS,' floating point',VERIFIED,NPBVERSION,C - &OMPILETIME,CS1,CS2,CS3,CS4,CS5,CS6,CS7) - ENDIF - IF (.NOT.(TIMERON)) GOTO 999 -!DVM$ GET_ACTUAL (T1) - DO I = 1,T_LAST - T1(I) = TIMER_READ (I) - ENDDO -!DVM$ ACTUAL (T1) - T1(T_CONJG) = T1(T_CONJG) - T1(T_RCOMM) -!DVM$ ACTUAL (T1(T_CONJG)) - T1(T_LAST + 2) = T1(T_RCOMM) + T1(T_NCOMM) -!DVM$ ACTUAL (T1(T_LAST + 2)) - T1(T_LAST + 1) = T1(T_TOTAL) - T1(T_LAST + 2) -!DVM$ ACTUAL (T1(T_LAST + 1)) - CALL MPI_REDUCE(T1,TSUM,4 + 2,DP_TYPE,MPI_SUM,0,MPI_COMM_WORLD, - &IERR) -!DVM$ GET_ACTUAL (T1) - CALL MPI_REDUCE(T1,TMING,4 + 2,DP_TYPE,MPI_MIN,0,MPI_COMM_WORLD - &,IERR) -!DVM$ GET_ACTUAL (T1) - CALL MPI_REDUCE(T1,TMAXG,4 + 2,DP_TYPE,MPI_MAX,0,MPI_COMM_WORLD - &,IERR) - IF (ME .EQ. 0) THEN - WRITE (UNIT = *,FMT = 800) NPROCS -!DVM$ GET_ACTUAL (T_RECS,TMAXG,TMING,TSUM) - DO I = 1,T_LAST + 2 - TSUM(I) = TSUM(I) / NPROCS - WRITE (UNIT = *,FMT = 810) I,T_RECS(I),TMING(I),TMAXG(I), - &TSUM(I) - ENDDO -!DVM$ ACTUAL (TSUM) - ENDIF -800 FORMAT(' nprocs =', I6, 11X, 'minimum', 5X, 'maximum', 5 - &X, 'average') -810 FORMAT(' timer ', I2, '(', A8, ') :', 3(2X,F10.4)) -999 CONTINUE - CALL MPI_FINALIZE(IERR) - -! end main - END - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE INITIALIZE_MPI () - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'mpinpb.h' - INCLUDE 'timing.h' - INTEGER :: IERR,FSTATUS - CALL MPI_INIT(IERR) - CALL MPI_COMM_RANK(MPI_COMM_WORLD,ME,IERR) - CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NPROCS,IERR) - ROOT = 0 - IF (ME .EQ. ROOT) THEN - OPEN (UNIT = 2,FILE = 'timer.flag',STATUS = 'old',IOSTAT = F - &STATUS) - TIMERON = .FALSE. - IF (FSTATUS .EQ. 0) THEN - TIMERON = .TRUE. - CLOSE (UNIT = 2) - ENDIF - ENDIF - CALL MPI_BCAST(TIMERON,1,MPI_LOGICAL,0,MPI_COMM_WORLD,IERR) - RETURN - END - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE SETUP_PROC_INFO (NUM_PROCS, NUM_PROC_ROWS, NUM_PROC_ - &COLS) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'mpinpb.h' - COMMON /PARTIT_SIZE/NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIR - &STROW,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_STA - &RT,SEND_LEN - INTEGER :: NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIRSTROW,LA - &STROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_START,SEND_ - &LEN - INTEGER :: NUM_PROCS,NUM_PROC_COLS,NUM_PROC_ROWS - INTEGER :: I,IERR - INTEGER :: LOG2NPROCS - INTENT(IN) NUM_PROC_COLS,NUM_PROC_ROWS,NUM_PROCS - -!--------------------------------------------------------------------- -! num_procs must be a power of 2, and num_procs=num_proc_cols*num_proc_rows -! When num_procs is not square, then num_proc_cols = 2*num_proc_rows -!--------------------------------------------------------------------- -! First, number of procs must be power of two. -!--------------------------------------------------------------------- - IF (NPROCS .NE. NUM_PROCS) THEN - IF (ME .EQ. ROOT) WRITE (UNIT = *,FMT = 9000) NPROCS,NUM_PR - &OCS -9000 FORMAT( /,'Error: ',/,'num of procs allocated - & (', I4, ' )', /,'is not equal - &to',/, 'compiled number of procs (', - & I4, ' )',/ ) - CALL MPI_FINALIZE(IERR) - STOP - ENDIF - I = NUM_PROC_COLS -100 CONTINUE - IF (I .NE. 1 .AND. I / 2 * 2 .NE. I) THEN - IF (ME .EQ. ROOT) THEN - WRITE (UNIT = *,FMT = *) 'Error: num_proc_cols is ',NUM_P - &ROC_COLS,' which is not a power of two' - ENDIF - CALL MPI_FINALIZE(IERR) - STOP - ENDIF - I = I / 2 - IF (I .NE. 0) THEN - GOTO 100 - ENDIF - I = NUM_PROC_ROWS -200 CONTINUE - IF (I .NE. 1 .AND. I / 2 * 2 .NE. I) THEN - IF (ME .EQ. ROOT) THEN - WRITE (UNIT = *,FMT = *) 'Error: num_proc_rows is ',NUM_P - &ROC_ROWS,' which is not a power of two' - ENDIF - CALL MPI_FINALIZE(IERR) - STOP - ENDIF - I = I / 2 - IF (I .NE. 0) THEN - GOTO 200 - ENDIF - LOG2NPROCS = 0 - I = NPROCS -300 CONTINUE - IF (I .NE. 1 .AND. I / 2 * 2 .NE. I) THEN - WRITE (UNIT = *,FMT = *) 'Error: nprocs is ',NPROCS,' which - &is not a power of two' - CALL MPI_FINALIZE(IERR) - STOP - ENDIF - I = I / 2 - IF (I .NE. 0) THEN - LOG2NPROCS = LOG2NPROCS + 1 - GOTO 300 - ENDIF - -!C write( *,* ) 'nprocs, log2nprocs: ',nprocs,log2nprocs - NPCOLS = NUM_PROC_COLS - NPROWS = NUM_PROC_ROWS - RETURN - END - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE SETUP_SUBMATRIX_INFO (L2NPCOLS, REDUCE_EXCH_PROC, RE - &DUCE_SEND_STARTS, REDUCE_SEND_LENGTHS, REDUCE_RECV_STARTS, REDUCE_ - &RECV_LENGTHS) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'mpinpb.h' - INCLUDE 'npbparams.h' - INTEGER :: COL_SIZE,ROW_SIZE - COMMON /PARTIT_SIZE/NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIR - &STROW,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_STA - &RT,SEND_LEN - INTEGER :: NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIRSTROW,LA - &STROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_START,SEND_ - &LEN - INTEGER :: REDUCE_EXCH_PROC(NUM_PROC_COLS) - INTEGER :: REDUCE_SEND_STARTS(NUM_PROC_COLS) - INTEGER :: REDUCE_SEND_LENGTHS(NUM_PROC_COLS) - INTEGER :: REDUCE_RECV_STARTS(NUM_PROC_COLS) - INTEGER :: REDUCE_RECV_LENGTHS(NUM_PROC_COLS) - INTEGER :: I,J - INTEGER :: DIV_FACTOR - INTEGER :: L2NPCOLS - INTENT(INOUT) L2NPCOLS - INTENT(OUT) REDUCE_RECV_LENGTHS,REDUCE_RECV_STARTS,REDUCE_SEND_ - &LENGTHS,REDUCE_SEND_STARTS,REDUCE_EXCH_PROC - PROC_ROW = ME / NPCOLS - PROC_COL = ME - PROC_ROW * NPCOLS - -!--------------------------------------------------------------------- -! If naa evenly divisible by npcols, then it is evenly divisible -! by nprows -!--------------------------------------------------------------------- - IF (NAA / NPCOLS * NPCOLS .EQ. NAA) THEN - COL_SIZE = NAA / NPCOLS - FIRSTCOL = PROC_COL * COL_SIZE + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE - ROW_SIZE = NAA / NPROWS - FIRSTROW = PROC_ROW * ROW_SIZE + 1 - LASTROW = FIRSTROW - 1 + ROW_SIZE - -!--------------------------------------------------------------------- -! If naa not evenly divisible by npcols, then first subdivide for nprows -! and then, if npcols not equal to nprows (i.e., not a sq number of procs), -! get col subdivisions by dividing by 2 each row subdivision. -!--------------------------------------------------------------------- - ELSE - IF (PROC_ROW .LT. NAA - NAA / NPROWS * NPROWS) THEN - ROW_SIZE = NAA / NPROWS + 1 - FIRSTROW = PROC_ROW * ROW_SIZE + 1 - LASTROW = FIRSTROW - 1 + ROW_SIZE - ELSE - ROW_SIZE = NAA / NPROWS - FIRSTROW = (NAA - NAA / NPROWS * NPROWS) * (ROW_SIZE + 1) - & + (PROC_ROW - (NAA - NAA / NPROWS * NPROWS)) * ROW_SIZE + 1 - LASTROW = FIRSTROW - 1 + ROW_SIZE - ENDIF - IF (NPCOLS .EQ. NPROWS) THEN - IF (PROC_COL .LT. NAA - NAA / NPCOLS * NPCOLS) THEN - COL_SIZE = NAA / NPCOLS + 1 - FIRSTCOL = PROC_COL * COL_SIZE + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE - ELSE - COL_SIZE = NAA / NPCOLS - FIRSTCOL = (NAA - NAA / NPCOLS * NPCOLS) * (COL_SIZE + - & 1) + (PROC_COL - (NAA - NAA / NPCOLS * NPCOLS)) * COL_SIZE + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE - ENDIF - ELSE - IF (PROC_COL / 2 .LT. NAA - NAA / (NPCOLS / 2) * (NPCOLS - &/ 2)) THEN - COL_SIZE = NAA / (NPCOLS / 2) + 1 - FIRSTCOL = PROC_COL / 2 * COL_SIZE + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE - ELSE - COL_SIZE = NAA / (NPCOLS / 2) - FIRSTCOL = (NAA - NAA / (NPCOLS / 2) * (NPCOLS / 2)) * - & (COL_SIZE + 1) + (PROC_COL / 2 - (NAA - NAA / (NPCOLS / 2) * (NPC - &OLS / 2))) * COL_SIZE + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE - ENDIF - -!C write( *,* ) col_size,firstcol,lastcol - IF (MOD (ME,2) .EQ. 0) THEN - LASTCOL = FIRSTCOL - 1 + (COL_SIZE - 1) / 2 + 1 - ELSE - FIRSTCOL = FIRSTCOL + (COL_SIZE - 1) / 2 + 1 - LASTCOL = FIRSTCOL - 1 + COL_SIZE / 2 - -!C write( *,* ) firstcol,lastcol - ENDIF - ENDIF - ENDIF - IF (NPCOLS .EQ. NPROWS) THEN - SEND_START = 1 - SEND_LEN = LASTROW - FIRSTROW + 1 - ELSE - IF (MOD (ME,2) .EQ. 0) THEN - SEND_START = 1 - SEND_LEN = (1 + LASTROW - FIRSTROW + 1) / 2 - ELSE - SEND_START = (1 + LASTROW - FIRSTROW + 1) / 2 + 1 - SEND_LEN = (LASTROW - FIRSTROW + 1) / 2 - ENDIF - ENDIF - -!--------------------------------------------------------------------- -! Transpose exchange processor -!--------------------------------------------------------------------- - IF (NPCOLS .EQ. NPROWS) THEN - EXCH_PROC = MOD (ME,NPROWS) * NPROWS + ME / NPROWS - ELSE - EXCH_PROC = 2 * (MOD (ME / 2,NPROWS) * NPROWS + ME / 2 / NPR - &OWS) + MOD (ME,2) - ENDIF - I = NPCOLS / 2 - L2NPCOLS = 0 - DO WHILE (I .GT. 0) - L2NPCOLS = L2NPCOLS + 1 - I = I / 2 - ENDDO - -!--------------------------------------------------------------------- -! Set up the reduce phase schedules... -!--------------------------------------------------------------------- - DIV_FACTOR = NPCOLS -!DVM$ GET_ACTUAL (REDUCE_EXCH_PROC) - DO I = 1,L2NPCOLS - J = MOD (PROC_COL + DIV_FACTOR / 2,DIV_FACTOR) + PROC_COL / - &DIV_FACTOR * DIV_FACTOR - REDUCE_EXCH_PROC(I) = PROC_ROW * NPCOLS + J - DIV_FACTOR = DIV_FACTOR / 2 - ENDDO -!DVM$ ACTUAL (REDUCE_EXCH_PROC) -!DVM$ GET_ACTUAL (REDUCE_RECV_LENGTHS,REDUCE_RECV_STARTS,REDUCE_SEND_ -!DVM$&LENGTHS,REDUCE_SEND_STARTS) - DO I = L2NPCOLS,1,(-(1)) - IF (NPROWS .EQ. NPCOLS) THEN - REDUCE_SEND_STARTS(I) = SEND_START - REDUCE_SEND_LENGTHS(I) = SEND_LEN - REDUCE_RECV_LENGTHS(I) = LASTROW - FIRSTROW + 1 - ELSE - REDUCE_RECV_LENGTHS(I) = SEND_LEN - IF (I .EQ. L2NPCOLS) THEN - REDUCE_SEND_LENGTHS(I) = LASTROW - FIRSTROW + 1 - SEND - &_LEN - IF (ME / 2 * 2 .EQ. ME) THEN - REDUCE_SEND_STARTS(I) = SEND_START + SEND_LEN - ELSE - REDUCE_SEND_STARTS(I) = 1 - ENDIF - ELSE - REDUCE_SEND_LENGTHS(I) = SEND_LEN - REDUCE_SEND_STARTS(I) = SEND_START - ENDIF - ENDIF - REDUCE_RECV_STARTS(I) = SEND_START - ENDDO -!DVM$ ACTUAL (REDUCE_RECV_LENGTHS,REDUCE_RECV_STARTS,REDUCE_SEND_LENG -!DVM$&THS,REDUCE_SEND_STARTS) - EXCH_RECV_LENGTH = LASTCOL - FIRSTCOL + 1 - RETURN - END - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE CONJ_GRAD (COLIDX, ROWSTR, X, Z, A, P, Q, R, W, RNOR - &M, L2NPCOLS, REDUCE_EXCH_PROC, REDUCE_SEND_STARTS, REDUCE_SEND_LEN - >HS, REDUCE_RECV_STARTS, REDUCE_RECV_LENGTHS) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! Floaging point arrays here are named as in NPB1 spec discussion of -! CG algorithm -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'mpinpb.h' - INCLUDE 'timing.h' - INTEGER :: STATUS(MPI_STATUS_SIZE),REQUEST - COMMON /PARTIT_SIZE/NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIR - &STROW,LASTROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_STA - &RT,SEND_LEN - INTEGER :: NAA,NZZ,NPCOLS,NPROWS,PROC_COL,PROC_ROW,FIRSTROW,LA - &STROW,FIRSTCOL,LASTCOL,EXCH_PROC,EXCH_RECV_LENGTH,SEND_START,SEND_ - &LEN - DOUBLE PRECISION :: X(:),Z(:),A(NZZ) - INTEGER :: COLIDX(NZZ),ROWSTR(NAA + 1) - -! used as work temporary - DOUBLE PRECISION :: P(:),Q(:),R(:),W(:) - INTEGER :: L2NPCOLS - INTEGER :: REDUCE_EXCH_PROC(L2NPCOLS) - INTEGER :: REDUCE_SEND_STARTS(L2NPCOLS) - INTEGER :: REDUCE_SEND_LENGTHS(L2NPCOLS) - INTEGER :: REDUCE_RECV_STARTS(L2NPCOLS) - INTEGER :: REDUCE_RECV_LENGTHS(L2NPCOLS) - INTEGER :: I,J,K,IERR - INTEGER :: CGIT,CGITMAX - DOUBLE PRECISION :: D,SUM,RHO,RHO0,ALPHA,BETA,RNORM - EXTERNAL TIMER_READ - DOUBLE PRECISION :: TIMER_READ - DATA CGITMAX / 25 / - INTENT(INOUT) W,R,Q,P,Z - INTENT(IN) REDUCE_RECV_LENGTHS,REDUCE_RECV_STARTS,REDUCE_SEND_L - &ENGTHS,REDUCE_SEND_STARTS,REDUCE_EXCH_PROC,L2NPCOLS,A,X,ROWSTR,COL - &IDX - INTENT(OUT) RNORM - IF (TIMERON) CALL TIMER_START(T_CONJG) - -!--------------------------------------------------------------------- -! Initialize the CG algorithm: -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (P(J),Q(J),R(J),W(J),X(J),Z(J)) - DO J = 1,NAA / NPROWS + 1 - Q(J) = 0.0D0 - Z(J) = 0.0D0 - R(J) = X(J) - P(J) = R(J) - W(J) = 0.0D0 - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! rho = r.r -! Now, obtain the norm of r: First, sum squares of r elements locally... -!--------------------------------------------------------------------- - SUM = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (R(J)),REDUCTION (SUM (SUM)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - SUM = SUM + R(J) * R(J) - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Exchange and sum with procs identified in reduce_exch_proc -! (This is equivalent to mpi_allreduce.) -! Sum the partial sums of rho, leaving rho on all processors -!--------------------------------------------------------------------- - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_RCOMM) - CALL MPI_IRECV(RHO,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_ - &WORLD,REQUEST,IERR) - CALL MPI_SEND(SUM,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_W - &ORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - SUM = SUM + RHO - ENDDO - RHO = SUM - -!--------------------------------------------------------------------- -!----> -! The conj grad iteration loop -!----> -!--------------------------------------------------------------------- - DO CGIT = 1,CGITMAX - -!--------------------------------------------------------------------- -! q = A.p -! The partition submatrix-vector multiply: use workspace w -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J,K,SUM),TIE (W(J)) - DO J = 1,LASTROW - FIRSTROW + 1 - SUM = 0.D0 - DO K = ROWSTR(J),ROWSTR(J + 1) - 1 - SUM = SUM + A(K) * P(COLIDX(K)) - ENDDO - W(J) = SUM - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Sum the partition submatrix-vec A.p's across rows -! Exchange and sum piece of w with procs identified in reduce_exch_proc -!--------------------------------------------------------------------- - DO I = L2NPCOLS,1,(-(1)) - IF (TIMERON) CALL TIMER_START(T_RCOMM) - - CALL MPI_IRECV(Q(REDUCE_RECV_STARTS(I)),REDUCE_RECV_LENGT - &HS(I),DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_WORLD,REQUEST,IERR) -!DVM$ ACTUAL (Q(REDUCE_RECV_STARTS(I):REDUCE_RECV_STARTS(I)+ -!DVM$& REDUCE_RECV_LENGTHS(I))) -!DVM$ GET_ACTUAL (W(REDUCE_SEND_STARTS(I):REDUCE_SEND_STARTS(I) -!DVM$& +REDUCE_SEND_LENGTHS(I))) - CALL MPI_SEND(W(REDUCE_SEND_STARTS(I)),REDUCE_SEND_LENGTH - &S(I),DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (Q(J),W(J)) - DO J = SEND_START,SEND_START + REDUCE_RECV_LENGTHS(I) - - &1 - W(J) = W(J) + Q(J) - ENDDO -!DVM$ END REGION - ENDDO - -!--------------------------------------------------------------------- -! Exchange piece of q with transpose processor: -!--------------------------------------------------------------------- - IF (L2NPCOLS .NE. 0) THEN - IF (TIMERON) CALL TIMER_START(T_RCOMM) - - CALL MPI_IRECV(Q,EXCH_RECV_LENGTH,DP_TYPE,EXCH_PROC,1,MPI - &_COMM_WORLD,REQUEST,IERR) -!DVM$ ACTUAL (Q(1:EXCH_RECV_LENGTH)) -!DVM$ GET_ACTUAL (W(SEND_START:SEND_START+SEND_LEN)) - CALL MPI_SEND(W(SEND_START),SEND_LEN,DP_TYPE,EXCH_PROC,1, - &MPI_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - ELSE -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (Q(J),W(J)) - DO J = 1,EXCH_RECV_LENGTH - Q(J) = W(J) - ENDDO -!DVM$ END REGION - ENDIF - -!--------------------------------------------------------------------- -! Clear w for reuse... -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (W(J)) - DO J = 1,MAX (LASTROW - FIRSTROW + 1,LASTCOL - FIRSTCOL + 1 - &) - W(J) = 0.0D0 - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Obtain p.q -!--------------------------------------------------------------------- - SUM = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (P(J),Q(J)),REDUCTION (SUM (SU -!DVM$&M)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - SUM = SUM + P(J) * Q(J) - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Obtain d with a sum-reduce -!--------------------------------------------------------------------- - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_RCOMM) - CALL MPI_IRECV(D,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM - &_WORLD,REQUEST,IERR) - CALL MPI_SEND(SUM,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COM - &M_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - SUM = SUM + D - ENDDO - D = SUM - -!--------------------------------------------------------------------- -! Obtain alpha = rho / (p.q) -!--------------------------------------------------------------------- - ALPHA = RHO / D - -!--------------------------------------------------------------------- -! Save a temporary of rho -!--------------------------------------------------------------------- - RHO0 = RHO - -!--------------------------------------------------------------------- -! Obtain z = z + alpha*p -! and r = r - alpha*q -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (P(J),Q(J),R(J),Z(J)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - Z(J) = Z(J) + ALPHA * P(J) - R(J) = R(J) - ALPHA * Q(J) - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! rho = r.r -! Now, obtain the norm of r: First, sum squares of r elements locally... -!--------------------------------------------------------------------- - SUM = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (R(J)),REDUCTION (SUM (SUM)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - SUM = SUM + R(J) * R(J) - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Obtain rho with a sum-reduce -!--------------------------------------------------------------------- - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_RCOMM) - CALL MPI_IRECV(RHO,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_CO - &MM_WORLD,REQUEST,IERR) - CALL MPI_SEND(SUM,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COM - &M_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - SUM = SUM + RHO - ENDDO - RHO = SUM - -!--------------------------------------------------------------------- -! Obtain beta: -!--------------------------------------------------------------------- - BETA = RHO / RHO0 - -!--------------------------------------------------------------------- -! p = r + beta*p -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (P(J),R(J)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - P(J) = R(J) + BETA * P(J) - ENDDO -!DVM$ END REGION - -! end of do cgit=1,cgitmax - ENDDO - -!--------------------------------------------------------------------- -! Compute residual norm explicitly: ||r|| = ||x - A.z|| -! First, form A.z -! The partition submatrix-vector multiply -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J,K,SUM),TIE (W(J)) - DO J = 1,LASTROW - FIRSTROW + 1 - SUM = 0.D0 - DO K = ROWSTR(J),ROWSTR(J + 1) - 1 - SUM = SUM + A(K) * Z(COLIDX(K)) - ENDDO - W(J) = SUM - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Sum the partition submatrix-vec A.z's across rows -!--------------------------------------------------------------------- - DO I = L2NPCOLS,1,(-(1)) - IF (TIMERON) CALL TIMER_START(T_RCOMM) - - CALL MPI_IRECV(R(REDUCE_RECV_STARTS(I)),REDUCE_RECV_LENGTHS( - &I),DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_WORLD,REQUEST,IERR) -!DVM$ ACTUAL (R(REDUCE_RECV_STARTS(I):REDUCE_RECV_STARTS(I)+ -!DVM$& REDUCE_RECV_LENGTHS(I))) - -!DVM$ GET_ACTUAL (W(REDUCE_SEND_STARTS(I):REDUCE_SEND_STARTS(I)+ -!DVM$& REDUCE_SEND_LENGTHS(I))) - CALL MPI_SEND(W(REDUCE_SEND_STARTS(I)),REDUCE_SEND_LENGTHS(I - &),DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (R(J),W(J)) - DO J = SEND_START,SEND_START + REDUCE_RECV_LENGTHS(I) - 1 - W(J) = W(J) + R(J) - ENDDO -!DVM$ END REGION - ENDDO - -!--------------------------------------------------------------------- -! Exchange piece of q with transpose processor: -!--------------------------------------------------------------------- - IF (L2NPCOLS .NE. 0) THEN - IF (TIMERON) CALL TIMER_START(T_RCOMM) - - CALL MPI_IRECV(R,EXCH_RECV_LENGTH,DP_TYPE,EXCH_PROC,1,MPI_CO - &MM_WORLD,REQUEST,IERR) -!DVM$ ACTUAL (R(1:EXCH_RECV_LENGTH)) -!DVM$ GET_ACTUAL (W(SEND_START:SEND_START+SEND_LEN)) - CALL MPI_SEND(W(SEND_START),SEND_LEN,DP_TYPE,EXCH_PROC,1,MPI - &_COMM_WORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - ELSE -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (R(J),W(J)) - DO J = 1,EXCH_RECV_LENGTH - R(J) = W(J) - ENDDO -!DVM$ END REGION - ENDIF - -!--------------------------------------------------------------------- -! At this point, r contains A.z -!--------------------------------------------------------------------- - SUM = 0.0D0 -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (D,J),TIE (R(J),X(J)),REDUCTION (SUM (SUM -!DVM$&)) - DO J = 1,LASTCOL - FIRSTCOL + 1 - D = X(J) - R(J) - SUM = SUM + D * D - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! Obtain d with a sum-reduce -!--------------------------------------------------------------------- - DO I = 1,L2NPCOLS - IF (TIMERON) CALL TIMER_START(T_RCOMM) - CALL MPI_IRECV(D,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_WO - &RLD,REQUEST,IERR) - CALL MPI_SEND(SUM,1,DP_TYPE,REDUCE_EXCH_PROC(I),I,MPI_COMM_W - &ORLD,IERR) - CALL MPI_WAIT(REQUEST,STATUS,IERR) - IF (TIMERON) CALL TIMER_STOP(T_RCOMM) - SUM = SUM + D - ENDDO - D = SUM - IF (ME .EQ. ROOT) RNORM = SQRT (D) - IF (TIMERON) CALL TIMER_STOP(T_CONJG) - RETURN - -! end of routine conj_grad - END - - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE MAKEA (N, NZ, A, COLIDX, ROWSTR, NONZER, FIRSTROW, L - &ASTROW, FIRSTCOL, LASTCOL, RCOND, AROW, ACOL, AELT, V, IV, SHIFT) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - INTEGER :: N,NZ,NONZER - INTEGER :: FIRSTROW,LASTROW,FIRSTCOL,LASTCOL - INTEGER :: COLIDX(NZ),ROWSTR(N + 1) - INTEGER :: IV(2 * N + 1),AROW(NZ),ACOL(NZ) - DOUBLE PRECISION :: V(N + 1),AELT(NZ) - DOUBLE PRECISION :: RCOND,A(NZ),SHIFT - -!--------------------------------------------------------------------- -! generate the test problem for benchmark 6 -! makea generates a sparse matrix with a -! prescribed sparsity distribution -! -! parameter type usage -! -! input -! -! n i number of cols/rows of matrix -! nz i nonzeros as declared array size -! rcond r*8 condition number -! shift r*8 main diagonal shift -! -! output -! -! a r*8 array for nonzeros -! colidx i col indices -! rowstr i row pointers -! -! workspace -! -! iv, arow, acol i -! v, aelt r*8 -!--------------------------------------------------------------------- - INTEGER :: I,NNZA,IOUTER,IVELT,IVELT1,IROW,NZV,JCOL - -!--------------------------------------------------------------------- -! nonzer is approximately (int(sqrt(nnza /n))); -!--------------------------------------------------------------------- - DOUBLE PRECISION :: SIZE,RATIO,SCALE - EXTERNAL SPARSE,SPRNVC,VECSET - INTENT(INOUT) IV,V,AELT,ACOL,AROW,ROWSTR,COLIDX,A - INTENT(IN) SHIFT,RCOND,LASTCOL,FIRSTCOL,LASTROW,FIRSTROW,NONZER - &,NZ,N - SIZE = 1.0D0 - RATIO = RCOND** (1.0D0 / DFLOAT (N)) - NNZA = 0 - -!--------------------------------------------------------------------- -! Initialize iv(n+1 .. 2n) to zero. -! Used by sprnvc to mark nonzero positions -!--------------------------------------------------------------------- -!DVM$ GET_ACTUAL (IV) - DO I = 1,N - IV(N + I) = 0 - ENDDO -!DVM$ ACTUAL (IV) - DO IOUTER = 1,N - NZV = NONZER -!DVM$ GET_ACTUAL (IV) - CALL SPRNVC(N,NZV,V,COLIDX,IV(1),IV(N + 1)) -!DVM$ ACTUAL (IV) - CALL VECSET(N,V,COLIDX,NZV,IOUTER,.5D0) -!DVM$ GET_ACTUAL (ACOL,AELT,AROW,COLIDX,V) - DO IVELT = 1,NZV - JCOL = COLIDX(IVELT) - IF (JCOL .GE. FIRSTCOL .AND. JCOL .LE. LASTCOL) THEN - SCALE = SIZE * V(IVELT) - DO IVELT1 = 1,NZV - IROW = COLIDX(IVELT1) - IF (IROW .GE. FIRSTROW .AND. IROW .LE. LASTROW) THE - &N - NNZA = NNZA + 1 - IF (NNZA .GT. NZ) GOTO 9999 - ACOL(NNZA) = JCOL - AROW(NNZA) = IROW - AELT(NNZA) = V(IVELT1) * SCALE - ENDIF - ENDDO - ENDIF - ENDDO -!DVM$ ACTUAL (ACOL,AELT,AROW) - SIZE = SIZE * RATIO - ENDDO - -!--------------------------------------------------------------------- -! ... add the identity * rcond to the generated matrix to bound -! the smallest eigenvalue from below by rcond -!--------------------------------------------------------------------- -!DVM$ GET_ACTUAL (ACOL,AELT,AROW) - DO I = FIRSTROW,LASTROW - IF (I .GE. FIRSTCOL .AND. I .LE. LASTCOL) THEN - IOUTER = N + I - NNZA = NNZA + 1 - IF (NNZA .GT. NZ) GOTO 9999 - ACOL(NNZA) = I - AROW(NNZA) = I - AELT(NNZA) = RCOND - SHIFT - ENDIF - ENDDO -!DVM$ ACTUAL (ACOL,AELT,AROW) - -!--------------------------------------------------------------------- -! ... make the sparse matrix from list of elements with duplicates -! (v and iv are used as workspace) -!--------------------------------------------------------------------- -!DVM$ GET_ACTUAL (IV) - CALL SPARSE(A,COLIDX,ROWSTR,N,AROW,ACOL,AELT,FIRSTROW,LASTROW,V - &,IV(1),IV(N + 1),NNZA) -!DVM$ ACTUAL (IV) - RETURN -9999 CONTINUE - WRITE (UNIT = *,FMT = *) 'Space for matrix elements exceeded in - & makea' - WRITE (UNIT = *,FMT = *) 'nnza, nzmax = ',NNZA,NZ - WRITE (UNIT = *,FMT = *) ' iouter = ',IOUTER - STOP - END - - -!-------end of makea------------------------------ -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE SPARSE (A, COLIDX, ROWSTR, N, AROW, ACOL, AELT, FIRS - &TROW, LASTROW, X, MARK, NZLOC, NNZA) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - - INCLUDE 'npbparams.h' - INTEGER :: COLIDX(*),ROWSTR(NA + 1) - INTEGER :: FIRSTROW,LASTROW - INTEGER :: N,AROW(*),ACOL(*),NNZA - DOUBLE PRECISION :: A(*),AELT(*) - -!--------------------------------------------------------------------- -! rows range from firstrow to lastrow -! the rowstr pointers are defined for nrows = lastrow-firstrow+1 values -!--------------------------------------------------------------------- - INTEGER :: NZLOC(N),NROWS - DOUBLE PRECISION :: X(N) - LOGICAL :: MARK(N) - -!--------------------------------------------------- -! generate a sparse matrix from a list of -! [col, row, element] tri -!--------------------------------------------------- - INTEGER :: I,J,JAJP1,NZA,K,NZROW - DOUBLE PRECISION :: XI - INTENT(INOUT) NZLOC,MARK,X,ROWSTR,COLIDX,A - INTENT(IN) NNZA,LASTROW,FIRSTROW,AELT,ACOL,AROW,N - -!--------------------------------------------------------------------- -! how many rows of result -!--------------------------------------------------------------------- - NROWS = LASTROW - FIRSTROW + 1 - -!--------------------------------------------------------------------- -! ...count the number of triples in each row -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (ROWSTR(J)) - DO J = 1,N - ROWSTR(J) = 0 - MARK(J) = .FALSE. - ENDDO -!DVM$ END REGION - ROWSTR(N + 1) = 0 -!DVM$ ACTUAL (ROWSTR(N + 1)) -!DVM$ GET_ACTUAL (AROW,ROWSTR) - DO NZA = 1,NNZA - J = AROW(NZA) - FIRSTROW + 1 + 1 - ROWSTR(J) = ROWSTR(J) + 1 - ENDDO -!DVM$ ACTUAL (ROWSTR) - ROWSTR(1) = 1 -!DVM$ ACTUAL (ROWSTR(1)) -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (ROWSTR(J)),ACROSS (ROWSTR(1:0)) - DO J = 2,NROWS + 1 - ROWSTR(J) = ROWSTR(J) + ROWSTR(J - 1) - ENDDO -!DVM$ END REGION - -!--------------------------------------------------------------------- -! ... rowstr(j) now is the location of the first nonzero -! of row j of a -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -! ... do a bucket sort of the triples on the row index -!--------------------------------------------------------------------- -!DVM$ GET_ACTUAL (A,ACOL,AELT,AROW,COLIDX,ROWSTR) - DO NZA = 1,NNZA - J = AROW(NZA) - FIRSTROW + 1 - K = ROWSTR(J) - A(K) = AELT(NZA) - COLIDX(K) = ACOL(NZA) - ROWSTR(J) = ROWSTR(J) + 1 - ENDDO -!DVM$ ACTUAL (A,COLIDX,ROWSTR) - -!--------------------------------------------------------------------- -! ... rowstr(j) now points to the first element of row j+1 -!--------------------------------------------------------------------- -!DVM$ REGION -!DVM$ PARALLEL (J), PRIVATE (J),TIE (ROWSTR(J)),ACROSS (ROWSTR(1:0)) - DO J = NROWS,1,(-(1)) - ROWSTR(J + 1) = ROWSTR(J) - ENDDO -!DVM$ END REGION - ROWSTR(1) = 1 -!DVM$ ACTUAL (ROWSTR(1)) - -!--------------------------------------------------------------------- -! ... generate the actual output rows by adding elements -!--------------------------------------------------------------------- - NZA = 0 -!DVM$ GET_ACTUAL (MARK,X) - DO I = 1,N - X(I) = 0.0 - MARK(I) = .FALSE. - ENDDO -!DVM$ ACTUAL (MARK,X) -!DVM$ GET_ACTUAL (ROWSTR) - JAJP1 = ROWSTR(1) -!DVM$ GET_ACTUAL (A,COLIDX,MARK,NZLOC,ROWSTR,X) - DO J = 1,NROWS - NZROW = 0 - -!--------------------------------------------------------------------- -! ...loop over the jth row of a -!--------------------------------------------------------------------- - DO K = JAJP1,ROWSTR(J + 1) - 1 - I = COLIDX(K) - X(I) = X(I) + A(K) - IF (.NOT.(MARK(I)) .AND. X(I) .NE. 0.D0) THEN - MARK(I) = .TRUE. - NZROW = NZROW + 1 - NZLOC(NZROW) = I - ENDIF - ENDDO - -!--------------------------------------------------------------------- -! ... extract the nonzeros of this row -!--------------------------------------------------------------------- - DO K = 1,NZROW - I = NZLOC(K) - MARK(I) = .FALSE. - XI = X(I) - X(I) = 0.D0 - IF (XI .NE. 0.D0) THEN - NZA = NZA + 1 - A(NZA) = XI - COLIDX(NZA) = I - ENDIF - ENDDO - JAJP1 = ROWSTR(J + 1) - ROWSTR(J + 1) = NZA + ROWSTR(1) - ENDDO -!DVM$ ACTUAL (A,COLIDX,MARK,NZLOC,ROWSTR,X) - -!C write (*, 11000) nza - RETURN -11000 FORMAT ( //,'final nonzero count in sparse ', /,'n - &umber of nonzeros = ', I16 ) - END - - -!-------end of sparse----------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE SPRNVC (N, NZ, V, IV, NZLOC, MARK) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION :: V(*) - INTEGER :: N,NZ,IV(*),NZLOC(N),NN1 - INTEGER :: MARK(N) - COMMON /URANDO/AMULT,TRAN - DOUBLE PRECISION :: AMULT,TRAN - -!--------------------------------------------------------------------- -! generate a sparse n-vector (v, iv) -! having nzv nonzeros -! -! mark(i) is set to 1 if position i is nonzero. -! mark is all zero on entry and is reset to all zero before exit -! this corrects a performance bug found by John G. Lewis, caused by -! reinitialization of mark on every one of the n calls to sprnvc -!--------------------------------------------------------------------- - INTEGER :: NZROW,NZV,II,I,ICNVRT - EXTERNAL RANDLC,ICNVRT - DOUBLE PRECISION :: RANDLC,VECELT,VECLOC - INTENT(INOUT) MARK,NZLOC - INTENT(IN) NZ,N - INTENT(OUT) IV,V - NZV = 0 - NZROW = 0 - NN1 = 1 -50 CONTINUE - NN1 = 2 * NN1 - IF (NN1 .LT. N) GOTO 50 - -!--------------------------------------------------------------------- -! nn1 is the smallest power of two not less than n -!--------------------------------------------------------------------- -100 CONTINUE - IF (NZV .GE. NZ) GOTO 110 - VECELT = RANDLC (TRAN,AMULT) - -!--------------------------------------------------------------------- -! generate an integer between 1 and n in a portable manner -!--------------------------------------------------------------------- - VECLOC = RANDLC (TRAN,AMULT) - I = ICNVRT (VECLOC,NN1) + 1 - IF (I .GT. N) GOTO 100 - -!--------------------------------------------------------------------- -! was this integer generated already? -!--------------------------------------------------------------------- - IF (MARK(I) .EQ. 0) THEN - MARK(I) = 1 -!DVM$ ACTUAL (MARK(I)) - NZROW = NZROW + 1 - NZLOC(NZROW) = I -!DVM$ ACTUAL (NZLOC(NZROW)) - NZV = NZV + 1 - V(NZV) = VECELT - IV(NZV) = I - ENDIF - GOTO 100 -110 CONTINUE -!DVM$ GET_ACTUAL (MARK,NZLOC) - DO II = 1,NZROW - I = NZLOC(II) - MARK(I) = 0 - ENDDO -!DVM$ ACTUAL (MARK) - RETURN - END - - -!-------end of sprnvc----------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - FUNCTION ICNVRT (X, IPWR2) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - DOUBLE PRECISION :: X - INTEGER :: IPWR2,ICNVRT - INTENT(IN) IPWR2,X - -!--------------------------------------------------------------------- -! scale a double precision number x in (0,1) by a power of 2 and chop it -!--------------------------------------------------------------------- - ICNVRT = INT (IPWR2 * X) - RETURN - END - - -!-------end of icnvrt----------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - SUBROUTINE VECSET (N, V, IV, NZV, I, VAL) - -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - IMPLICIT NONE - INTEGER :: N,IV(*),NZV,I,K - DOUBLE PRECISION :: V(*),VAL - -!--------------------------------------------------------------------- -! set ith element of sparse vector (v, iv) with -! nzv nonzeros to val -!--------------------------------------------------------------------- - LOGICAL :: SET - INTENT(INOUT) NZV,IV - INTENT(IN) VAL,I - INTENT(OUT) V - SET = .FALSE. -!DVM$ GET_ACTUAL (IV,V) - DO K = 1,NZV - IF (IV(K) .EQ. I) THEN - V(K) = VAL - SET = .TRUE. - ENDIF - ENDDO -!DVM$ ACTUAL (V) - IF (.NOT.(SET)) THEN - NZV = NZV + 1 - V(NZV) = VAL - IV(NZV) = I - ENDIF - RETURN - -!-------end of vecset----------------------------- - END - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/mpinpb.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/mpinpb.h deleted file mode 100644 index 1f0368c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/mpinpb.h +++ /dev/null @@ -1,9 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'mpif.h' - - integer me, nprocs, root, dp_type - common /mpistuff/ me, nprocs, root, dp_type - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/npbparams.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/npbparams.h deleted file mode 100644 index bfac73d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/npbparams.h +++ /dev/null @@ -1,40 +0,0 @@ -c NPROCS = 4 CLASS = D -c -c -c This file is generated automatically by the setparams utility. -c It sets the number of processors and the class of the NPB -c in this directory. Do not modify it by hand. -c - integer na, nonzer, niter - double precision shift, rcond - parameter( na=1500000, - > nonzer=21, - > niter=100, - > shift=500., - > rcond=1.0d-1 ) - -c number of nodes for which this version is compiled - integer nnodes_compiled - parameter( nnodes_compiled = 4) - integer num_proc_cols, num_proc_rows - parameter( num_proc_cols=2, num_proc_rows=2 ) - logical convertdouble - parameter (convertdouble = .false.) - character*11 compiletime - parameter (compiletime='23 Nov 2022') - character*5 npbversion - parameter (npbversion='3.3.1') - character*36 cs1 - parameter (cs1='mpiifort -qopenmp -O3 -mcmodel=large') - character*37 cs2 - parameter (cs2='mpiifort -qopenmp -O3 -mcmodel=large') - character*6 cs3 - parameter (cs3='(none)') - character*6 cs4 - parameter (cs4='(none)') - character*6 cs5 - parameter (cs5='(none)') - character*6 cs6 - parameter (cs6='(none)') - character*6 cs7 - parameter (cs7='randdp') diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/timing.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/timing.h deleted file mode 100644 index 2000af1..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/CG_dvmh/timing.h +++ /dev/null @@ -1,5 +0,0 @@ - integer t_total, t_conjg, t_rcomm, t_ncomm, t_last - parameter (t_total=1, t_conjg=2, t_rcomm=3, t_ncomm=4, t_last=4) - - logical timeron - common /timers/ timeron diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/Makefile deleted file mode 100644 index fd0bd56..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -SHELL=/bin/sh -BENCHMARK=ep -BENCHMARKU=EP - -include ../config/make_dvmh.def - -OBJS = ep.o ${COMMON}/print_results.o ${COMMON}/${RAND}.o ${COMMON}/timers.o - -include ../sys/make.common - -${PROGRAM}: config ${OBJS} - ${FLINK} ${FLINKFLAGS} -o ${PROGRAM}_dvmh ${OBJS} ${FMPI_LIB} - - -ep.o: ep.for mpinpb.h npbparams.h - ${FCOMPILE} ep.for - -clean: - - rm -f *.o *~ - - rm -f npbparams.h core - - - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/README b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/README deleted file mode 100644 index 6eb3657..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/README +++ /dev/null @@ -1,6 +0,0 @@ -This code implements the random-number generator described in the -NAS Parallel Benchmark document RNR Technical Report RNR-94-007. -The code is "embarrassingly" parallel in that no communication is -required for the generation of the random numbers itself. There is -no special requirement on the number of processors used for running -the benchmark. diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/ep.for b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/ep.for deleted file mode 100644 index 9c76689..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/ep.for +++ /dev/null @@ -1,405 +0,0 @@ - -! *** generated by SAPFOR with version 1756 and build date: Mar 23 2021 12:41:48 - -!-------------------------------------------------------------------------! -! ! -! N A S P A R A L L E L B E N C H M A R K S 3.3 ! -! ! -! E P ! -! ! -!-------------------------------------------------------------------------! -! ! -! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. ! -! It is described in NAS Technical Reports 95-020 and 02-007 ! -! ! -! Permission to use, copy, distribute and modify this software ! -! for any purpose with or without fee is hereby granted. We ! -! request, however, that all derived work reference the NAS ! -! Parallel Benchmarks 3.3. This software is provided "as is" ! -! without express or implied warranty. ! -! ! -! Information on NPB 3.3, including the technical report, the ! -! original specifications, source code, results and information ! -! on how to submit new results, is available at: ! -! ! -! http://www.nas.nasa.gov/Software/NPB/ ! -! ! -! Send comments or suggestions to npb@nas.nasa.gov ! -! ! -! NAS Parallel Benchmarks Group ! -! NASA Ames Research Center ! -! Mail Stop: T27A-1 ! -! Moffett Field, CA 94035-1000 ! -! ! -! E-mail: npb@nas.nasa.gov ! -! Fax: (650) 604-3957 ! -! ! -!-------------------------------------------------------------------------! -!--------------------------------------------------------------------- -! -! Authors: P. O. Frederickson -! D. H. Bailey -! A. C. Woo -! R. F. Van der Wijngaart -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - program embar - -!--------------------------------------------------------------------- -! -! This is the MPI version of the APP Benchmark 1, -! the "embarassingly parallel" benchmark. -! -! -! M is the Log_2 of the number of complex pairs of uniform (0, 1) random -! numbers. MK is the Log_2 of the size of each batch of uniform random -! numbers. MK can be set for convenience on a given system, since it does -! not affect the results. -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- -!--------------------------------------------------------------------- - implicit none - - include 'mpinpb.h' - include 'npbparams.h' - double precision :: mops,epsilon,a,s,t1,t2,t3,t4,x,x1,x2,q,sx,sy, - &tm,an,tt,gc,dum(3),timer_read - double precision :: sx_verify_value,sy_verify_value,sx_err,sy_err - integer :: mk,mm,nn,nk,nq,np,ierr,node,no_nodes,i,ik,kk,l,k,nit,i - &errcode,no_large_nodes,np_add,k_offset,j - logical :: verified,timers_enabled - external randlc,timer_read - double precision :: randlc,qq - character*15 :: size - integer :: fstatus - integer :: t_total,t_gpairs,t_randn,t_rcomm,t_last - parameter (t_total = 1,t_gpairs = 2,t_randn = 3,t_rcomm = 4,t_last - & = 4) - double precision :: tsum(t_last + 2),t1m(t_last + 2),tming(t_last - & + 2),tmaxg(t_last + 2) - character :: t_recs(t_last + 2)*8 - parameter (mk = 16,mm = m - mk,nn = 2** mm,nk = 2** mk,nq = 10,eps - &ilon = 1.d-8,a = 1220703125.d0,s = 271828183.d0) - common /storage/x(2 * nk),q(0:nq - 1),qq(10000) - data dum /1.d0, 1.d0, 1.d0/ - data t_recs/'total', 'gpairs', 'randn', 'rcomm', ' totc - &omp', ' totcomm'/ - double precision :: r23_0,r23_1,r46_0,r46_1,t23_0,t23_1,t46_0,t46 - &_1 - parameter (r23_0 = 0.5d0** 23,t23_0 = 2.d0** 23,t23_1 = 2.d0** 23, - &r23_1 = 0.5d0** 23,r46_0 = r23_0** 2,t46_0 = t23_0** 2,t46_1 = t23 - &_1** 2,r46_1 = r23_1** 2) - double precision :: a1_0,a1_2,a2_0,a2_2,randlc_0,t1_0,t1_2,t2_0,t - &2_2,t3_0,t3_2,t4_0,t4_2,x1_0,x1_2,x2_0,x2_2,z_0,z_2,arg0 - integer :: arg_0,i_0 - intrinsic int - call mpi_init(ierr) - call mpi_comm_rank(mpi_comm_world,node,ierr) - call mpi_comm_size(mpi_comm_world,no_nodes,ierr) - root = 0 - if (.not.(convertdouble)) then - dp_type = mpi_double_precision - else - dp_type = mpi_real - endif - if (node .eq. root) then - -! Because the size of the problem is too large to store in a 32-bit -! integer for some classes, we put it into a string (for printing). -! Have to strip off the decimal point put in there by the floating -! point print statement (internal file) - write (unit = *,fmt = 1000) - write (unit = size,fmt = '(f15.0)') 2.d0** (m + 1) - j = 15 - if (size(j:j) .eq. '.') j = j - 1 - write (unit = *,fmt = 1001) size(1:j) - write (unit = *,fmt = 1003) no_nodes -1000 format(/,' NAS Parallel Benchmarks 3.3 -- EP Benchmark - &',/) -1001 format(' Number of random numbers generated: ', a1 - &5) -1003 format(' Number of active processes: ', 2x - &, i13, /) - open (unit = 2,file = 'timer.flag',status = 'old',iostat = fsta - &tus) - timers_enabled = .FALSE. - if (fstatus .eq. 0) then - timers_enabled = .TRUE. - close (unit = 2) - endif - endif - call mpi_bcast(timers_enabled,1,mpi_logical,root,mpi_comm_world,ie - &rr) - verified = .FALSE. - -! Compute the number of "batches" of random number pairs generated -! per processor. Adjust if the number of processors does not evenly -! divide the total number - np = nn / no_nodes - no_large_nodes = mod (nn,no_nodes) - if (node .lt. no_large_nodes) then - np_add = 1 - else - np_add = 0 - endif - np = np + np_add - if (np .eq. 0) then - write (unit = 6,fmt = 1) no_nodes,nn -1 format ('Too many nodes:',2i6) - ierrcode = 1 - call mpi_abort(mpi_comm_world,ierrcode,ierr) - stop - endif - -! Call the random number generator functions and initialize -! the x-array to reduce the effects of paging on the timings. -! Also, call all mathematical functions that are used. Make -! sure these initializations cannot be eliminated as dead code. -!DVM$ GET_ACTUAL (dum) - call vranlc(0,dum(1),dum(2),dum(3)) -!DVM$ ACTUAL (dum) - dum(1) = randlc (dum(2),dum(3)) -!DVM$ ACTUAL (dum) -!DVM$ REGION -!DVM$ PARALLEL (i), PRIVATE (i),TIE (x(i)) - do i = 1,2 * nk - x(i) = (-(1.d99)) - enddo -!DVM$ END REGION - mops = log (sqrt (abs (max (1.d0,1.d0)))) - -!--------------------------------------------------------------------- -! Synchronize before placing time stamp -!--------------------------------------------------------------------- - do i = 1,t_last - call timer_clear(i) - enddo - call mpi_barrier(mpi_comm_world,ierr) - call timer_start(1) - t1 = a - call vranlc(0,t1,a,x) - -! Compute AN = A ^ (2 * NK) (mod 2^46). - t1 = a - do i = 1,mk + 1 - t2 = randlc (t1,t1) - enddo - an = t1 - tt = s - gc = 0.d0 - sx = 0.d0 - sy = 0.d0 - do i = 0,nq - 1 - q(i) = 0.d0 - enddo - -! Each instance of this loop may be performed independently. We compute -! the k offsets separately to take into account the fact that some nodes -! have more numbers to generate than others - if (np_add .eq. 1) then - k_offset = node * np - 1 - else - k_offset = no_large_nodes * (np + 1) + (node - no_large_nodes) - &* np - 1 - endif -!DVM$ REGION -!DVM$ PARALLEL(k),private( kk, t1, t2, i, ik, t1_0,a1_0,a2_0,x1_0,x2_0, -!DVM$& t2_0, z_0, t3_0, t4_0, randlc_0, t3, arg_0, t1_2, a1_2, a2_2, -!DVM$& i_0, x1_2, x2_2, t2_2, z_2, t3_2, t4_2,x1,x2,arg0,t4,l), -!DVM$& reduction (sum(q),sum(sy),sum(sx)) - do k = 1,np - kk = k_offset + k - t1 = s - t2 = an - -! Find starting seed t1 for this kk. - do i = 1,100 - ik = kk / 2 - if (2 * ik .ne. kk) then - t1_0 = r23_0 * t2 - a1_0 = int (t1_0) - a2_0 = t2 - t23_0 * a1_0 - t1_0 = r23_0 * t1 - x1_0 = int (t1_0) - x2_0 = t1 - t23_0 * x1_0 - t1_0 = a1_0 * x2_0 + a2_0 * x1_0 - t2_0 = int (r23_0 * t1_0) - z_0 = t1_0 - t23_0 * t2_0 - t3_0 = t23_0 * z_0 + a2_0 * x2_0 - t4_0 = int (r46_0 * t3_0) - t1 = t3_0 - t46_0 * t4_0 - randlc_0 = r46_0 * t1 - t3 = randlc_0 - endif - if (ik .eq. 0) goto 130 - t1_0 = r23_0 * t2 - a1_0 = int (t1_0) - a2_0 = t2 - t23_0 * a1_0 - t1_0 = r23_0 * t2 - x1_0 = int (t1_0) - x2_0 = t2 - t23_0 * x1_0 - t1_0 = a1_0 * x2_0 + a2_0 * x1_0 - t2_0 = int (r23_0 * t1_0) - z_0 = t1_0 - t23_0 * t2_0 - t3_0 = t23_0 * z_0 + a2_0 * x2_0 - t4_0 = int (r46_0 * t3_0) - t2 = t3_0 - t46_0 * t4_0 - randlc_0 = r46_0 * t2 - t3 = randlc_0 - kk = ik - enddo - -! Compute uniform pseudorandom numbers. -130 continue - arg_0 = 2 * nk - t1_2 = r23_1 * a - a1_2 = int (t1_2) - a2_2 = a - t23_1 * a1_2 - do i_0 = 1,nk - t1_2 = r23_1 * t1 - x1_2 = int (t1_2) - x2_2 = t1 - t23_1 * x1_2 - t1_2 = a1_2 * x2_2 + a2_2 * x1_2 - t2_2 = int (r23_1 * t1_2) - z_2 = t1_2 - t23_1 * t2_2 - t3_2 = t23_1 * z_2 + a2_2 * x2_2 - t4_2 = int (r46_1 * t3_2) - t1 = t3_2 - t46_1 * t4_2 - x1 = r46_1 * t1 - t1_2 = r23_1 * t1 - x1_2 = int (t1_2) - x2_2 = t1 - t23_1 * x1_2 - t1_2 = a1_2 * x2_2 + a2_2 * x1_2 - t2_2 = int (r23_1 * t1_2) - z_2 = t1_2 - t23_1 * t2_2 - t3_2 = t23_1 * z_2 + a2_2 * x2_2 - t4_2 = int (r46_1 * t3_2) - t1 = t3_2 - t46_1 * t4_2 - x2 = r46_1 * t1 - -! x1 = 2.d0 * x(2 * i_0 - 1) - 1.d0 -! x2 = 2.d0 * x(2 * i_0) - 1.d0 - x1 = 2.d0 * x1 - 1.d0 - x2 = 2.d0 * x2 - 1.d0 - arg0 = x1** 2 + x2** 2 - if (arg0 .le. 1.d0) then - t2 = sqrt ((-(2.d0)) * log (arg0) / arg0) - t3 = x1 * t2 - t4 = x2 * t2 - l = max (abs (t3),abs (t4)) - q(l) = q(l) + 1.d0 - sx = sx + t3 - sy = sy + t4 - endif - enddo - -! if (timers_enabled) call timer_stop(t_gpairs) - enddo -!DVM$ END REGION - if (timers_enabled) call timer_start(t_rcomm) -!DVM$ GET_ACTUAL (x) - call mpi_allreduce(sx,x,1,dp_type,mpi_sum,mpi_comm_world,ierr) -!DVM$ ACTUAL (x) - sx = x(1) -!DVM$ GET_ACTUAL (x) - call mpi_allreduce(sy,x,1,dp_type,mpi_sum,mpi_comm_world,ierr) -!DVM$ ACTUAL (x) - sy = x(1) -!DVM$ GET_ACTUAL (x) - call mpi_allreduce(q,x,nq,dp_type,mpi_sum,mpi_comm_world,ierr) -!DVM$ ACTUAL (x) - if (timers_enabled) call timer_stop(t_rcomm) -!DVM$ REGION -!DVM$ PARALLEL (i), PRIVATE (i),TIE (x(i)) - do i = 1,nq - q(i - 1) = x(i) - enddo -!DVM$ END REGION - do i = 0,nq - 1 - gc = gc + q(i) - enddo - call timer_stop(1) - tm = timer_read (1) -!DVM$ GET_ACTUAL (x) - call mpi_allreduce(tm,x,1,dp_type,mpi_max,mpi_comm_world,ierr) -!DVM$ ACTUAL (x) - tm = x(1) - if (node .eq. root) then - nit = 0 - verified = .TRUE. - if (m .eq. 24) then - sx_verify_value = (-(3.247834652034740d+3)) - sy_verify_value = (-(6.958407078382297d+3)) - else if (m .eq. 25) then - sx_verify_value = (-(2.863319731645753d+3)) - sy_verify_value = (-(6.320053679109499d+3)) - else if (m .eq. 28) then - sx_verify_value = (-(4.295875165629892d+3)) - sy_verify_value = (-(1.580732573678431d+4)) - else if (m .eq. 30) then - sx_verify_value = 4.033815542441498d+4 - sy_verify_value = (-(2.660669192809235d+4)) - else if (m .eq. 32) then - sx_verify_value = 4.764367927995374d+4 - sy_verify_value = (-(8.084072988043731d+4)) - else if (m .eq. 36) then - sx_verify_value = 1.982481200946593d+5 - sy_verify_value = (-(1.020596636361769d+5)) - else if (m .eq. 40) then - sx_verify_value = (-(5.319717441530d+05)) - sy_verify_value = (-(3.688834557731d+05)) - else - verified = .FALSE. - endif - if (verified) then - sx_err = abs ((sx - sx_verify_value) / sx_verify_value) - sy_err = abs ((sy - sy_verify_value) / sy_verify_value) - verified = sx_err .le. epsilon .and. sy_err .le. epsilon - endif - mops = 2.d0** (m + 1) / tm / 1000000.d0 - write (unit = 6,fmt = 11) tm,m,gc,sx,sy,(i,q(i), i = 0,nq - 1) -11 format ('EP Benchmark Results:'//'CPU Time =',f10.4 - &/'N = 2^', i5/'No. Gaussian Pairs =',f15.0/'Sums = ',1p, - &2d25.15/ 'Counts:'/(i3,0p,f15.0)) - call print_results('EP',class,32 + 1,0,0,nit,npm,no_nodes,tm,mo - &ps,'Random numbers generated',verified,npbversion,compiletime,cs1, - &cs2,cs3,cs4,cs5,cs6,cs7) - endif - if (.not.(timers_enabled)) goto 999 -!DVM$ GET_ACTUAL (t1m) - do i = 1,t_last - t1m(i) = timer_read (i) - enddo -!DVM$ ACTUAL (t1m) - t1m(t_last + 2) = t1m(t_rcomm) -!DVM$ ACTUAL (t1m(t_last + 2)) - t1m(t_last + 1) = t1m(t_total) - t1m(t_last + 2) -!DVM$ ACTUAL (t1m(t_last + 1)) - call mpi_reduce(t1m,tsum,4 + 2,dp_type,mpi_sum,0,mpi_comm_world,ie - &rr) -!DVM$ GET_ACTUAL (t1m) - call mpi_reduce(t1m,tming,4 + 2,dp_type,mpi_min,0,mpi_comm_world,i - &err) -!DVM$ GET_ACTUAL (t1m) - call mpi_reduce(t1m,tmaxg,4 + 2,dp_type,mpi_max,0,mpi_comm_world,i - &err) - if (node .eq. 0) then - write (unit = *,fmt = 800) no_nodes -!DVM$ GET_ACTUAL (t_recs,tmaxg,tming,tsum) - do i = 1,t_last + 2 - tsum(i) = tsum(i) / no_nodes - write (unit = *,fmt = 810) i,t_recs(i),tming(i),tmaxg(i),tsu - &m(i) - enddo -!DVM$ ACTUAL (tsum) - endif -800 format(' nprocs =', i6, 11x, 'minimum', 5x, 'maximum', 5x, - &'average') -810 format(' timer ', i2, '(', A8, ') :', 3(2x,f10.4)) -999 continue - call mpi_finalize(ierr) - end - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/mpinpb.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/mpinpb.h deleted file mode 100644 index 1f13637..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/mpinpb.h +++ /dev/null @@ -1,9 +0,0 @@ - -c--------------------------------------------------------------------- -c--------------------------------------------------------------------- - - include 'mpif.h' - - integer me, nprocs, root, dp_type - common /mpistuff/ me, nprocs, root, dp_type - diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/npbparams.h b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/npbparams.h deleted file mode 100644 index 9770fe3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/EP_dvmh/npbparams.h +++ /dev/null @@ -1,31 +0,0 @@ -c NPROCS = 4 CLASS = D -c -c -c This file is generated automatically by the setparams utility. -c It sets the number of processors and the class of the NPB -c in this directory. Do not modify it by hand. -c - character class - parameter (class ='D') - integer m, npm - parameter (m=36, npm=4) - logical convertdouble - parameter (convertdouble = .false.) - character*11 compiletime - parameter (compiletime='23 Nov 2022') - character*5 npbversion - parameter (npbversion='3.3.1') - character*36 cs1 - parameter (cs1='mpiifort -qopenmp -O3 -mcmodel=large') - character*37 cs2 - parameter (cs2='mpiifort -qopenmp -O3 -mcmodel=large') - character*6 cs3 - parameter (cs3='(none)') - character*6 cs4 - parameter (cs4='(none)') - character*6 cs5 - parameter (cs5='(none)') - character*6 cs6 - parameter (cs6='(none)') - character*6 cs7 - parameter (cs7='randdp') diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/clear.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/clear.bat deleted file mode 100644 index 13594b8..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/clear.bat +++ /dev/null @@ -1,21 +0,0 @@ -@echo off - -@set TESTS=bt sp lu mg ep cg ft -@set CLASSES=A B C - -if exist err.txt del err.txt -if exist bin rmdir /S /Q bin - -@for %%T in (%TESTS%) do ( - cd %%T - if exist comp.err del comp.err - if exist dvm.err del dvm.err - if exist *.f del *.f - if exist *.cu del *.cu - if exist *info.c del *info.c - @for %%C in (%CLASSES%) do ( - if exist err_%%C.txt del err_%%C.txt - if exist out_%%C.txt del out_%%C.txt - ) - cd ../ -) diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.bat deleted file mode 100644 index 65c6572..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -@set TESTS=BT SP LU MG EP CG FT - -@CALL config\make.def.bat - -if not exist bin mkdir bin -cd sys -if not exist setparams.exe CALL %DVM% cc setparams -cd ../ -@for %%T in (%TESTS%) do ( - START compileTest.bat %%T -) \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.sh deleted file mode 100644 index 4434f82..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compile.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -TESTS="BT SP LU MG EP CG FT" -CLASSES="A B C" - -compile_one() { - cd $1 - make CLASS=$2 - cd .. -} - -mkdir -p bin - -export FOPT="$*" -for tn in $TESTS; do - for cn in $CLASSES; do - compile_one $tn $cn - done -done - -exit 0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compileTest.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compileTest.bat deleted file mode 100644 index 5db07de..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/compileTest.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -@set CLASSES=A B C -@set Test=%1 - @for %%C in (%CLASSES%) do ( - cd %Test% - echo ### compiling test %Test%, class %%C. - CALL make.bat %%C - cd ../ - ) -exit \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def deleted file mode 100644 index 905457b..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def +++ /dev/null @@ -1,8 +0,0 @@ -F77 = dvm f -shared-dvm -FLINK = dvm flink -shared-dvm - -FFLAGS = ${FOPT} - -UCC = cc - -BINDIR = ../bin diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def.bat deleted file mode 100644 index 15c8592..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/config/make_dvmh.def.bat +++ /dev/null @@ -1,8 +0,0 @@ -rem @echo off -rem ### SET DVM PATH### -set DVMDIR= - -set DVM=%DVMDIR%\dvm -set F77=%DVMDIR%\dvm f -set RUN=%DVMDIR%\dvm run -set BIN=..\bin \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.bat b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.bat deleted file mode 100644 index 137802c..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.bat +++ /dev/null @@ -1,15 +0,0 @@ -@echo off - -@set TESTS=bt sp lu mg ep cg ft -@set CLASSES=A B C - -@CALL config\make.def.bat - -if exist res.txt del res.txt -cd bin -@for %%T in (%TESTS%) do ( - @for %%C in (%CLASSES%) do ( - CALL %RUN% %%T.%%C.x.exe 1>>..\res.txt 2>>..\err.txt - ) -) -cd ../ \ No newline at end of file diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.sh deleted file mode 100644 index e820404..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/run.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -TESTS="bt sp lu mg ep cg ft" -CLASSES="A B C" - -ALL_OK=1 - -run_one() { - if [ -f "$1" ]; then - dvm run $PROC_GRID $1 - ALL_OK=$(( ALL_OK && $? == 0 )) - else - ALL_OK=0 - fi -} - -cd bin - -for tn in $TESTS; do - for cn in $CLASSES; do - run_one $tn.$cn.x - done -done - -if [ $ALL_OK -ne 0 ]; then - echo " END OF NPB Benchmarks" -fi - -exit 0 diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/Makefile b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/Makefile deleted file mode 100644 index 9fd8e5f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -include ../config/make.def - -all: setparams - -# setparams creates an npbparam.h file for each benchmark -# configuration. npbparams.h also contains info about how a benchmark -# was compiled and linked - -setparams: setparams.c ../config/make.def - $(UCC) -o setparams setparams.c - -clean: - -rm -f setparams setparams.h npbparams.h - -rm -f *~ *.o diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/make.common b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/make.common deleted file mode 100644 index 959951d..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/make.common +++ /dev/null @@ -1,31 +0,0 @@ -PROGRAM = $(BINDIR)/$(BENCHMARK).$(CLASS).x - -# Class "U" is used internally by the setparams program to mean -# "unknown". This means that if you don't specify CLASS= -# on the command line, you'll get an error. It would be nice -# to be able to avoid this, but we'd have to get information -# from the setparams back to the make program, which isn't easy. -CLASS=U - -default:: ${PROGRAM} - -# This makes sure the configuration utility setparams -# is up to date. -# Note that this must be run every time, which is why the -# target does not exist and is not created. -# If you create a file called "config" you will break things. -config: - @cd ../sys; ${MAKE} all - ../sys/setparams ${BENCHMARK} ${CLASS} - -# Normally setparams updates npbparams.h only if the settings (CLASS) -# have changed. However, we also want to update if the compile options -# may have changed (set in ../config/make.def). -npbparams.h: ../config/make.def - @ echo make.def modified. Rebuilding npbparams.h just in case - rm -f npbparams.h - ../sys/setparams ${BENCHMARK} ${CLASS} - -# So that "make benchmark-name" works -${BENCHMARK}: default -${BENCHMARKU}: default diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/setparams.c b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/setparams.c deleted file mode 100644 index 63d2442..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/MPI+FDVMH.fdv/sys/setparams.c +++ /dev/null @@ -1,1224 +0,0 @@ -/* - * This utility configures a NPB to be built for a specific number - * of nodes and a specific class. It creates a file "npbparams.h" - * in the source directory. This file keeps state information about - * which size of benchmark is currently being built (so that nothing - * if unnecessarily rebuilt) and defines (through PARAMETER statements) - * the number of nodes and class for which a benchmark is being built. - - * The utility takes 3 arguments: - * setparams benchmark-name nprocs class - * benchmark-name is "sp", "bt", etc - * nprocs is the number of processors to run on - * class is the size of the benchmark - * These parameters are checked for the current benchmark. If they - * are invalid, this program prints a message and aborts. - * If the parameters are ok, the current npbsize.h (actually just - * the first line) is read in. If the new parameters are the same as - * the old, nothing is done, but an exit code is returned to force the - * user to specify (otherwise the make procedure succeeds but builds a - * binary of the wrong name). Otherwise the file is rewritten. - * Errors write a message (to stdout) and abort. - * - * This program makes use of two extra benchmark "classes" - * class "X" means an invalid specification. It is returned if - * there is an error parsing the config file. - * class "U" is an external specification meaning "unknown class" - * - * Unfortunately everything has to be case sensitive. This is - * because we can always convert lower to upper or v.v. but - * can't feed this information back to the makefile, so typing - * make CLASS=a and make CLASS=A will produce different binaries. - * - * - */ - -#include -#include -#include -#include -#include -#include - -/* - * This is the master version number for this set of - * NPB benchmarks. It is in an obscure place so people - * won't accidentally change it. - */ - -#define VERSION "3.3.1" - -/* controls verbose output from setparams */ -/* #define VERBOSE */ - -#define FILENAME "npbparams.h" -#define DESC_LINE "c NPROCS = %d CLASS = %c\n" -#define BT_DESC_LINE "c NPROCS = %d CLASS = %c SUBTYPE = %s\n" -#define DEF_CLASS_LINE "#define CLASS '%c'\n" -#define DEF_NUM_PROCS_LINE "#define NUM_PROCS %d\n" -#define FINDENT " " -#define CONTINUE " > " - -#ifdef FORTRAN_REC_SIZE -int fortran_rec_size = FORTRAN_REC_SIZE; -#else -int fortran_rec_size = 4; -#endif - -void get_info(int argc, char *argv[], int *typep, int *nprocsp, char *classp, - int* subtypep); -void check_info(int type, int nprocs, char class); -void read_info(int type, int *nprocsp, char *classp, int *subtypep); -void write_info(int type, int nprocs, char class, int subtype); -void write_sp_info(FILE *fp, int nprocs, char class); -void write_bt_info(FILE *fp, int nprocs, char class, int io); -void write_lu_info(FILE *fp, int nprocs, char class); -void write_mg_info(FILE *fp, int nprocs, char class); -void write_cg_info(FILE *fp, int nprocs, char class); -void write_ft_info(FILE *fp, int nprocs, char class); -void write_ep_info(FILE *fp, int nprocs, char class); -void write_is_info(FILE *fp, int nprocs, char class); -void write_dt_info(FILE *fp, int nprocs, char class); -void write_compiler_info(int type, FILE *fp); -void write_convertdouble_info(int type, FILE *fp); -void check_line(char *line, char *label, char *val); -int check_include_line(char *line, char *filename); -void put_string(FILE *fp, char *name, char *val); -void put_def_string(FILE *fp, char *name, char *val); -void put_def_variable(FILE *fp, char *name, char *val); -int isqrt(int i); -int ilog2(int i); -int ipow2(int i); -int isqrt2(int i); - -enum benchmark_types {SP, BT, LU, MG, FT, IS, DT, EP, CG}; -enum iotypes { NONE = 0, FULL, SIMPLE, EPIO, FORTRAN}; - -int main(int argc, char *argv[]) -{ - int nprocs, nprocs_old, type; - char class, class_old; - int subtype = -1, old_subtype = -1; - - /* Get command line arguments. Make sure they're ok. */ - get_info(argc, argv, &type, &nprocs, &class, &subtype); - if (class != 'U') { -#ifdef VERBOSE - printf("setparams: For benchmark %s: number of processors = %d class = %c\n", - argv[1], nprocs, class); -#endif - check_info(type, nprocs, class); - } - - /* Get old information. */ - read_info(type, &nprocs_old, &class_old, &old_subtype); - if (class != 'U') { - if (class_old != 'X') { -#ifdef VERBOSE - printf("setparams: old settings: number of processors = %d class = %c\n", - nprocs_old, class_old); -#endif - } - } else { - printf("setparams:\n\ - *********************************************************************\n\ - * You must specify NPROCS and CLASS to build this benchmark *\n\ - * For example, to build a class A benchmark for 4 processors, type *\n\ - * make {benchmark-name} NPROCS=4 CLASS=A *\n\ - *********************************************************************\n\n"); - - if (class_old != 'X') { -#ifdef VERBOSE - printf("setparams: Previous settings were CLASS=%c NPROCS=%d\n", - class_old, nprocs_old); -#endif - } - exit(1); /* exit on class==U */ - } - - /* Write out new information if it's different. */ - if (nprocs != nprocs_old || class != class_old || subtype != old_subtype) { -#ifdef VERBOSE - printf("setparams: Writing %s\n", FILENAME); -#endif - write_info(type, nprocs, class, subtype); - } else { -#ifdef VERBOSE - printf("setparams: Settings unchanged. %s unmodified\n", FILENAME); -#endif - } - - return 0; -} - - -/* - * get_info(): Get parameters from command line - */ - -void get_info(int argc, char *argv[], int *typep, int *nprocsp, char *classp, - int *subtypep) -{ - - if (argc < 4) { - printf("Usage: %s (%d) benchmark-name nprocs class\n", argv[0], argc); - exit(1); - } - - *nprocsp = atoi(argv[2]); - - *classp = *argv[3]; - - if (!strcmp(argv[1], "sp") || !strcmp(argv[1], "SP")) *typep = SP; - else if (!strcmp(argv[1], "ft") || !strcmp(argv[1], "FT")) *typep = FT; - else if (!strcmp(argv[1], "lu") || !strcmp(argv[1], "LU")) *typep = LU; - else if (!strcmp(argv[1], "mg") || !strcmp(argv[1], "MG")) *typep = MG; - else if (!strcmp(argv[1], "is") || !strcmp(argv[1], "IS")) *typep = IS; - else if (!strcmp(argv[1], "dt") || !strcmp(argv[1], "DT")) *typep = DT; - else if (!strcmp(argv[1], "ep") || !strcmp(argv[1], "EP")) *typep = EP; - else if (!strcmp(argv[1], "cg") || !strcmp(argv[1], "CG")) *typep = CG; - else if (!strcmp(argv[1], "bt") || !strcmp(argv[1], "BT")) { - *typep = BT; - if (argc != 5) { - /* printf("Usage: %s (%d) benchmark-name nprocs class\n", argv[0], argc); */ - /* exit(1); */ - *subtypep = NONE; - } else { - if (!strcmp(argv[4], "full") || !strcmp(argv[4], "FULL")) { - *subtypep = FULL; - } else if (!strcmp(argv[4], "simple") || !strcmp(argv[4], "SIMPLE")) { - *subtypep = SIMPLE; - } else if (!strcmp(argv[4], "epio") || !strcmp(argv[4], "EPIO")) { - *subtypep = EPIO; - } else if (!strcmp(argv[4], "fortran") || !strcmp(argv[4], "FORTRAN")) { - *subtypep = FORTRAN; - } else if (!strcmp(argv[4], "none") || !strcmp(argv[4], "NONE")) { - *subtypep = NONE; - } else { - printf("setparams: Error: unknown btio type %s\n", argv[4]); - exit(1); - } - } - } else { - printf("setparams: Error: unknown benchmark type %s\n", argv[1]); - exit(1); - } -} - -/* - * check_info(): Make sure command line data is ok for this benchmark - */ - -void check_info(int type, int nprocs, char class) -{ - int rootprocs, logprocs; - - /* check number of processors */ - if (nprocs <= 0) { - printf("setparams: Number of processors must be greater than zero\n"); - exit(1); - } - switch(type) { - - case SP: - case BT: - rootprocs = isqrt(nprocs); - if (rootprocs < 0) { - printf("setparams: Number of processors %d must be a square (1,4,9,...) for this benchmark", - nprocs); - exit(1); - } - if (class == 'S' && nprocs > 16) { - printf("setparams: BT and SP sample sizes cannot be run on more\n"); - printf(" than 16 processors because the cell size would be too small.\n"); - exit(1); - } - break; - - case LU: - rootprocs = isqrt2(nprocs); - if (rootprocs < 0) { - printf("setparams: Failed to determine proc_grid for nprocs=%d\n", - nprocs); - exit(1); - } - break; - - case CG: - case FT: - case MG: - case IS: - logprocs = ilog2(nprocs); - if (logprocs < 0) { - printf("setparams: Number of processors must be a power of two (1,2,4,...) for this benchmark\n"); - exit(1); - } - - break; - - case EP: - case DT: - break; - - default: - /* never should have gotten this far with a bad name */ - printf("setparams: (Internal Error) Benchmark type %d unknown to this program\n", type); - exit(1); - } - - /* check class */ - if (class != 'S' && - class != 'W' && - class != 'A' && - class != 'B' && - class != 'C' && - class != 'D' && - class != 'E') { - printf("setparams: Unknown benchmark class %c\n", class); - printf("setparams: Allowed classes are \"S\", \"W\", and \"A\" through \"E\"\n"); - exit(1); - } - - if (class == 'E' && (type == IS || type == DT)) { - printf("setparams: Benchmark class %c not defined for IS or DT\n", class); - exit(1); - } - - if (class == 'D' && type == IS && nprocs < 4) { - printf("setparams: IS class D size cannot be run on less than 4 processors\n"); - exit(1); - } -} - - -/* - * read_info(): Read previous information from file. - * Not an error if file doesn't exist, because this - * may be the first time we're running. - * Assumes the first line of the file is in a special - * format that we understand (since we wrote it). - */ - -void read_info(int type, int *nprocsp, char *classp, int *subtypep) -{ - int nread = 0; - FILE *fp; - fp = fopen(FILENAME, "r"); - if (fp == NULL) { -#ifdef VERBOSE - printf("setparams: INFO: configuration file %s does not exist (yet)\n", FILENAME); -#endif - goto abort; - } - - /* first line of file contains info (fortran), first two lines (C) */ - - switch(type) { - case BT: { - char subtype_str[100]; - nread = fscanf(fp, BT_DESC_LINE, nprocsp, classp, subtype_str); - if (nread != 3) { - if (nread != 2) { - printf("setparams: Error parsing config file %s. Ignoring previous settings\n", FILENAME); - goto abort; - } - *subtypep = 0; - break; - } - if (!strcmp(subtype_str, "full") || !strcmp(subtype_str, "FULL")) { - *subtypep = FULL; - } else if (!strcmp(subtype_str, "simple") || - !strcmp(subtype_str, "SIMPLE")) { - *subtypep = SIMPLE; - } else if (!strcmp(subtype_str, "epio") || !strcmp(subtype_str, "EPIO")) { - *subtypep = EPIO; - } else if (!strcmp(subtype_str, "fortran") || - !strcmp(subtype_str, "FORTRAN")) { - *subtypep = FORTRAN; - } else { - *subtypep = -1; - } - break; - } - - case SP: - case FT: - case MG: - case LU: - case EP: - case CG: - nread = fscanf(fp, DESC_LINE, nprocsp, classp); - if (nread != 2) { - printf("setparams: Error parsing config file %s. Ignoring previous settings\n", FILENAME); - goto abort; - } - break; - case IS: - case DT: - nread = fscanf(fp, DEF_CLASS_LINE, classp); - nread += fscanf(fp, DEF_NUM_PROCS_LINE, nprocsp); - if (nread != 2) { - printf("setparams: Error parsing config file %s. Ignoring previous settings\n", FILENAME); - goto abort; - } - break; - default: - /* never should have gotten this far with a bad name */ - printf("setparams: (Internal Error) Benchmark type %d unknown to this program\n", type); - exit(1); - } - - fclose(fp); - - - return; - - abort: - *nprocsp = -1; - *classp = 'X'; - *subtypep = -1; - return; -} - - -/* - * write_info(): Write new information to config file. - * First line is in a special format so we can read - * it in again. Then comes a warning. The rest is all - * specific to a particular benchmark. - */ - -void write_info(int type, int nprocs, char class, int subtype) -{ - FILE *fp; - char *BT_TYPES[] = {"NONE", "FULL", "SIMPLE", "EPIO", "FORTRAN"}; - - fp = fopen(FILENAME, "w"); - if (fp == NULL) { - printf("setparams: Can't open file %s for writing\n", FILENAME); - exit(1); - } - - switch(type) { - case BT: - /* Write out the header */ - if (subtype == -1 || subtype == 0) { - fprintf(fp, DESC_LINE, nprocs, class); - } else { - fprintf(fp, BT_DESC_LINE, nprocs, class, BT_TYPES[subtype]); - } - /* Print out a warning so bozos don't mess with the file */ - fprintf(fp, "\ -c \n\ -c \n\ -c This file is generated automatically by the setparams utility.\n\ -c It sets the number of processors and the class of the NPB\n\ -c in this directory. Do not modify it by hand.\n\ -c \n"); - - break; - - case SP: - case FT: - case MG: - case LU: - case EP: - case CG: - /* Write out the header */ - fprintf(fp, DESC_LINE, nprocs, class); - /* Print out a warning so bozos don't mess with the file */ - fprintf(fp, "\ -c \n\ -c \n\ -c This file is generated automatically by the setparams utility.\n\ -c It sets the number of processors and the class of the NPB\n\ -c in this directory. Do not modify it by hand.\n\ -c \n"); - - break; - case IS: - case DT: - fprintf(fp, DEF_CLASS_LINE, class); - fprintf(fp, DEF_NUM_PROCS_LINE, nprocs); - fprintf(fp, "\ -/*\n\ - This file is generated automatically by the setparams utility.\n\ - It sets the number of processors and the class of the NPB\n\ - in this directory. Do not modify it by hand. */\n\ - \n"); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", - type); - exit(1); - } - - /* Now do benchmark-specific stuff */ - switch(type) { - case SP: - write_sp_info(fp, nprocs, class); - break; - case LU: - write_lu_info(fp, nprocs, class); - break; - case MG: - write_mg_info(fp, nprocs, class); - break; - case IS: - write_is_info(fp, nprocs, class); - break; - case DT: - write_dt_info(fp, nprocs, class); - break; - case FT: - write_ft_info(fp, nprocs, class); - break; - case EP: - write_ep_info(fp, nprocs, class); - break; - case CG: - write_cg_info(fp, nprocs, class); - break; - case BT: - write_bt_info(fp, nprocs, class, subtype); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", type); - exit(1); - } - write_convertdouble_info(type, fp); - write_compiler_info(type, fp); - fclose(fp); - return; -} - - -/* - * write_sp_info(): Write SP specific info to config file - */ - -void write_sp_info(FILE *fp, int nprocs, char class) -{ - int maxcells, problem_size, niter; - char *dt; - maxcells = isqrt(nprocs); - if (class == 'S') { problem_size = 12; dt = "0.015d0"; niter = 100; } - else if (class == 'W') { problem_size = 36; dt = "0.0015d0"; niter = 400; } - else if (class == 'A') { problem_size = 64; dt = "0.0015d0"; niter = 400; } - else if (class == 'B') { problem_size = 102; dt = "0.001d0"; niter = 400; } - else if (class == 'C') { problem_size = 162; dt = "0.00067d0"; niter = 400; } - else if (class == 'D') { problem_size = 408; dt = "0.00030d0"; niter = 500; } - else if (class == 'E') { problem_size = 1020; dt = "0.0001d0"; niter = 500; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - fprintf(fp, "%sinteger maxcells, problem_size, niter_default\n", FINDENT); - fprintf(fp, "%sparameter (maxcells=%d, problem_size=%d, niter_default=%d)\n", - FINDENT, maxcells, problem_size, niter); - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt); -} - -/* - * write_bt_info(): Write BT specific info to config file - */ - -void write_bt_info(FILE *fp, int nprocs, char class, int io) -{ - int maxcells, problem_size, niter, wr_interval; - char *dt; - maxcells = isqrt(nprocs); - if (class == 'S') { problem_size = 12; dt = "0.010d0"; niter = 60; } - else if (class == 'W') { problem_size = 24; dt = "0.0008d0"; niter = 200; } - else if (class == 'A') { problem_size = 64; dt = "0.0008d0"; niter = 200; } - else if (class == 'B') { problem_size = 102; dt = "0.0003d0"; niter = 200; } - else if (class == 'C') { problem_size = 162; dt = "0.0001d0"; niter = 200; } - else if (class == 'D') { problem_size = 408; dt = "0.00002d0"; niter = 250; } - else if (class == 'E') { problem_size = 1020; dt = "0.4d-5"; niter = 250; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - wr_interval = 5; - fprintf(fp, "%sinteger maxcells, problem_size, niter_default\n", FINDENT); - fprintf(fp, "%sparameter (maxcells=%d, problem_size=%d, niter_default=%d)\n", - FINDENT, maxcells, problem_size, niter); - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt); - fprintf(fp, "%sinteger wr_default\n", FINDENT); - fprintf(fp, "%sparameter (wr_default = %d)\n", FINDENT, wr_interval); - fprintf(fp, "%sinteger iotype\n", FINDENT); - fprintf(fp, "%sparameter (iotype = %d)\n", FINDENT, io); - if (io) { - fprintf(fp, "%scharacter*(*) filenm\n", FINDENT); - switch (io) { - case FULL: - fprintf(fp, "%sparameter (filenm = 'btio.full.out')\n", FINDENT); - break; - case SIMPLE: - fprintf(fp, "%sparameter (filenm = 'btio.simple.out')\n", FINDENT); - break; - case EPIO: - fprintf(fp, "%sparameter (filenm = 'btio.epio.out')\n", FINDENT); - break; - case FORTRAN: - fprintf(fp, "%sparameter (filenm = 'btio.fortran.out')\n", FINDENT); - fprintf(fp, "%sinteger fortran_rec_sz\n", FINDENT); - fprintf(fp, "%sparameter (fortran_rec_sz = %d)\n", - FINDENT, fortran_rec_size); - break; - default: - break; - } - } -} - - - -/* - * write_lu_info(): Write SP specific info to config file - */ - -void write_lu_info(FILE *fp, int nprocs, char class) -{ - int isiz1, isiz2, itmax, inorm, problem_size; - int xdiv, ydiv; /* number of cells in x and y direction */ - char *dt_default; - - if (class == 'S') { problem_size = 12; dt_default = "0.5d0"; itmax = 50; } - else if (class == 'W') { problem_size = 33; dt_default = "1.5d-3"; itmax = 300; } - else if (class == 'A') { problem_size = 64; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'B') { problem_size = 102; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'C') { problem_size = 162; dt_default = "2.0d0"; itmax = 250; } - else if (class == 'D') { problem_size = 408; dt_default = "1.0d0"; itmax = 300; } - else if (class == 'E') { problem_size = 1020; dt_default = "0.5d0"; itmax = 300; } - else { - printf("setparams: Internal error: invalid class %c\n", class); - exit(1); - } - inorm = itmax; - xdiv = isqrt2(nprocs); - ydiv = nprocs/xdiv; - isiz1 = problem_size/xdiv; if (isiz1*xdiv < problem_size) isiz1++; - isiz2 = problem_size/ydiv; if (isiz2*ydiv < problem_size) isiz2++; - - - fprintf(fp, "\nc number of nodes for which this version is compiled\n"); - fprintf(fp, "%sinteger nnodes_compiled, nnodes_xdim\n", FINDENT); - fprintf(fp, "%sparameter (nnodes_compiled=%d, nnodes_xdim=%d)\n", - FINDENT, nprocs, xdiv); - - fprintf(fp, "\nc full problem size\n"); - fprintf(fp, "%sinteger isiz01, isiz02, isiz03\n", FINDENT); - fprintf(fp, "%sparameter (isiz01=%d, isiz02=%d, isiz03=%d)\n", - FINDENT, problem_size, problem_size, problem_size); - - fprintf(fp, "\nc sub-domain array size\n"); - fprintf(fp, "%sinteger isiz1, isiz2, isiz3\n", FINDENT); - fprintf(fp, "%sparameter (isiz1=%d, isiz2=%d, isiz3=isiz03)\n", - FINDENT, isiz1, isiz2); - - fprintf(fp, "\nc number of iterations and how often to print the norm\n"); - fprintf(fp, "%sinteger itmax_default, inorm_default\n", FINDENT); - fprintf(fp, "%sparameter (itmax_default=%d, inorm_default=%d)\n", - FINDENT, itmax, inorm); - - fprintf(fp, "%sdouble precision dt_default\n", FINDENT); - fprintf(fp, "%sparameter (dt_default = %s)\n", FINDENT, dt_default); - -} - -/* - * write_mg_info(): Write MG specific info to config file - */ - -void write_mg_info(FILE *fp, int nprocs, char class) -{ - int problem_size, nit, log2_size, log2_nprocs, lt_default, lm; - int ndim1, ndim2, ndim3; - if (class == 'S') { problem_size = 32; nit = 4; } - else if (class == 'W') { problem_size = 128; nit = 4; } - else if (class == 'A') { problem_size = 256; nit = 4; } - else if (class == 'B') { problem_size = 256; nit = 20; } - else if (class == 'C') { problem_size = 512; nit = 20; } - else if (class == 'D') { problem_size = 1024; nit = 50; } - else if (class == 'E') { problem_size = 2048; nit = 50; } - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - log2_size = ilog2(problem_size); - log2_nprocs = ilog2(nprocs); - /* lt is log of largest total dimension */ - lt_default = log2_size; - /* log of log of maximum dimension on a node */ - lm = log2_size - log2_nprocs/3; - ndim1 = lm; - ndim3 = log2_size - (log2_nprocs+2)/3; - ndim2 = log2_size - (log2_nprocs+1)/3; - - fprintf(fp, "%sinteger nprocs_compiled\n", FINDENT); - fprintf(fp, "%sparameter (nprocs_compiled = %d)\n", FINDENT, nprocs); - fprintf(fp, "%sinteger nx_default, ny_default, nz_default\n", FINDENT); - fprintf(fp, "%sparameter (nx_default=%d, ny_default=%d, nz_default=%d)\n", - FINDENT, problem_size, problem_size, problem_size); - fprintf(fp, "%sinteger nit_default, lm, lt_default\n", FINDENT); - fprintf(fp, "%sparameter (nit_default=%d, lm = %d, lt_default=%d)\n", - FINDENT, nit, lm, lt_default); - fprintf(fp, "%sinteger debug_default\n", FINDENT); - fprintf(fp, "%sparameter (debug_default=%d)\n", FINDENT, 0); - fprintf(fp, "%sinteger ndim1, ndim2, ndim3\n", FINDENT); - fprintf(fp, "%sparameter (ndim1 = %d, ndim2 = %d, ndim3 = %d)\n", - FINDENT, ndim1, ndim2, ndim3); -} - - -/* - * write_dt_info(): Write DT specific info to config file - */ - -void write_dt_info(FILE *fp, int nprocs, char class) -{ - int num_samples,deviation,num_sources; - if (class == 'S') { num_samples=1728; deviation=128; num_sources=4; } - else if (class == 'W') { num_samples=1728*8; deviation=128*2; num_sources=4*2; } - else if (class == 'A') { num_samples=1728*64; deviation=128*4; num_sources=4*4; } - else if (class == 'B') { num_samples=1728*512; deviation=128*8; num_sources=4*8; } - else if (class == 'C') { num_samples=1728*4096; deviation=128*16; num_sources=4*16; } - else if (class == 'D') { num_samples=1728*4096*8; deviation=128*32; num_sources=4*32; } - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - fprintf(fp, "#define NUM_SAMPLES %d\n", num_samples); - fprintf(fp, "#define STD_DEVIATION %d\n", deviation); - fprintf(fp, "#define NUM_SOURCES %d\n", num_sources); -} - -/* - * write_is_info(): Write IS specific info to config file - */ - -void write_is_info(FILE *fp, int nprocs, char class) -{ - if( class != 'S' && - class != 'W' && - class != 'A' && - class != 'B' && - class != 'C' && - class != 'D' ) - { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } -} - -/* - * write_cg_info(): Write CG specific info to config file - */ - -void write_cg_info(FILE *fp, int nprocs, char class) -{ - int na,nonzer,niter; - char *shift,*rcond="1.0d-1"; - char *shiftS="10.", - *shiftW="12.", - *shiftA="20.", - *shiftB="60.", - *shiftC="110.", - *shiftD="500.", - *shiftE="1.5d3"; - - int num_proc_cols, num_proc_rows; - - - if( class == 'S' ) - { na=1400; nonzer=7; niter=15; shift=shiftS; } - else if( class == 'W' ) - { na=7000; nonzer=8; niter=15; shift=shiftW; } - else if( class == 'A' ) - { na=14000; nonzer=11; niter=15; shift=shiftA; } - else if( class == 'B' ) - { na=75000; nonzer=13; niter=75; shift=shiftB; } - else if( class == 'C' ) - { na=150000; nonzer=15; niter=75; shift=shiftC; } - else if( class == 'D' ) - { na=1500000; nonzer=21; niter=100; shift=shiftD; } - else if( class == 'E' ) - { na=9000000; nonzer=26; niter=100; shift=shiftE; } - else - { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - fprintf( fp, "%sinteger na, nonzer, niter\n", FINDENT ); - fprintf( fp, "%sdouble precision shift, rcond\n", FINDENT ); - fprintf( fp, "%sparameter( na=%d,\n", FINDENT, na ); - fprintf( fp, "%s nonzer=%d,\n", CONTINUE, nonzer ); - fprintf( fp, "%s niter=%d,\n", CONTINUE, niter ); - fprintf( fp, "%s shift=%s,\n", CONTINUE, shift ); - fprintf( fp, "%s rcond=%s )\n", CONTINUE, rcond ); - - - num_proc_cols = num_proc_rows = ilog2(nprocs)/2; - if (num_proc_cols+num_proc_rows != ilog2(nprocs)) num_proc_cols += 1; - num_proc_cols = ipow2(num_proc_cols); num_proc_rows = ipow2(num_proc_rows); - - fprintf( fp, "\nc number of nodes for which this version is compiled\n" ); - fprintf( fp, "%sinteger nnodes_compiled\n", FINDENT ); - fprintf( fp, "%sparameter( nnodes_compiled = %d)\n", FINDENT, nprocs ); - fprintf( fp, "%sinteger num_proc_cols, num_proc_rows\n", FINDENT ); - fprintf( fp, "%sparameter( num_proc_cols=%d, num_proc_rows=%d )\n", - FINDENT, - num_proc_cols, - num_proc_rows ); -} - - -/* - * write_ft_info(): Write FT specific info to config file - */ - -void write_ft_info(FILE *fp, int nprocs, char class) -{ - /* easiest way (given the way the benchmark is written) - * is to specify log of number of grid points in each - * direction m1, m2, m3. nt is the number of iterations - */ - int nx, ny, nz, maxdim, niter; - if (class == 'S') { nx = 64; ny = 64; nz = 64; niter = 6;} - else if (class == 'W') { nx = 128; ny = 128; nz = 32; niter = 6;} - else if (class == 'A') { nx = 256; ny = 256; nz = 128; niter = 6;} - else if (class == 'B') { nx = 512; ny = 256; nz = 256; niter =20;} - else if (class == 'C') { nx = 512; ny = 512; nz = 512; niter =20;} - else if (class == 'D') { nx = 2048; ny = 1024; nz = 1024; niter =25;} - else if (class == 'E') { nx = 4096; ny = 2048; nz = 2048; niter =25;} - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - maxdim = nx; - if (ny > maxdim) maxdim = ny; - if (nz > maxdim) maxdim = nz; - fprintf(fp, "%sinteger nx, ny, nz, maxdim, niter_default, ntdivnp, np_min\n", FINDENT); - fprintf(fp, "%sparameter (nx=%d, ny=%d, nz=%d, maxdim=%d)\n", - FINDENT, nx, ny, nz, maxdim); - fprintf(fp, "%sparameter (niter_default=%d)\n", FINDENT, niter); - fprintf(fp, "%sparameter (np_min = %d)\n", FINDENT, nprocs); - fprintf(fp, "%sparameter (ntdivnp=((nx*ny)/np_min)*nz)\n", FINDENT); - fprintf(fp, "%sdouble precision ntotal_f\n", FINDENT); - fprintf(fp, "%sparameter (ntotal_f=1.d0*nx*ny*nz)\n", FINDENT); -} - -/* - * write_ep_info(): Write EP specific info to config file - */ - -void write_ep_info(FILE *fp, int nprocs, char class) -{ - /* easiest way (given the way the benchmark is written) - * is to specify log of number of grid points in each - * direction m1, m2, m3. nt is the number of iterations - */ - int m; - if (class == 'S') { m = 24; } - else if (class == 'W') { m = 25; } - else if (class == 'A') { m = 28; } - else if (class == 'B') { m = 30; } - else if (class == 'C') { m = 32; } - else if (class == 'D') { m = 36; } - else if (class == 'E') { m = 40; } - else { - printf("setparams: Internal error: invalid class type %c\n", class); - exit(1); - } - /* number of processors given by "npm" */ - - - fprintf(fp, "%scharacter class\n",FINDENT); - fprintf(fp, "%sparameter (class =\'%c\')\n", - FINDENT, class); - fprintf(fp, "%sinteger m, npm\n", FINDENT); - fprintf(fp, "%sparameter (m=%d, npm=%d)\n", - FINDENT, m, nprocs); -} - - -/* - * This is a gross hack to allow the benchmarks to - * print out how they were compiled. Various other ways - * of doing this have been tried and they all fail on - * some machine - due to a broken "make" program, or - * F77 limitations, of whatever. Hopefully this will - * always work because it uses very portable C. Unfortunately - * it relies on parsing the make.def file - YUK. - * If your machine doesn't have or , happy hacking! - * - */ - -#define VERBOSE -#define LL 400 -#include -#define DEFFILE "../config/make.def" -#define DEFAULT_MESSAGE "(none)" -FILE *deffile; -void write_compiler_info(int type, FILE *fp) -{ - char line[LL]; - char mpif77[LL], flink[LL], fmpi_lib[LL], fmpi_inc[LL], fflags[LL], flinkflags[LL]; - char compiletime[LL], randfile[LL]; - char mpicc[LL], cflags[LL], clink[LL], clinkflags[LL], - cmpi_lib[LL], cmpi_inc[LL]; - struct tm *tmp; - time_t t; - deffile = fopen(DEFFILE, "r"); - if (deffile == NULL) { - printf("\n\ -setparams: File %s doesn't exist. To build the NAS benchmarks\n\ - you need to create is according to the instructions\n\ - in the README in the main directory and comments in \n\ - the file config/make.def.template\n", DEFFILE); - exit(1); - } - strcpy(mpif77, DEFAULT_MESSAGE); - strcpy(flink, DEFAULT_MESSAGE); - strcpy(fmpi_lib, DEFAULT_MESSAGE); - strcpy(fmpi_inc, DEFAULT_MESSAGE); - strcpy(fflags, DEFAULT_MESSAGE); - strcpy(flinkflags, DEFAULT_MESSAGE); - strcpy(randfile, DEFAULT_MESSAGE); - strcpy(mpicc, DEFAULT_MESSAGE); - strcpy(cflags, DEFAULT_MESSAGE); - strcpy(clink, DEFAULT_MESSAGE); - strcpy(clinkflags, DEFAULT_MESSAGE); - strcpy(cmpi_lib, DEFAULT_MESSAGE); - strcpy(cmpi_inc, DEFAULT_MESSAGE); - - while (fgets(line, LL, deffile) != NULL) { - if (*line == '#') continue; - /* yes, this is inefficient. but it's simple! */ - check_line(line, "MPIF77", mpif77); - check_line(line, "FLINK", flink); - check_line(line, "FMPI_LIB", fmpi_lib); - check_line(line, "FMPI_INC", fmpi_inc); - check_line(line, "FFLAGS", fflags); - check_line(line, "FLINKFLAGS", flinkflags); - check_line(line, "RAND", randfile); - check_line(line, "MPICC", mpicc); - check_line(line, "CFLAGS", cflags); - check_line(line, "CLINK", clink); - check_line(line, "CLINKFLAGS", clinkflags); - check_line(line, "CMPI_LIB", cmpi_lib); - check_line(line, "CMPI_INC", cmpi_inc); - /* if the dummy library is used by including make.dummy, we set the - Fortran and C paths to libraries and headers accordingly */ - if(check_include_line(line, "../config/make.dummy")) { - strcpy(fmpi_lib, "-L../MPI_dummy -lmpi"); - strcpy(fmpi_inc, "-I../MPI_dummy"); - strcpy(cmpi_lib, "-L../MPI_dummy -lmpi"); - strcpy(cmpi_inc, "-I../MPI_dummy"); - } - } - - - (void) time(&t); - tmp = localtime(&t); - (void) strftime(compiletime, (size_t)LL, "%d %b %Y", tmp); - - - switch(type) { - case FT: - case SP: - case BT: - case MG: - case LU: - case EP: - case CG: - put_string(fp, "compiletime", compiletime); - put_string(fp, "npbversion", VERSION); - put_string(fp, "cs1", mpif77); - put_string(fp, "cs2", flink); - put_string(fp, "cs3", fmpi_lib); - put_string(fp, "cs4", fmpi_inc); - put_string(fp, "cs5", fflags); - put_string(fp, "cs6", flinkflags); - put_string(fp, "cs7", randfile); - break; - case IS: - case DT: - put_def_string(fp, "COMPILETIME", compiletime); - put_def_string(fp, "NPBVERSION", VERSION); - put_def_string(fp, "MPICC", mpicc); - put_def_string(fp, "CFLAGS", cflags); - put_def_string(fp, "CLINK", clink); - put_def_string(fp, "CLINKFLAGS", clinkflags); - put_def_string(fp, "CMPI_LIB", cmpi_lib); - put_def_string(fp, "CMPI_INC", cmpi_inc); - break; - default: - printf("setparams: (Internal error): Unknown benchmark type %d\n", - type); - exit(1); - } - -} - -void check_line(char *line, char *label, char *val) -{ - char *original_line; - int n; - original_line = line; - /* compare beginning of line and label */ - while (*label != '\0' && *line == *label) { - line++; label++; - } - /* if *label is not EOS, we must have had a mismatch */ - if (*label != '\0') return; - /* if *line is not a space, actual label is longer than test label */ - if (!isspace(*line) && *line != '=') return ; - /* skip over white space */ - while (isspace(*line)) line++; - /* next char should be '=' */ - if (*line != '=') return; - /* skip over white space */ - while (isspace(*++line)); - /* if EOS, nothing was specified */ - if (*line == '\0') return; - /* finally we've come to the value */ - strcpy(val, line); - /* chop off the newline at the end */ - n = strlen(val)-1; - if (n >= 0 && val[n] == '\n') - val[n--] = '\0'; - if (n >= 0 && val[n] == '\r') - val[n--] = '\0'; - /* treat continuation */ - while (val[n] == '\\' && fgets(original_line, LL, deffile)) { - line = original_line; - while (isspace(*line)) line++; - if (isspace(*original_line)) val[n++] = ' '; - while (*line && *line != '\n' && *line != '\r' && n < LL-1) - val[n++] = *line++; - val[n] = '\0'; - n--; - } -/* if (val[strlen(val) - 1] == '\\') { - printf("\n\ -setparams: Error in file make.def. Because of the way in which\n\ - command line arguments are incorporated into the\n\ - executable benchmark, you can't have any continued\n\ - lines in the file make.def, that is, lines ending\n\ - with the character \"\\\". Although it may be ugly, \n\ - you should be able to reformat without continuation\n\ - lines. The offending line is\n\ - %s\n", original_line); - exit(1); - } */ -} - -int check_include_line(char *line, char *filename) -{ - char *include_string = "include"; - /* compare beginning of line and "include" */ - while (*include_string != '\0' && *line == *include_string) { - line++; include_string++; - } - /* if *include_string is not EOS, we must have had a mismatch */ - if (*include_string != '\0') return(0); - /* if *line is not a space, first word is not "include" */ - if (!isspace(*line)) return(0); - /* skip over white space */ - while (isspace(*++line)); - /* if EOS, nothing was specified */ - if (*line == '\0') return(0); - /* next keyword should be name of include file in *filename */ - while (*filename != '\0' && *line == *filename) { - line++; filename++; - } - if (*filename != '\0' || - (*line != ' ' && *line != '\0' && *line !='\n')) return(0); - else return(1); -} - - -#define MAXL 46 -void put_string(FILE *fp, char *name, char *val) -{ - int len; - len = strlen(val); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "%scharacter*%d %s\n", FINDENT, len, name); - fprintf(fp, "%sparameter (%s=\'%s\')\n", FINDENT, name, val); -} - -/* need to escape quote (") in val */ -int fix_string_quote(char *val, char *newval, int maxl) -{ - int len; - int i, j; - len = strlen(val); - i = j = 0; - while (i < len && j < maxl) { - if (val[i] == '"') - newval[j++] = '\\'; - if (j < maxl) - newval[j++] = val[i++]; - } - newval[j] = '\0'; - return j; -} - -/* NOTE: is the ... stuff necessary in C? */ -void put_def_string(FILE *fp, char *name, char *val0) -{ - int len; - char val[MAXL+3]; - len = fix_string_quote(val0, val, MAXL+2); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "#define %s \"%s\"\n", name, val); -} - -void put_def_variable(FILE *fp, char *name, char *val) -{ - int len; - len = strlen(val); - if (len > MAXL) { - val[MAXL] = '\0'; - val[MAXL-1] = '.'; - val[MAXL-2] = '.'; - val[MAXL-3] = '.'; - len = MAXL; - } - fprintf(fp, "#define %s %s\n", name, val); -} - - - -#if 0 - -/* this version allows arbitrarily long lines but - * some compilers don't like that and they're rarely - * useful - */ - -#define LINELEN 65 -void put_string(FILE *fp, char *name, char *val) -{ - int len, nlines, pos, i; - char line[100]; - len = strlen(val); - nlines = len/LINELEN; - if (nlines*LINELEN < len) nlines++; - fprintf(fp, "%scharacter*%d %s\n", FINDENT, nlines*LINELEN, name); - fprintf(fp, "%sparameter (%s = \n", FINDENT, name); - for (i = 0; i < nlines; i++) { - pos = i*LINELEN; - if (i == 0) fprintf(fp, "%s\'", CONTINUE); - else fprintf(fp, "%s", CONTINUE); - /* number should be same as LINELEN */ - fprintf(fp, "%.65s", val+pos); - if (i == nlines-1) fprintf(fp, "\')\n"); - else fprintf(fp, "\n"); - } -} - -#endif - - -/* integer square root. Return error if argument isn't - * a perfect square or is less than or equal to zero - */ - -int isqrt(int i) -{ - int root, square; - if (i <= 0) return(-1); - square = 0; - for (root = 1; square <= i; root++) { - square = root*root; - if (square == i) return(root); - } - return(-1); -} - -int isqrt2(int i) -{ - int xdim, ydim, square; - if (i <= 0) return(-1); - square = 0; - for (xdim = 1; square <= i; xdim++) { - square = xdim*xdim; - if (square == i) return(xdim); - } - ydim = i / (--xdim); - while (xdim*ydim != i && 2*ydim >= xdim) { - xdim++; - ydim = i / xdim; - } - if (xdim*ydim == i && 2*ydim >= xdim) - return(xdim); - return(-1); -} - - -/* integer log base two. Return error is argument isn't - * a power of two or is less than or equal to zero - */ - -int ilog2(int i) -{ - int log2; - int exp2 = 1; - if (i <= 0) return(-1); - - for (log2 = 0; log2 < 30; log2++) { - if (exp2 == i) return(log2); - if (exp2 > i) break; - exp2 *= 2; - } - return(-1); -} - -int ipow2(int i) -{ - int pow2 = 1; - if (i < 0) return(-1); - if (i == 0) return(1); - while(i--) pow2 *= 2; - return(pow2); -} - - - -void write_convertdouble_info(int type, FILE *fp) -{ - switch(type) { - case SP: - case BT: - case LU: - case FT: - case MG: - case EP: - case CG: - fprintf(fp, "%slogical convertdouble\n", FINDENT); -#ifdef CONVERTDOUBLE - fprintf(fp, "%sparameter (convertdouble = .true.)\n", FINDENT); -#else - fprintf(fp, "%sparameter (convertdouble = .false.)\n", FINDENT); -#endif - break; - } -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/settings deleted file mode 100644 index 67727d3..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/NPB/settings +++ /dev/null @@ -1,4 +0,0 @@ -DIMENSION_COUNT=3 -MAX_PROC_COUNT=1 -GPU_ONLY=1 -MAX_TIME=600 # In seconds diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.cdv deleted file mode 100644 index 50748f2..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.cdv +++ /dev/null @@ -1,100 +0,0 @@ -/* ADI program */ - -#include -#include -#include - -#define Max(a, b) ((a) > (b) ? (a) : (b)) - -#define nx 384 -#define ny 384 -#define nz 384 - -#pragma dvm inherit(a) -void init(double (*a)[ny][nz]); - -int main(int argc, char *argv[]) -{ - double maxeps, eps; - #pragma dvm array distribute[block][block][block] - double (*a)[ny][nz]; - int it, itmax, i, j, k; - double startt, endt; - maxeps = 0.01; - itmax = 100; - a = (double (*)[ny][nz])malloc(nx * ny * nz * sizeof(double)); - init(a); - -#ifdef _DVMH - dvmh_barrier(); - startt = dvmh_wtime(); -#else - startt = 0; -#endif - for (it = 1; it <= itmax; it++) - { - eps = 0; - #pragma dvm actual(eps) - #pragma dvm region - { - #pragma dvm parallel([i][j][k] on a[i][j][k]) across(a[1:1][0:0][0:0]) - for (i = 1; i < nx - 1; i++) - for (j = 1; j < ny - 1; j++) - for (k = 1; k < nz - 1; k++) - a[i][j][k] = (a[i-1][j][k] + a[i+1][j][k]) / 2; - #pragma dvm parallel([i][j][k] on a[i][j][k]) across(a[0:0][1:1][0:0]) - for (i = 1; i < nx - 1; i++) - for (j = 1; j < ny - 1; j++) - for (k = 1; k < nz - 1; k++) - a[i][j][k] = (a[i][j-1][k] + a[i][j+1][k]) / 2; - #pragma dvm parallel([i][j][k] on a[i][j][k]) across(a[0:0][0:0][1:1]), reduction(max(eps)) - for (i = 1; i < nx - 1; i++) - for (j = 1; j < ny - 1; j++) - for (k = 1; k < nz - 1; k++) - { - double tmp1 = (a[i][j][k-1] + a[i][j][k+1]) / 2; - double tmp2 = fabs(a[i][j][k] - tmp1); - eps = Max(eps, tmp2); - a[i][j][k] = tmp1; - } - } - #pragma dvm get_actual(eps) - printf(" IT = %4i EPS = %14.7E\n", it, eps); - if (eps < maxeps) - break; - } -#ifdef _DVMH - dvmh_barrier(); - endt = dvmh_wtime(); -#else - endt = 0; -#endif - free(a); - - printf(" ADI Benchmark Completed.\n"); - printf(" Size = %4d x %4d x %4d\n", nx, ny, nz); - printf(" Iterations = %12d\n", itmax); - printf(" Time in seconds = %12.2lf\n", endt - startt); - printf(" Operation type = double precision\n"); - printf(" Verification = %12s\n", (fabs(eps - 0.07249074) < 1e-6 ? "SUCCESSFUL" : "UNSUCCESSFUL")); - - printf(" END OF ADI Benchmark\n"); - return 0; -} - -#pragma dvm inherit(a) -void init(double (*a)[ny][nz]) -{ - int i, j, k; - #pragma dvm region out(a) - { - #pragma dvm parallel([i][j][k] on a[i][j][k]) - for (i = 0; i < nx; i++) - for (j = 0; j < ny; j++) - for (k = 0; k < nz; k++) - if (k == 0 || k == nz - 1 || j == 0 || j == ny - 1 || i == 0 || i == nx - 1) - a[i][j][k] = 10.0 * i / (nx - 1) + 10.0 * j / (ny - 1) + 10.0 * k / (nz - 1); - else - a[i][j][k] = 0; - } -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.fdv deleted file mode 100644 index 2d0d87f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/adi3d.fdv +++ /dev/null @@ -1,88 +0,0 @@ - program adi - integer nx, ny, nz, itmax - double precision eps, relax, maxeps - double precision startt, endt, dvtime - parameter(nx=384, ny=384, nz=384, maxeps=0.01, itmax=100) - double precision a(nx, ny, nz) -!DVM$ DISTRIBUTE(BLOCK, BLOCK, BLOCK) :: a - call init(a, nx, ny, nz) -!DVM$ BARRIER - startt = dvtime() - do it = 1, itmax - eps=0.D0 -!DVM$ ACTUAL(eps) -!DVM$ REGION -!DVM$ PARALLEL(k, j, i) ON a(i, j, k), ACROSS(a(1:1, 0:0, 0:0)) - do k = 2, nz - 1 - do j = 2, ny - 1 - do i = 2, nx - 1 - a(i, j, k) = (a(i-1, j, k) + a(i+1, j, k)) / 2 - enddo - enddo - enddo -!DVM$ PARALLEL(k, j, i) ON a(i, j, k), ACROSS(a(0:0, 1:1, 0:0)) - do k = 2, nz - 1 - do j = 2, ny - 1 - do i = 2, nx - 1 - a(i, j, k) = (a(i, j-1, k) + a(i, j+1, k)) / 2 - enddo - enddo - enddo -!DVM$ PARALLEL(k, j, i) ON a(i, j, k), ACROSS(a(0:0, 0:0, 1:1)) -!DVM$>, REDUCTION(MAX(eps)) - do k = 2, nz - 1 - do j = 2, ny - 1 - do i = 2, nx - 1 - eps = max(eps, abs(a(i, j, k) - - > (a(i,j,k-1) + a(i,j,k+1)) / 2)) - a(i, j, k) = (a(i, j, k-1) + a(i, j, k+1)) / 2 - enddo - enddo - enddo -!DVM$ END REGION -!DVM$ GET_ACTUAL(eps) - print 200, it, eps -200 format (' IT = ', i4, ' EPS = ', e14.7) - if (eps .lt. maxeps) exit - enddo -!DVM$ BARRIER - endt = dvtime() - - print *, 'ADI Benchmark Completed.' - print 201, nx, ny, nz -201 format (' Size = ', i4, ' x ', i4, ' x ', i4) - print 202, itmax -202 format (' Iterations = ', i12) - print 203, endt - startt -203 format (' Time in seconds = ', f12.2) - print *, 'Operation type = double precision' - if (abs(eps - 0.07249074) .lt. 1.0e-6) then - print *, 'Verification = SUCCESSFUL' - else - print *, 'Verification = UNSUCCESSFUL' - endif - - print *, 'END OF ADI Benchmark' - end - - subroutine init(a, nx, ny, nz) - double precision a(nx, ny, nz) -!DVM$ INHERIT a - integer nx, ny, nz -!DVM$ REGION OUT(a) -!DVM$ PARALLEL(k, j, i) ON a(i, j, k) - do k = 1, nz - do j = 1, ny - do i = 1, nx - if(k.eq.1 .or. k.eq.nz .or. j.eq.1 .or. j.eq.ny .or. - > i.eq.1 .or. i.eq.nx) then - a(i, j, k) = 10.*(i-1)/(nx-1) + 10.*(j-1)/(ny-1) - > + 10.*(k-1)/(nz-1) - else - a(i, j, k) = 0.D0 - endif - enddo - enddo - enddo -!DVM$ END REGION - end diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor2d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor2d.fdv deleted file mode 100644 index fdeda52..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor2d.fdv +++ /dev/null @@ -1,65 +0,0 @@ - PROGRAM SOR2D_double - PARAMETER (L=8000, ITMAX=100) - DOUBLE PRECISION EPS, MAXEPS, A(L, L), W, S - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK) :: A - - MAXEPS = 0.5 - W = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(J, I) ON A(I, J), CUDA_BLOCK(32, 8) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO J = 1, L - DO I = 1, L - IF (I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L ) THEN - A(I, J) = 0. - ELSE - A(I, J) = (1. + I + J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION - -!DVM$ PARALLEL (J, I) ON A(I, J), ACROSS(A(1:1,1:1)), -!DVM$& REDUCTION(MAX(EPS)), PRIVATE(S) - DO J = 2, L - 1 - DO I = 2, L - 1 - S = A(I, J) - A(I, J) = (W / 6. ) * - > (A(I, J-1) + A(I-1, J) + A(I+1, J) + A(I, J+1)) - > + (1 - W) * A(I, J) - EPS = MAX(EPS, ABS(S - A(I, J))) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E23.16) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'SOR2D_double Benchmark Completed.' - PRINT 201, L, L -201 FORMAT (' Size = ', I6, ' x ', I6) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 0.424766850334810d0) .LT. 1.0E-7) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF SOR2D_double Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor3d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor3d.fdv deleted file mode 100644 index 8ae7646..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/d_sor3d.fdv +++ /dev/null @@ -1,71 +0,0 @@ - PROGRAM SOR3D_double - PARAMETER (L=384, ITMAX=100) - DOUBLE PRECISION EPS, MAXEPS, A(L, L, L), W, S - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK, BLOCK) :: A - - MAXEPS = 0.5 - W = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(K, J, I) ON A(I, J, K), CUDA_BLOCK(32, 8) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO K = 1, L - DO J = 1, L - DO I = 1, L - IF (I.EQ.1 .OR. J.EQ.1 .OR. K.EQ.1 - >.OR. I.EQ.L .OR. J.EQ.L .OR. K.EQ.L) THEN - A(I, J, K) = 0. - ELSE - A(I, J, K) = (1. + I + J + K) - ENDIF - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION - -!DVM$ PARALLEL (K, J, I) ON A(I, J, K), ACROSS(A(1:1,1:1,1:1)), -!DVM$& REDUCTION(MAX(EPS)), PRIVATE(S) - DO K = 2, L - 1 - DO J = 2, L - 1 - DO I = 2, L - 1 - S = A(I, J, K) - A(I, J, K) = (W / 6. ) * (A(I, J, K-1) + A(I, J-1, K) + - > A(I-1, J, K) + A(I+1, J, K) + - > A(I, J+1, K) + A(I, J, K+1))+ - > + (1 - W) * A(I, J, K) - EPS = MAX(EPS, ABS(S - A(I, J, K))) - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E23.16) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'SOR3D_double Benchmark Completed.' - PRINT 201, L, L, L -201 FORMAT (' Size = ', I4, ' x ', I4, ' x ', I4) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 5.134125088529458d0) .LT. 1.0d-7) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF SOR3D_double Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor2d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor2d.fdv deleted file mode 100644 index 179dace..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor2d.fdv +++ /dev/null @@ -1,65 +0,0 @@ - PROGRAM SOR2D_float - PARAMETER (L=8000, ITMAX=100) - REAL EPS, MAXEPS, A(L, L), W, S - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK) :: A - - MAXEPS = 0.5 - W = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(J, I) ON A(I, J), CUDA_BLOCK(32, 8) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO J = 1, L - DO I = 1, L - IF (I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L ) THEN - A(I, J) = 0. - ELSE - A(I, J) = (1. + I + J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION - -!DVM$ PARALLEL (J, I) ON A(I, J), ACROSS(A(1:1,1:1)), -!DVM$& REDUCTION(MAX(EPS)), PRIVATE(S) - DO J = 2, L - 1 - DO I = 2, L - 1 - S = A(I, J) - A(I, J) = (W / 6. ) * - > (A(I, J-1) + A(I-1, J) + A(I+1, J) + A(I, J+1)) - > + (1 - W) * A(I, J) - EPS = MAX(EPS, ABS(S - A(I, J))) - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E14.7) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'SOR2D_float Benchmark Completed.' - PRINT 201, L, L -201 FORMAT (' Size = ', I6, ' x ', I6) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 0.4247670) .LT. 1.0E-4) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF SOR2D_float Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor3d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor3d.fdv deleted file mode 100644 index 56efb63..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/f_sor3d.fdv +++ /dev/null @@ -1,71 +0,0 @@ - PROGRAM SOR3D_float - PARAMETER (L=384, ITMAX=100) - REAL EPS, MAXEPS, A(L, L, L), W, S - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK, BLOCK) :: A - - MAXEPS = 0.5 - W = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(K, J, I) ON A(I, J, K), CUDA_BLOCK(32, 8) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO K = 1, L - DO J = 1, L - DO I = 1, L - IF (I.EQ.1 .OR. J.EQ.1 .OR. K.EQ.1 - >.OR. I.EQ.L .OR. J.EQ.L .OR. K.EQ.L) THEN - A(I, J, K) = 0. - ELSE - A(I, J, K) = (1. + I + J + K) - ENDIF - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION - -!DVM$ PARALLEL (K, J, I) ON A(I, J, K), ACROSS(A(1:1,1:1,1:1)), -!DVM$& REDUCTION(MAX(EPS)), PRIVATE(S) - DO K = 2, L - 1 - DO J = 2, L - 1 - DO I = 2, L - 1 - S = A(I, J, K) - A(I, J, K) = (W / 6. ) * (A(I, J, K-1) + A(I, J-1, K) + - > A(I-1, J, K) + A(I+1, J, K) + - > A(I, J+1, K) + A(I, J, K+1))+ - > + (1 - W) * A(I, J, K) - EPS = MAX(EPS, ABS(S - A(I, J, K))) - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E14.7) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'SOR3D_float Benchmark Completed.' - PRINT 201, L, L, L -201 FORMAT (' Size = ', I4, ' x ', I4, ' x ', I4) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 5.134155) .LT. 1.0E-4) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF SOR3D_float Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.cdv deleted file mode 100644 index f95e48f..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.cdv +++ /dev/null @@ -1,93 +0,0 @@ -/* Jacobi-2 program */ - -#include -#include - -#define Max(a, b) ((a) > (b) ? (a) : (b)) - -#define L 8000 -#define ITMAX 100 - -int i, j, it; -float eps; -float MAXEPS = 0.5f; - -/* 2D arrays block distributed along 2 dimensions */ -#pragma dvm array distribute[block][block] -float A[L][L]; -#pragma dvm array align([i][j] with A[i][j]) -float B[L][L]; - -int main(int an, char **as) -{ - double startt, endt; - #pragma dvm region - { - /* 2D parallel loop with base array A */ - #pragma dvm parallel([i][j] on A[i][j]) cuda_block(256) - for (i = 0; i < L; i++) - for (j = 0; j < L; j++) - { - A[i][j] = 0; - if (i == 0 || j == 0 || i == L - 1 || j == L - 1) - B[i][j] = 0; - else - B[i][j] = 3 + i + j; - } - } - -#ifdef _DVMH - dvmh_barrier(); - startt = dvmh_wtime(); -#else - startt = 0; -#endif - /* iteration loop */ - for (it = 1; it <= ITMAX; it++) - { - eps = 0; - #pragma dvm actual(eps) - - #pragma dvm region - { - /* Parallel loop with base array A */ - /* calculating maximum in variable eps */ - #pragma dvm parallel([i][j] on A[i][j]) reduction(max(eps)), cuda_block(256) - for (i = 1; i < L - 1; i++) - for (j = 1; j < L - 1; j++) - { - float tmp = fabs(B[i][j] - A[i][j]); - eps = Max(tmp, eps); - A[i][j] = B[i][j]; - } - - /* Parallel loop with base array B and */ - /* with prior updating shadow elements of array A */ - #pragma dvm parallel([i][j] on B[i][j]) shadow_renew(A), cuda_block(256) - for (i = 1; i < L - 1; i++) - for (j = 1; j < L - 1; j++) - B[i][j] = (A[i - 1][j] + A[i][j - 1] + A[i][j + 1] + A[i + 1][j]) / 4.0f; - } - - #pragma dvm get_actual(eps) - printf(" IT = %4i EPS = %14.7E\n", it, eps); - if (eps < MAXEPS) - break; - } -#ifdef _DVMH - dvmh_barrier(); - endt = dvmh_wtime(); -#else - endt = 0; -#endif - - printf(" Jacobi2D Benchmark Completed.\n"); - printf(" Size = %6d x %6d\n", L, L); - printf(" Iterations = %12d\n", ITMAX); - printf(" Time in seconds = %12.2lf\n", endt - startt); - printf(" Operation type = floating point\n"); - printf(" Verification = %12s\n", (fabs(eps - 58.37598) < 1e-3 ? "SUCCESSFUL" : "UNSUCCESSFUL")); - - printf(" END OF Jacobi2D Benchmark\n"); - return 0; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.fdv deleted file mode 100644 index dae88b4..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac2d.fdv +++ /dev/null @@ -1,71 +0,0 @@ - PROGRAM JAC2D - PARAMETER (L=8000, ITMAX=100) - REAL A(L, L), EPS, MAXEPS, B(L, L) - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK) :: A -!DVM$ ALIGN B(I, J) WITH A(I, J) -! arrays A and B with block distribution - - MAXEPS = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(J, I) ON A(I, J), CUDA_BLOCK(256) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO J = 1, L - DO I = 1, L - A(I, J) = 0. - IF (I.EQ.1 .OR. J.EQ.1 .OR. I.EQ.L .OR. J.EQ.L) THEN - B(I, J) = 0. - ELSE - B(I, J) = (1. + I + J) - ENDIF - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION -!DVM$ PARALLEL(J, I) ON A(I, J), REDUCTION(MAX(EPS)), CUDA_BLOCK(256) -! variable EPS is used for calculation of maximum value - DO J = 2, L - 1 - DO I = 2, L - 1 - EPS = MAX(EPS, ABS(B(I, J) - A(I, J))) - A(I, J) = B(I, J) - ENDDO - ENDDO -!DVM$ PARALLEL(J, I) ON B(I, J), SHADOW_RENEW(A), CUDA_BLOCK(256) -! Copying shadow elements of array A from -! neighbouring processors before loop execution - DO J = 2, L - 1 - DO I = 2, L - 1 - B(I, J) = (A(I, J-1) + A(I-1, J) + A(I+1, J) + A(I, J+1)) / 4. - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E14.7) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'Jacobi2D Benchmark Completed.' - PRINT 201, L, L -201 FORMAT (' Size = ', I6, ' x ', I6) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 58.37598) .LT. 1.0E-3) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF Jacobi2D Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.cdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.cdv deleted file mode 100644 index c4ac766..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.cdv +++ /dev/null @@ -1,96 +0,0 @@ -/* Jacobi-3 program */ - -#include -#include - -#define Max(a, b) ((a) > (b) ? (a) : (b)) - -#define L 384 -#define ITMAX 100 - -int i, j, k, it; -float eps; -float MAXEPS = 0.5f; - -/* 3D arrays block distributed along 3 dimensions */ -#pragma dvm array distribute[block][block][block] -float A[L][L][L]; -#pragma dvm array align([i][j][k] with A[i][j][k]) -float B[L][L][L]; - -int main(int an, char **as) -{ - double startt, endt; - #pragma dvm region - { - /* 3D parallel loop with base array A */ - #pragma dvm parallel([i][j][k] on A[i][j][k]) cuda_block(32, 8) - for (i = 0; i < L; i++) - for (j = 0; j < L; j++) - for (k = 0; k < L; k++) - { - A[i][j][k] = 0; - if (i == 0 || j == 0 || k == 0 || i == L - 1 || j == L - 1 || k == L - 1) - B[i][j][k] = 0; - else - B[i][j][k] = 4 + i + j + k; - } - } - -#ifdef _DVMH - dvmh_barrier(); - startt = dvmh_wtime(); -#else - startt = 0; -#endif - /* iteration loop */ - for (it = 1; it <= ITMAX; it++) - { - eps = 0; - #pragma dvm actual(eps) - - #pragma dvm region - { - /* Parallel loop with base array A */ - /* calculating maximum in variable eps */ - #pragma dvm parallel([i][j][k] on A[i][j][k]) reduction(max(eps)), cuda_block(32, 8) - for (i = 1; i < L - 1; i++) - for (j = 1; j < L - 1; j++) - for (k = 1; k < L - 1; k++) - { - float tmp = fabs(B[i][j][k] - A[i][j][k]); - eps = Max(tmp, eps); - A[i][j][k] = B[i][j][k]; - } - - /* Parallel loop with base array B and */ - /* with prior updating shadow elements of array A */ - #pragma dvm parallel([i][j][k] on B[i][j][k]) shadow_renew(A), cuda_block(32, 8) - for (i = 1; i < L - 1; i++) - for (j = 1; j < L - 1; j++) - for (k = 1; k < L - 1; k++) - B[i][j][k] = (A[i - 1][j][k] + A[i][j - 1][k] + A[i][j][k - 1] + A[i][j][k + 1] + A[i][j + 1][k] + A[i + 1][j][k]) / 6.0f; - } - - #pragma dvm get_actual(eps) - printf(" IT = %4i EPS = %14.7E\n", it, eps); - if (eps < MAXEPS) - break; - } -#ifdef _DVMH - dvmh_barrier(); - endt = dvmh_wtime(); -#else - endt = 0; -#endif - - printf(" Jacobi3D Benchmark Completed.\n"); - printf(" Size = %4d x %4d x %4d\n", L, L, L); - printf(" Iterations = %12d\n", ITMAX); - printf(" Time in seconds = %12.2lf\n", endt - startt); - printf(" Operation type = floating point\n"); - printf(" Verification = %12s\n", (fabs(eps - 5.058044) < 1e-4 ? "SUCCESSFUL" : "UNSUCCESSFUL")); - - printf(" END OF Jacobi3D Benchmark\n"); - return 0; -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.fdv b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.fdv deleted file mode 100644 index ddd7add..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/jac3d.fdv +++ /dev/null @@ -1,81 +0,0 @@ - PROGRAM JAC3D - PARAMETER (L=384, ITMAX=100) - REAL A(L, L, L), EPS, MAXEPS, B(L, L, L) - DOUBLE PRECISION STARTT, ENDT, dvtime -!DVM$ DISTRIBUTE(BLOCK, BLOCK, BLOCK) :: A -!DVM$ ALIGN B(I, J, K) WITH A(I, J, K) -! arrays A and B with block distribution - - MAXEPS = 0.5 -!DVM$ REGION -!DVM$ PARALLEL(K, J, I) ON A(I, J, K), CUDA_BLOCK(32, 8) -! nest of two parallel loops, iteration (i, j) will be executed on -! processor, which is owner of element A(i, j) - DO K = 1, L - DO J = 1, L - DO I = 1, L - A(I, J, K) = 0. - IF (I.EQ.1 .OR. J.EQ.1 .OR. K.EQ.1 - >.OR. I.EQ.L .OR. J.EQ.L .OR. K.EQ.L) THEN - B(I, J, K) = 0. - ELSE - B(I, J, K) = (1. + I + J + K) - ENDIF - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ BARRIER - STARTT = dvtime() - DO IT = 1, ITMAX - EPS = 0. -!DVM$ ACTUAL(EPS) -!DVM$ REGION -!DVM$ PARALLEL(K, J, I) ON A(I, J, K), REDUCTION(MAX(EPS)) -!DVM$>, CUDA_BLOCK(32, 8) -! variable EPS is used for calculation of maximum value - DO K = 2, L - 1 - DO J = 2, L - 1 - DO I = 2, L - 1 - EPS = MAX(EPS, ABS(B(I, J, K) - A(I, J, K))) - A(I, J, K) = B(I, J, K) - ENDDO - ENDDO - ENDDO -!DVM$ PARALLEL(K, J, I) ON B(I, J, K), SHADOW_RENEW(A) -!DVM$>, CUDA_BLOCK(32, 8) -! Copying shadow elements of array A from -! neighbouring processors before loop execution - DO K = 2, L - 1 - DO J = 2, L - 1 - DO I = 2, L - 1 - B(I, J, K) = (A(I, J, K-1) + A(I, J-1, K) + A(I-1, J, K) - >+ A(I+1, J, K) + A(I, J+1, K) + A(I, J, K+1)) / 6. - ENDDO - ENDDO - ENDDO -!DVM$ END REGION -!DVM$ GET_ACTUAL(EPS) - PRINT 200, IT, EPS -200 FORMAT (' IT = ', I4, ' EPS = ', E14.7) - IF (EPS .LT. MAXEPS) EXIT - ENDDO -!DVM$ BARRIER - ENDT = dvtime() - - PRINT *, 'Jacobi3D Benchmark Completed.' - PRINT 201, L, L, L -201 FORMAT (' Size = ', I4, ' x ', I4, ' x ', I4) - PRINT 202, ITMAX -202 FORMAT (' Iterations = ', I12) - PRINT 203, ENDT - STARTT -203 FORMAT (' Time in seconds = ', F12.2) - PRINT *, 'Operation type = floating point' - IF (ABS(EPS - 5.058044) .LT. 1.0E-4) THEN - PRINT *, 'Verification = SUCCESSFUL' - ELSE - PRINT *, 'Verification = UNSUCCESSFUL' - ENDIF - - PRINT *, 'END OF Jacobi3D Benchmark' - END diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/settings deleted file mode 100644 index 5c9ddf9..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/settings +++ /dev/null @@ -1,3 +0,0 @@ -MAX_PROC_COUNT=4 -MAX_DIM_PROC_COUNT=4 -MAX_TIME=60 # In seconds diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/test-analyzer.sh b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/test-analyzer.sh deleted file mode 100644 index d72fd3e..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/Performance/test-analyzer.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/sh - -# This is analyzer of output of NPB-style formed tests -# Requires variables: LAUNCH_EXIT_CODE, STDOUT_FN, STDERR_FN -# Produces variables: SUBTEST_COUNT, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL, TASK_CALC_TIME -# Produces functions: analyze_subtest - -SUBTEST_COUNT=`grep 'Completed.' <"$STDOUT_FN" | wc -l` - -if [ `grep -E 'Assertion' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Assertion failed" - ERROR_LEVEL=5 -elif [ `grep -E 'RTS fatal' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS fatal" - ERROR_LEVEL=4 -elif [ `grep -E 'RTS err' <"$STDERR_FN" | wc -l` -gt 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="RTS err" - ERROR_LEVEL=3 -elif [ `grep "END OF" <"$STDOUT_FN" | wc -l` -eq 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Crash" - ERROR_LEVEL=2 -elif [ $LAUNCH_EXIT_CODE -ne 0 ]; then - TEST_PASSED=0 - RESULT_COMMENT="Launch failure" - ERROR_LEVEL=6 -elif [ `grep ' SUCCESSFUL' <"$STDOUT_FN" | wc -l` -lt $SUBTEST_COUNT ]; then - TEST_PASSED=0 - RESULT_COMMENT="Has failed subtests" - ERROR_LEVEL=1 -else - TEST_PASSED=1 - RESULT_COMMENT="OK" - ERROR_LEVEL=0 -fi - -if [ $SUBTEST_COUNT -eq 1 ]; then - TASK_CALC_TIME=`grep 'Time in seconds' <"$STDOUT_FN" | awk '{ print $5 }'` -fi - -analyze_subtest() { - # Produces variables: SUBTEST_NAME, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL, TASK_CALC_TIME - local SUBTEST_RES_START=`grep -n 'Completed.' <"$STDOUT_FN" | head -n $1 | tail -n 1 | sed 's/:.*//g'` - local SUBTEST_RES_END= - if [ $1 -lt $SUBTEST_COUNT ]; then - SUBTEST_RES_END=`grep -n 'Completed.' <"$STDOUT_FN" | head -n $(( $1 + 1 )) | tail -n 1 | sed 's/:.*//g'` - SUBTEST_RES_END=$(( SUBTEST_RES_END - 1)) - else - SUBTEST_RES_END=`cat "$STDOUT_FN" | wc -l` - fi - local linecount=$(( SUBTEST_RES_END - SUBTEST_RES_START + 1 )) - local tmp=`mktemp` - cat "$STDOUT_FN" | head -n $SUBTEST_RES_END | tail -n $linecount >$tmp - SUBTEST_NAME=`grep "Completed." <$tmp | head -n 1 | awk '{ print $1 }'` - local CLASS_NAME=`grep "Class" <$tmp | head -n 1 | awk '{ print $3 }'` - if [ -n "$CLASS_NAME" ]; then - SUBTEST_NAME="$SUBTEST_NAME ($CLASS_NAME)" - fi - TEST_PASSED=`grep "Verification" <$tmp | head -n 1 | awk '{ print $3 }'` - if [ "$TEST_PASSED" = "SUCCESSFUL" ]; then - TEST_PASSED=1 - RESULT_COMMENT="OK" - ERROR_LEVEL=0 - else - TEST_PASSED=0 - RESULT_COMMENT="Subtest failed" - ERROR_LEVEL=1 - fi - TASK_CALC_TIME=`grep 'Time in seconds' <$tmp | awk '{ print $5 }'` - rm $tmp -} diff --git a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/settings b/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/settings deleted file mode 100644 index 2d65b60..0000000 --- a/Sapfor/_projects/dvm/tools/tester/trunk/test-suite/settings +++ /dev/null @@ -1,7 +0,0 @@ -MAX_PROC_COUNT=1 -MAX_DIM_PROC_COUNT=0 -SHARE_RESOURCES=0 -ALLOW_MULTIDEV=1 -DVM_ONLY=0 -GPU_ONLY=0 -MAX_TIME=300 # In seconds