diff --git a/docs/api/doxygen_config.txt b/docs/api/doxygen_config.txt
index 74deecb5..f1ee9b94 100644
--- a/docs/api/doxygen_config.txt
+++ b/docs/api/doxygen_config.txt
@@ -54,7 +54,7 @@ PROJECT_NUMBER =
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
-PROJECT_BRIEF = "Yet Another Stencil Kit: a software framework for creating HPC stencil code. Copyright 2014-2022 Intel Corporation."
+PROJECT_BRIEF = "Yet Another Stencil Kit: a software framework for creating HPC stencil code. Copyright 2014-2023 Intel Corporation."
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
diff --git a/docs/api/html/annotated.html b/docs/api/html/annotated.html
index b68b2e1f..83872461 100644
--- a/docs/api/html/annotated.html
+++ b/docs/api/html/annotated.html
@@ -23,7 +23,7 @@
YASK
-
Yet Another Stencil Kit: a software framework for creating HPC stencil code. Copyright 2014-2022 Intel Corporation.
+
Yet Another Stencil Kit: a software framework for creating HPC stencil code. Copyright 2014-2023 Intel Corporation.
Convenience funcion to tokenize args from a string.
+
+
+
Detailed Description
+
A class to parse command-line arguments.
+
This is the class used to parse command-line arguments for the YASK kernel and compiler libraries. It is provided as a convenience for API programmers who want to parse application options in a consistent manner.
diff --git a/include/aux/Soln.hpp b/include/aux/Soln.hpp
index c90d1ff1..52bfa8c7 100644
--- a/include/aux/Soln.hpp
+++ b/include/aux/Soln.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/aux/yc_node_api.hpp b/include/aux/yc_node_api.hpp
index ed09dd92..6795b771 100644
--- a/include/aux/yc_node_api.hpp
+++ b/include/aux/yc_node_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/aux/yc_solution_api.hpp b/include/aux/yc_solution_api.hpp
index 3cc52a60..68f571ff 100644
--- a/include/aux/yc_solution_api.hpp
+++ b/include/aux/yc_solution_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/aux/yk_solution_api.hpp b/include/aux/yk_solution_api.hpp
index 65dfe2ab..f5474e64 100644
--- a/include/aux/yk_solution_api.hpp
+++ b/include/aux/yk_solution_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/aux/yk_var_api.hpp b/include/aux/yk_var_api.hpp
index 0811f243..8edc7e7c 100644
--- a/include/aux/yk_var_api.hpp
+++ b/include/aux/yk_var_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/yask_common_api.hpp b/include/yask_common_api.hpp
index 54252efb..47cc1cc8 100644
--- a/include/yask_common_api.hpp
+++ b/include/yask_common_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -659,11 +659,14 @@ namespace yask {
/// Print a YASK spash message to `os`.
/**
Splash message contains the YASK copyright, URL, and version.
- If `argc > 1`, also prints the program invocation string.
+ If `argc > 1`, also prints `invocation_leader` followed by
+ the program invocation string.
+
+ @note Not available in the Python API.
*/
extern void
- yask_print_splash(std::ostream& os, int argc, char** argv);
-
+ yask_print_splash(std::ostream& os, int argc, char** argv,
+ std::string invocation_leader = "invocation: ");
#endif
/** @}*/
diff --git a/include/yask_compiler_api.hpp b/include/yask_compiler_api.hpp
index d868bfb8..d1c92794 100644
--- a/include/yask_compiler_api.hpp
+++ b/include/yask_compiler_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/include/yask_kernel_api.hpp b/include/yask_kernel_api.hpp
index a01120f5..98656479 100644
--- a/include/yask_kernel_api.hpp
+++ b/include/yask_kernel_api.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -197,6 +197,19 @@ namespace yask {
static yask_output_ptr
get_debug_output();
+ /// Print a YASK spash message to debug output.
+ /**
+ Splash message contains the YASK copyright, URL, and version.
+ If `argc > 1`, also prints `invocation_leader` followed by
+ the program invocation string.
+ */
+ static inline void
+ print_splash(int argc, char** argv,
+ std::string invocation_leader = "invocation: ") {
+ yask_print_splash(get_debug_output()->get_ostream(),
+ argc, argv, invocation_leader);
+ }
+
/// Enable or disable additional debug tracing.
/**
This is a static method, implying the following:
diff --git a/src/common/combo.cpp b/src/common/combo.cpp
index 4640056a..f00d17ce 100644
--- a/src/common/combo.cpp
+++ b/src/common/combo.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/combo.hpp b/src/common/combo.hpp
index 96f3224d..6146eb17 100644
--- a/src/common/combo.hpp
+++ b/src/common/combo.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/common.mk b/src/common/common.mk
index fe81569a..d2e1cc71 100644
--- a/src/common/common.mk
+++ b/src/common/common.mk
@@ -1,6 +1,6 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/common/common_utils.cpp b/src/common/common_utils.cpp
index 20fc246e..a87bfcbd 100644
--- a/src/common/common_utils.cpp
+++ b/src/common/common_utils.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -44,7 +44,7 @@ namespace yask {
// for numbers above 9 (at least up to 99).
// Format: "major.minor.patch[-alpha|-beta]".
- const string version = "4.01.00";
+ const string version = "4.01.01";
string yask_get_version_string() {
return version;
@@ -145,6 +145,28 @@ namespace yask {
return os.str();
}
+ // Add quotes around whitespace in string.
+ std::string quote_whitespace(const std::string& str) {
+ auto pos = str.find_first_of(" \t\r\n");
+ if (pos != string::npos) {
+ string r = str;
+
+ // Must not use chars already in the string.
+ auto apos = r.find('\'');
+ auto qpos = r.find('"');
+ if (apos == string::npos) // No apostrophes.
+ r = string("\"") + r + '"'; // Add quotes.
+ else if (qpos == string::npos) // No quotes.
+ r = string("'") + r + "'"; // Add apostrophes.
+ else { // Has both :(.
+ r = regex_replace(r, regex("'"), "\\'"); // Escape apostrophes.
+ r = string("'") + r + "'"; // Add apostrophes.
+ }
+ return r;
+ }
+ return str;
+ }
+
// A var that behaves like OMP_NUM_THREADS.
int yask_num_threads[yask_max_levels] = { 0 };
@@ -449,8 +471,8 @@ namespace yask {
string str;
while (getline(ss, str, ',')) {
if (_allowed_strs.size() && _allowed_strs.count(str) == 0) {
- THROW_YASK_EXCEPTION("illegal argument '" + str + "' to option '" +
- args[argi - 2] + "'");
+ THROW_YASK_EXCEPTION("illegal argument '" + quote_whitespace(str) +
+ "' to option '" + args[argi - 2] + "'");
}
_val.push_back(str);
}
@@ -525,22 +547,8 @@ namespace yask {
rem += " "; // Space between words.
// Add quotes around 'r' if it has whitespace.
- auto pos = r.find_first_of(" \t\r\n");
- if (pos != string::npos) {
-
- // Must not use chars already in the string.
- auto apos = r.find('\'');
- auto qpos = r.find('"');
- if (apos == string::npos) // No apostrophes.
- r = string("\"") + r + '"'; // Add quotes.
- else if (qpos == string::npos) // No quotes.
- r = string("'") + r + "'"; // Add apostrophes.
- else { // Has both :(.
- r = regex_replace(r, regex("'"), "\\'"); // Escape apostrophes.
- r = string("'") + r + "'"; // Add apostrophes.
- }
- }
-
+ r = quote_whitespace(r);
+
rem += r;
}
return rem;
@@ -549,6 +557,7 @@ namespace yask {
// Tokenize args from a string.
vector command_line_parser::set_args(const string& arg_string) {
string tmp; // current arg.
+ bool is_ok = false; // current arg is valid.
char in_quote = '\0'; // current string delimiter or null if none.
vector args;
for (char c : arg_string) {
@@ -559,8 +568,7 @@ namespace yask {
// End of quoted string, i.e., this char
// matches opening quote.
if (in_quote == c) {
- args.push_back(tmp); // may be empty string.
- tmp.clear();
+ is_ok = true; // even if empty.
in_quote = '\0';
}
@@ -570,9 +578,10 @@ namespace yask {
// If WS, save old string and start a new string.
else if (isspace(c)) {
- if (tmp.length())
+ if (is_ok)
args.push_back(tmp);
tmp.clear();
+ is_ok = false;
}
// If quote, remember delimiter.
@@ -581,8 +590,10 @@ namespace yask {
}
// Otherwise, just add to tmp.
- else
+ else {
tmp += c;
+ is_ok = true;
+ }
}
if (in_quote != '\0')
@@ -590,27 +601,31 @@ namespace yask {
arg_string + "'");
// Last string.
- if (tmp.length())
+ if (is_ok)
args.push_back(tmp);
return args;
}
// Print a spash message.
- void yask_print_splash(ostream& os, int argc, char** argv) {
+ void yask_print_splash(ostream& os, int argc, char** argv,
+ string invocation_leader) {
// See https://en.wikipedia.org/wiki/Box-drawing_character.
os <<
"\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n"
"\u2502 Y*A*S*K \u2500\u2500 Yet Another Stencil Kit \u2502\n"
"\u2502 https://github.com/intel/yask \u2502\n"
- "\u2502 Copyright (c) 2014-2022, Intel Corporation \u2502\n"
+ "\u2502 Copyright (c) 2014-2023, Intel Corporation \u2502\n"
"\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n"
"Version: " << yask_get_version_string() << endl;
// Echo invocation parameters for record-keeping.
if (argc) {
- os << "Binary invocation:";
- for (int argi = 0; argi < argc; argi++)
- os << " " << argv[argi];
+ os << invocation_leader;
+ for (int argi = 0; argi < argc; argi++) {
+ if (argi)
+ os << " ";
+ os << quote_whitespace(argv[argi]);
+ }
os << endl;
}
}
diff --git a/src/common/common_utils.hpp b/src/common/common_utils.hpp
index 24d04360..094b7c16 100644
--- a/src/common/common_utils.hpp
+++ b/src/common/common_utils.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -81,6 +81,9 @@ namespace yask {
extern std::string make_num_str(idx_t num);
extern std::string make_num_str(double num);
+ // Add quotes around whitespace in string.
+ extern std::string quote_whitespace(const std::string& str);
+
// Divide 'num' equally into 'nparts'.
// Returns the size of the 'n'th part,
// where 0 <= 'n' < 'nparts'.
diff --git a/src/common/fd_coeff2.cpp b/src/common/fd_coeff2.cpp
index 1e0466a1..99c2fa7b 100644
--- a/src/common/fd_coeff2.cpp
+++ b/src/common/fd_coeff2.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/idiv.hpp b/src/common/idiv.hpp
index 2352b161..2eb05203 100644
--- a/src/common/idiv.hpp
+++ b/src/common/idiv.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/output.cpp b/src/common/output.cpp
index deb5ed3b..fb49a07f 100644
--- a/src/common/output.cpp
+++ b/src/common/output.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/swig/yask_common_api.i b/src/common/swig/yask_common_api.i
index 2fd11e68..1d203679 100644
--- a/src/common/swig/yask_common_api.i
+++ b/src/common/swig/yask_common_api.i
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/tests/combo_test.cpp b/src/common/tests/combo_test.cpp
index 59b11533..4e6636d2 100644
--- a/src/common/tests/combo_test.cpp
+++ b/src/common/tests/combo_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/tests/tuple_test.cpp b/src/common/tests/tuple_test.cpp
index d23e01fa..1150b784 100644
--- a/src/common/tests/tuple_test.cpp
+++ b/src/common/tests/tuple_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/tuple.cpp b/src/common/tuple.cpp
index f71e78da..4751822a 100644
--- a/src/common/tuple.cpp
+++ b/src/common/tuple.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/tuple.hpp b/src/common/tuple.hpp
index 5739c28c..3ed26142 100644
--- a/src/common/tuple.hpp
+++ b/src/common/tuple.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/common/yask_assert.hpp b/src/common/yask_assert.hpp
index 2d727aed..3e46e382 100644
--- a/src/common/yask_assert.hpp
+++ b/src/common/yask_assert.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/Makefile b/src/compiler/Makefile
index 4f993435..6529524a 100644
--- a/src/compiler/Makefile
+++ b/src/compiler/Makefile
@@ -1,6 +1,6 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/compiler_main.cpp b/src/compiler/compiler_main.cpp
index 09e9add4..32267d37 100644
--- a/src/compiler/compiler_main.cpp
+++ b/src/compiler/compiler_main.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -167,8 +167,7 @@ int main(int argc, char* argv[]) {
yc_factory factory;
try {
- yask_print_splash(cout, argc, argv);
- cout << "\nYASK Stencil Compiler\n";
+ yask_print_splash(cout, argc, argv, "YASK Stencil Compiler invocation: ");
// Option parser.
MySettings my_settings;
diff --git a/src/compiler/lib/Cpp.cpp b/src/compiler/lib/Cpp.cpp
index 064f3b1c..35673a23 100644
--- a/src/compiler/lib/Cpp.cpp
+++ b/src/compiler/lib/Cpp.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Cpp.hpp b/src/compiler/lib/Cpp.hpp
index a579a992..c42b71f6 100644
--- a/src/compiler/lib/Cpp.hpp
+++ b/src/compiler/lib/Cpp.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/CppIntrin.cpp b/src/compiler/lib/CppIntrin.cpp
index 76f1f955..9fc273a9 100644
--- a/src/compiler/lib/CppIntrin.cpp
+++ b/src/compiler/lib/CppIntrin.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/CppIntrin.hpp b/src/compiler/lib/CppIntrin.hpp
index d31eb08a..6f296ccc 100644
--- a/src/compiler/lib/CppIntrin.hpp
+++ b/src/compiler/lib/CppIntrin.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Eqs.cpp b/src/compiler/lib/Eqs.cpp
index f422d34a..3f4bbecc 100644
--- a/src/compiler/lib/Eqs.cpp
+++ b/src/compiler/lib/Eqs.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Eqs.hpp b/src/compiler/lib/Eqs.hpp
index 8a9b39f5..3517ad6b 100644
--- a/src/compiler/lib/Eqs.hpp
+++ b/src/compiler/lib/Eqs.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Expr.cpp b/src/compiler/lib/Expr.cpp
index 001c7a89..551178c7 100644
--- a/src/compiler/lib/Expr.cpp
+++ b/src/compiler/lib/Expr.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Expr.hpp b/src/compiler/lib/Expr.hpp
index 13caeab5..f879aa36 100644
--- a/src/compiler/lib/Expr.hpp
+++ b/src/compiler/lib/Expr.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/ExprUtils.cpp b/src/compiler/lib/ExprUtils.cpp
index 2e2b021e..3262ba48 100644
--- a/src/compiler/lib/ExprUtils.cpp
+++ b/src/compiler/lib/ExprUtils.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/ExprUtils.hpp b/src/compiler/lib/ExprUtils.hpp
index d1ed5eac..f06286ca 100644
--- a/src/compiler/lib/ExprUtils.hpp
+++ b/src/compiler/lib/ExprUtils.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Print.cpp b/src/compiler/lib/Print.cpp
index d8bead8d..bddcba55 100644
--- a/src/compiler/lib/Print.cpp
+++ b/src/compiler/lib/Print.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Print.hpp b/src/compiler/lib/Print.hpp
index 536a16b8..a5d0eea7 100644
--- a/src/compiler/lib/Print.hpp
+++ b/src/compiler/lib/Print.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Settings.cpp b/src/compiler/lib/Settings.cpp
index 009445f4..54b4ed3e 100644
--- a/src/compiler/lib/Settings.cpp
+++ b/src/compiler/lib/Settings.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Settings.hpp b/src/compiler/lib/Settings.hpp
index 39ee7dfc..7c6fdd0d 100644
--- a/src/compiler/lib/Settings.hpp
+++ b/src/compiler/lib/Settings.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Solution.cpp b/src/compiler/lib/Solution.cpp
index 3f1ec919..ca82455c 100644
--- a/src/compiler/lib/Solution.cpp
+++ b/src/compiler/lib/Solution.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Solution.hpp b/src/compiler/lib/Solution.hpp
index 1cb478d9..2e33ab18 100644
--- a/src/compiler/lib/Solution.hpp
+++ b/src/compiler/lib/Solution.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Var.cpp b/src/compiler/lib/Var.cpp
index 631b62f7..c31e83ce 100644
--- a/src/compiler/lib/Var.cpp
+++ b/src/compiler/lib/Var.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Var.hpp b/src/compiler/lib/Var.hpp
index 0ed2b533..437aaec8 100644
--- a/src/compiler/lib/Var.hpp
+++ b/src/compiler/lib/Var.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/VarPoint.cpp b/src/compiler/lib/VarPoint.cpp
index 28aabceb..313ae4a0 100644
--- a/src/compiler/lib/VarPoint.cpp
+++ b/src/compiler/lib/VarPoint.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/VarPoint.hpp b/src/compiler/lib/VarPoint.hpp
index ea64a0d3..3b203aa7 100644
--- a/src/compiler/lib/VarPoint.hpp
+++ b/src/compiler/lib/VarPoint.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Vec.cpp b/src/compiler/lib/Vec.cpp
index 09552011..5549b9f7 100644
--- a/src/compiler/lib/Vec.cpp
+++ b/src/compiler/lib/Vec.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Vec.hpp b/src/compiler/lib/Vec.hpp
index d038adc7..aba6c9a3 100644
--- a/src/compiler/lib/Vec.hpp
+++ b/src/compiler/lib/Vec.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/Visitor.hpp b/src/compiler/lib/Visitor.hpp
index 54ae534a..9274a54d 100644
--- a/src/compiler/lib/Visitor.hpp
+++ b/src/compiler/lib/Visitor.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/lib/YaskKernel.cpp b/src/compiler/lib/YaskKernel.cpp
index 113df652..18c8136f 100644
--- a/src/compiler/lib/YaskKernel.cpp
+++ b/src/compiler/lib/YaskKernel.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/swig/yask_compiler_api.i b/src/compiler/swig/yask_compiler_api.i
index 49e5e5d4..a18086b7 100644
--- a/src/compiler/swig/yask_compiler_api.i
+++ b/src/compiler/swig/yask_compiler_api.i
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/tests/yask_compiler_api_exception_test.cpp b/src/compiler/tests/yask_compiler_api_exception_test.cpp
index d79304bf..4def80ac 100644
--- a/src/compiler/tests/yask_compiler_api_exception_test.cpp
+++ b/src/compiler/tests/yask_compiler_api_exception_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/tests/yask_compiler_api_exception_test.py b/src/compiler/tests/yask_compiler_api_exception_test.py
index 1223c655..31ae317d 100755
--- a/src/compiler/tests/yask_compiler_api_exception_test.py
+++ b/src/compiler/tests/yask_compiler_api_exception_test.py
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/tests/yask_compiler_api_test.cpp b/src/compiler/tests/yask_compiler_api_test.cpp
index bbf4610d..9974a2e7 100644
--- a/src/compiler/tests/yask_compiler_api_test.cpp
+++ b/src/compiler/tests/yask_compiler_api_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/compiler/tests/yask_compiler_api_test.py b/src/compiler/tests/yask_compiler_api_test.py
index a3228ec0..2b042a76 100755
--- a/src/compiler/tests/yask_compiler_api_test.py
+++ b/src/compiler/tests/yask_compiler_api_test.py
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/contrib/coefficients/fd_coeff.cpp b/src/contrib/coefficients/fd_coeff.cpp
index 643bb5d2..8ff551e8 100644
--- a/src/contrib/coefficients/fd_coeff.cpp
+++ b/src/contrib/coefficients/fd_coeff.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/contrib/coefficients/fd_coeff.hpp b/src/contrib/coefficients/fd_coeff.hpp
index 461834ab..92ca7ad0 100644
--- a/src/contrib/coefficients/fd_coeff.hpp
+++ b/src/contrib/coefficients/fd_coeff.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/contrib/coefficients/fd_coeff_test.cpp b/src/contrib/coefficients/fd_coeff_test.cpp
index 4fa433b7..17d181cc 100644
--- a/src/contrib/coefficients/fd_coeff_test.cpp
+++ b/src/contrib/coefficients/fd_coeff_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/Makefile b/src/kernel/Makefile
index 6c942a2f..d808fe77 100644
--- a/src/kernel/Makefile
+++ b/src/kernel/Makefile
@@ -1,6 +1,6 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/alloc.cpp b/src/kernel/lib/alloc.cpp
index 55ec4d9e..2e2cb94d 100644
--- a/src/kernel/lib/alloc.cpp
+++ b/src/kernel/lib/alloc.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/alloc.hpp b/src/kernel/lib/alloc.hpp
index 69838394..e3b36ee1 100644
--- a/src/kernel/lib/alloc.hpp
+++ b/src/kernel/lib/alloc.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/auto_tuner.cpp b/src/kernel/lib/auto_tuner.cpp
index 9f1ebf2f..6ffc517a 100644
--- a/src/kernel/lib/auto_tuner.cpp
+++ b/src/kernel/lib/auto_tuner.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/auto_tuner.hpp b/src/kernel/lib/auto_tuner.hpp
index 7d003650..5d6bece9 100644
--- a/src/kernel/lib/auto_tuner.hpp
+++ b/src/kernel/lib/auto_tuner.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/cache_model.hpp b/src/kernel/lib/cache_model.hpp
index f5abac82..44d56168 100644
--- a/src/kernel/lib/cache_model.hpp
+++ b/src/kernel/lib/cache_model.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/context.cpp b/src/kernel/lib/context.cpp
index 1e13f202..c9a2a32d 100644
--- a/src/kernel/lib/context.cpp
+++ b/src/kernel/lib/context.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -107,12 +107,13 @@ namespace yask {
update_scratch_var_info(scratch_var_idx, rank_idxs.begin);
// Doing all parts.
- init_mpi_flags();
+ MpiSection mpisec(this);
+ mpisec.init();
// Initial halo exchange.
// TODO: get rid of all halo exchanges in this function,
// and calculate overall problem in one rank.
- exchange_halos();
+ exchange_halos(mpisec);
// Number of iterations to get from begin_t, stopping before end_t,
// jumping by stride_t.
@@ -147,7 +148,7 @@ namespace yask {
}
// Exchange all dirty halos.
- exchange_halos();
+ exchange_halos(mpisec);
// Find the bundles that need to be processed.
// This will be the prerequisite scratch-var
@@ -183,7 +184,7 @@ namespace yask {
steps_done += abs(end_t - begin_t);
// Final halo exchange.
- exchange_halos();
+ exchange_halos(mpisec);
run_time.stop();
@@ -320,7 +321,8 @@ namespace yask {
set_num_outer_threads();
// Initial halo exchange.
- exchange_halos();
+ MpiSection mpisec(this);
+ exchange_halos(mpisec);
// Number of iterations to get from begin_t to end_t-1,
// jumping by stride_t.
@@ -361,7 +363,7 @@ namespace yask {
// Do MPI-external parts separately?
if (mpi_interior.bb_valid) {
- do_mpi_interior = false;
+ mpisec.do_mpi_interior = false;
// Overlap comms and computation by restricting
// mega-block boundaries. Make an external pass for
@@ -377,9 +379,10 @@ namespace yask {
// Set the proper flags to indicate what
// section we're working on.
- do_mpi_left = is_left;
- do_mpi_right = !is_left;
- mpi_exterior_dim = j;
+ mpisec.do_mpi_left = is_left;
+ mpisec.do_mpi_right = !is_left;
+ mpisec.mpi_exterior_dim = j;
+ assert(mpisec.is_overlap_active());
// Include automatically-generated loop
// code to call calc_mega_block() for
@@ -398,7 +401,7 @@ namespace yask {
#include "yask_rank_loops.hpp"
// Loop body.
- calc_mega_block(bp, mega_block_range);
+ calc_mega_block(bp, mega_block_range, mpisec);
// Loop suffix.
#define RANK_USE_LOOP_PART_1
@@ -418,12 +421,12 @@ namespace yask {
update_var_info(bp, start_t, stop_t, true);
// Do the appropriate steps for halo exchange of exterior.
- do_mpi_left = do_mpi_right = true;
- exchange_halos();
+ mpisec.do_mpi_left = mpisec.do_mpi_right = true;
+ exchange_halos(mpisec);
// Do interior only in next pass.
- do_mpi_left = do_mpi_right = false;
- do_mpi_interior = true;
+ mpisec.do_mpi_left = mpisec.do_mpi_right = false;
+ mpisec.do_mpi_interior = true;
} // Exterior only for overlapping comms.
@@ -441,22 +444,22 @@ namespace yask {
#include "yask_rank_loops.hpp"
// Loop body.
- calc_mega_block(bp, mega_block_range);
+ calc_mega_block(bp, mega_block_range, mpisec);
// Loop suffix.
#define RANK_USE_LOOP_PART_1
#include "yask_rank_loops.hpp"
// Mark as dirty only if we just did exterior.
- bool mark_dirty = do_mpi_left || do_mpi_right;
+ bool mark_dirty = mpisec.do_mpi_left || mpisec.do_mpi_right;
update_var_info(bp, start_t, stop_t, mark_dirty);
// Do the appropriate steps for halo exchange depending
// on 'do_mpi_*' flags.
- exchange_halos();
+ exchange_halos(mpisec);
// Set the overlap flags back to default.
- init_mpi_flags();
+ mpisec.init();
} // stages.
} // No WF tiling.
@@ -471,7 +474,7 @@ namespace yask {
// Do MPI-external parts separately?
if (mpi_interior.bb_valid) {
- do_mpi_interior = false;
+ mpisec.do_mpi_interior = false;
// Overlap comms and computation by restricting
// mega-block boundaries. Make an external pass for
@@ -487,9 +490,10 @@ namespace yask {
// Set the proper flags to indicate what
// section we're working on.
- do_mpi_left = is_left;
- do_mpi_right = !is_left;
- mpi_exterior_dim = j;
+ mpisec.do_mpi_left = is_left;
+ mpisec.do_mpi_right = !is_left;
+ mpisec.mpi_exterior_dim = j;
+ assert(mpisec.is_overlap_active());
// Include automatically-generated loop
// code to call calc_mega_block(bp) for
@@ -508,7 +512,7 @@ namespace yask {
#include "yask_rank_loops.hpp"
// Loop body.
- calc_mega_block(bp, mega_block_range);
+ calc_mega_block(bp, mega_block_range, mpisec);
// Loop suffix.
#define RANK_USE_LOOP_PART_1
@@ -521,12 +525,12 @@ namespace yask {
update_var_info(bp, start_t, stop_t, true);
// Do the appropriate steps for halo exchange of exterior.
- do_mpi_left = do_mpi_right = true;
- exchange_halos();
+ mpisec.do_mpi_left = mpisec.do_mpi_right = true;
+ exchange_halos(mpisec);
// Do interior only in next pass.
- do_mpi_left = do_mpi_right = false;
- do_mpi_interior = true;
+ mpisec.do_mpi_left = mpisec.do_mpi_right = false;
+ mpisec.do_mpi_interior = true;
} // Exterior only for overlapping comms.
@@ -544,22 +548,22 @@ namespace yask {
#include "yask_rank_loops.hpp"
// Loop body.
- calc_mega_block(bp, mega_block_range);
+ calc_mega_block(bp, mega_block_range, mpisec);
// Loop suffix.
#define RANK_USE_LOOP_PART_1
#include "yask_rank_loops.hpp"
// Mark as dirty only if we just did exterior.
- bool mark_dirty = do_mpi_left || do_mpi_right;
+ bool mark_dirty = mpisec.do_mpi_left || mpisec.do_mpi_right;
update_var_info(bp, start_t, stop_t, mark_dirty);
// Do the appropriate steps for halo exchange depending
// on 'do_mpi_*' flags.
- exchange_halos();
+ exchange_halos(mpisec);
// Set the overlap flags back to default.
- init_mpi_flags();
+ mpisec.init();
} // With WF tiling.
@@ -622,22 +626,23 @@ namespace yask {
} // run_solution().
// Calculate results within a mega-block. Each mega-block is typically computed
- // in a separate OpenMP 'for' region. In this function, we loop over
+ // via a separate OpenMP 'for' region. In this function, we loop over
// the time steps and stages and evaluate a stage in each of
// the blocks in the mega-block. If 'sel_bp' is null, eval all stages; else
// eval only the one pointed to.
void StencilContext::calc_mega_block(StagePtr& sel_bp,
- const ScanIndices& rank_idxs) {
+ const ScanIndices& rank_idxs,
+ MpiSection& mpisec) {
STATE_VARS(this);
TRACE_MSG("calc_mega_block: mega-block [" <<
rank_idxs.start.make_val_str() << " ... " <<
rank_idxs.stop.make_val_str() << ") within possibly-adjusted rank [" <<
rank_idxs.begin.make_val_str() << " ... " <<
rank_idxs.end.make_val_str() << ") for " <<
- make_mpi_section_descr());
+ mpisec.make_descr());
// Track time separately for MPI exterior and interior.
- if (!do_mpi_interior && (do_mpi_left || do_mpi_right))
+ if (mpisec.is_exterior_active())
ext_time.start();
else
int_time.start();
@@ -708,8 +713,8 @@ namespace yask {
// boundaries, and stage BB. This will be the base of the
// mega-block loops.
bool ok = shift_mega_block(rank_idxs.start, rank_idxs.stop,
- mega_block_shift_num, bp,
- mega_block_idxs);
+ mega_block_shift_num, bp,
+ mega_block_idxs, mpisec);
mega_block_idxs.adjust_from_settings(actl_opts->_mega_block_sizes,
actl_opts->_mega_block_tile_sizes,
actl_opts->_block_sizes);
@@ -736,7 +741,8 @@ namespace yask {
#include "yask_mega_block_loops.hpp"
// Loop body.
- calc_block(bp, mega_block_shift_num, nphases, phase, rank_idxs, blk_range);
+ calc_block(bp, mega_block_shift_num, nphases, phase,
+ rank_idxs, blk_range, mpisec);
// Loop suffix.
#define MEGA_BLOCK_USE_LOOP_PART_1
@@ -773,11 +779,11 @@ namespace yask {
// loops. The bounds in mega_block_idxs may be outside the
// actual rank because we're starting with the expanded rank.
bool ok = shift_mega_block(rank_idxs.start, rank_idxs.stop,
- mega_block_shift_num, bp,
- mega_block_idxs);
+ mega_block_shift_num, bp,
+ mega_block_idxs, mpisec);
mega_block_idxs.adjust_from_settings(settings._mega_block_sizes,
- settings._mega_block_tile_sizes,
- settings._block_sizes);
+ settings._mega_block_tile_sizes,
+ settings._block_sizes);
// Should always be valid because we just shifted (no trim).
// Trimming will be done at the micro-block level.
@@ -803,7 +809,8 @@ namespace yask {
#include "yask_mega_block_loops.hpp"
// Loop body.
- calc_block(bp, mega_block_shift_num, nphases, phase, rank_idxs, blk_range);
+ calc_block(bp, mega_block_shift_num, nphases, phase,
+ rank_idxs, blk_range, mpisec);
// Loop suffix.
#define MEGA_BLOCK_USE_LOOP_PART_1
@@ -829,7 +836,7 @@ namespace yask {
} // with temporal blocking.
} // time.
- if (!do_mpi_interior && (do_mpi_left || do_mpi_right)) {
+ if (mpisec.is_exterior_active()) {
double ext_delta = ext_time.stop();
TRACE_MSG("secs spent in this mega-block for rank-exterior blocks: " << make_num_str(ext_delta));
}
@@ -849,7 +856,8 @@ namespace yask {
idx_t mega_block_shift_num,
idx_t nphases, idx_t phase,
const ScanIndices& rank_idxs,
- const ScanIndices& mega_block_idxs) {
+ const ScanIndices& mega_block_idxs,
+ MpiSection& mpisec) {
STATE_VARS(this);
auto* bp = sel_bp.get();
@@ -922,8 +930,9 @@ namespace yask {
// Loop body.
calc_micro_block(outer_thread_idx, bp, mega_block_shift_num,
- nphases, phase, nshapes, shape, bridge_mask,
- rank_idxs, mega_block_idxs, block_idxs, micro_blk_range);
+ nphases, phase, nshapes, shape, bridge_mask,
+ rank_idxs, mega_block_idxs, block_idxs, micro_blk_range,
+ mpisec);
// Loop suffix.
#define BLOCK_USE_LOOP_PART_1
@@ -1006,8 +1015,9 @@ namespace yask {
// Loop body.
calc_micro_block(outer_thread_idx, bp, mega_block_shift_num,
- nphases, phase, nshapes, shape, bridge_mask,
- rank_idxs, mega_block_idxs, block_idxs, micro_blk_range);
+ nphases, phase, nshapes, shape, bridge_mask,
+ rank_idxs, mega_block_idxs, block_idxs, micro_blk_range,
+ mpisec);
// Loop suffix.
#define BLOCK_USE_LOOP_PART_1
@@ -1024,15 +1034,16 @@ namespace yask {
// 'phase' are computed. The starting 'shift_num' is relative
// to the bottom of the current mega-block and block.
void StencilContext::calc_micro_block(int outer_thread_idx,
- StagePtr& sel_bp,
- idx_t mega_block_shift_num,
- idx_t nphases, idx_t phase,
- idx_t nshapes, idx_t shape,
- const bit_mask_t& bridge_mask,
- const ScanIndices& rank_idxs,
- const ScanIndices& base_mega_block_idxs,
- const ScanIndices& base_block_idxs,
- const ScanIndices& adj_block_idxs) {
+ StagePtr& sel_bp,
+ idx_t mega_block_shift_num,
+ idx_t nphases, idx_t phase,
+ idx_t nshapes, idx_t shape,
+ const bit_mask_t& bridge_mask,
+ const ScanIndices& rank_idxs,
+ const ScanIndices& base_mega_block_idxs,
+ const ScanIndices& base_block_idxs,
+ const ScanIndices& adj_block_idxs,
+ MpiSection& mpisec) {
STATE_VARS(this);
TRACE_MSG("calc_micro_block: phase " << phase <<
@@ -1049,7 +1060,7 @@ namespace yask {
// Promote forward progress in MPI when calc'ing interior
// only. Call from one thread only.
// Let all other threads continue.
- if (is_overlap_active() && do_mpi_interior) {
+ if (mpisec.is_overlap_active() && mpisec.do_mpi_interior) {
if (outer_thread_idx == 0)
adv_halo_exchange();
}
@@ -1128,7 +1139,7 @@ namespace yask {
// local micro-block shift counts.
bool ok = shift_mega_block(rank_idxs.start, rank_idxs.stop,
mega_block_shift_num + shift_num, bp,
- micro_block_idxs);
+ micro_block_idxs, mpisec);
// Set micro_block_idxs begin & end based on shifted begin &
// end of block for given phase & shape. This will be the
@@ -1158,7 +1169,7 @@ namespace yask {
// Call calc_micro_block() for each non-scratch bundle.
for (auto* sb : *bp)
if (sb->get_bb().bb_num_points)
- sb->calc_micro_block(outer_thread_idx, *actl_opts, micro_block_idxs);
+ sb->calc_micro_block(outer_thread_idx, *actl_opts, micro_block_idxs, mpisec);
// Make sure streaming stores are visible for later loads.
make_stores_visible();
@@ -1185,7 +1196,8 @@ namespace yask {
const Indices& base_stop,
idx_t shift_num,
StagePtr& bp,
- ScanIndices& idxs) {
+ ScanIndices& idxs,
+ const MpiSection& mpisec) {
STATE_VARS(this);
// For wavefront adjustments, see conceptual diagram in
@@ -1232,7 +1244,7 @@ namespace yask {
rstop = min(rstop, dend + right_wf_exts[j] - shift_amt);
// Trim mega-block based on current MPI section if overlapping.
- if (is_overlap_active()) {
+ if (mpisec.is_overlap_active()) {
// Interior boundaries.
idx_t int_begin = mpi_interior.bb_begin[j];
@@ -1270,7 +1282,7 @@ namespace yask {
}
// In interior.
- if (do_mpi_interior) {
+ if (mpisec.do_mpi_interior) {
rstart = max(rstart, int_begin);
rstop = min(rstop, int_end);
}
@@ -1279,11 +1291,11 @@ namespace yask {
else {
// Should be doing either left or right, not both.
- assert(do_mpi_left != do_mpi_right);
+ assert(mpisec.do_mpi_left != mpisec.do_mpi_right);
// Nothing to do if specified exterior section
// doesn't exist.
- if (!does_exterior_exist(mpi_exterior_dim, do_mpi_left)) {
+ if (!does_exterior_exist(mpisec.mpi_exterior_dim, mpisec.do_mpi_left)) {
ok = false;
break;
}
@@ -1305,11 +1317,12 @@ namespace yask {
// mpi_interior.bb_begin[x]
// Trim left or right for current dim.
- if (j == mpi_exterior_dim) {
- if (do_mpi_left)
+ if (j == mpisec.mpi_exterior_dim) {
+ if (mpisec.do_mpi_left)
rstop = min(rstop, int_begin);
else {
+ assert(mpisec.do_mpi_right);
rstart = max(rstart, int_end);
// For right, also need to trim to avoid
@@ -1326,7 +1339,7 @@ namespace yask {
// trim overlap between 'x' and 'y' from 'y'.
// See above diagram. This implies dims need
// to be done in ascending numerical order.
- if (j < mpi_exterior_dim) {
+ if (j < mpisec.mpi_exterior_dim) {
rstart = max(rstart, int_begin);
rstop = min(rstop, int_end);
}
@@ -1347,7 +1360,7 @@ namespace yask {
TRACE_MSG("shift_mega_block: updated span: [" <<
idxs.begin.make_val_str() << " ... " <<
idxs.end.make_val_str() << ") for " <<
- make_mpi_section_descr() <<
+ mpisec.make_descr() <<
" within mega-block base [" <<
base_start.make_val_str() << " ... " <<
base_stop.make_val_str() << ") shifted " <<
diff --git a/src/kernel/lib/context.hpp b/src/kernel/lib/context.hpp
index 6b27d327..c90462a5 100644
--- a/src/kernel/lib/context.hpp
+++ b/src/kernel/lib/context.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -192,6 +192,9 @@ namespace yask {
CommonCoreData _common_core;
};
+ // Forward decl.
+ class MpiSection;
+
// Data and hierarchical sizes.
// This is a pure-virtual class that must be implemented
// for a specific problem.
@@ -239,51 +242,6 @@ namespace yask {
// include any extensions needed for WF.
BoundingBox mpi_interior;
- // Flags to track state of calculating the interior and/or exterior.
- bool do_mpi_interior = true;
- bool do_mpi_left = true; // left exterior in given dim.
- bool do_mpi_right = true; // right exterior in given dim.
- idx_t mpi_exterior_dim = -1; // which domain dim in left/right.
-
- // Set MPI flag to defaults.
- inline void init_mpi_flags() {
- do_mpi_interior = do_mpi_left = do_mpi_right = true;
- mpi_exterior_dim = -1;
- }
-
- // Is overlapping-comms mode currently enabled?
- inline bool is_overlap_active() const {
- assert(do_mpi_interior || do_mpi_left || do_mpi_right);
- if (!do_mpi_interior)
- assert(do_mpi_left || do_mpi_right); // one or both.
- else {
- assert(do_mpi_left == do_mpi_right); // both or neither.
- if (do_mpi_left != do_mpi_right)
- assert(mpi_exterior_dim >= 0); // must specify dim.
- }
- bool active = !do_mpi_interior || !do_mpi_left || !do_mpi_right;
- if (active) {
- assert(mpi_interior.bb_valid);
- }
- return active;
- }
-
- // Describe MPI flag setting.
- std::string make_mpi_section_descr() {
- STATE_VARS(this);
- if (is_overlap_active())
- return std::string("MPI ") +
- (do_mpi_interior ? "interior" :
- (do_mpi_left && do_mpi_right) ? "exterior" :
- do_mpi_left ?
- ("exterior left-" +
- domain_dims.get_dim_name(mpi_exterior_dim)) :
- ("exterior right-" +
- domain_dims.get_dim_name(mpi_exterior_dim))) +
- " section";
- return std::string("all MPI sections");
- }
-
// Is there a non-zero exterior in the given section?
inline bool does_exterior_exist(idx_t ddim, bool is_left) const {
return is_left ?
@@ -508,29 +466,32 @@ namespace yask {
// Calculate results within a mega-block.
void calc_mega_block(StagePtr& sel_bp,
- const ScanIndices& rank_idxs);
+ const ScanIndices& rank_idxs,
+ MpiSection& mpisec);
// Calculate results within a block.
void calc_block(StagePtr& sel_bp,
idx_t mega_block_shift_num,
idx_t nphases, idx_t phase,
const ScanIndices& rank_idxs,
- const ScanIndices& mega_block_idxs);
+ const ScanIndices& mega_block_idxs,
+ MpiSection& mpisec);
// Calculate results within a micro-block.
void calc_micro_block(int outer_thread_idx,
- StagePtr& sel_bp,
- idx_t mega_block_shift_num,
- idx_t nphases, idx_t phase,
- idx_t nshapes, idx_t shape,
- const bit_mask_t& bridge_mask,
- const ScanIndices& rank_idxs,
- const ScanIndices& base_mega_block_idxs,
- const ScanIndices& base_block_idxs,
- const ScanIndices& adj_block_idxs);
+ StagePtr& sel_bp,
+ idx_t mega_block_shift_num,
+ idx_t nphases, idx_t phase,
+ idx_t nshapes, idx_t shape,
+ const bit_mask_t& bridge_mask,
+ const ScanIndices& rank_idxs,
+ const ScanIndices& base_mega_block_idxs,
+ const ScanIndices& base_block_idxs,
+ const ScanIndices& adj_block_idxs,
+ MpiSection& mpisec);
// Exchange all dirty halo data for all stencil bundles.
- void exchange_halos();
+ void exchange_halos(MpiSection& mpisec);
// Call MPI_Test() on all unfinished requests to advance MPI progress.
void adv_halo_exchange();
@@ -554,9 +515,10 @@ namespace yask {
// Set various limits in 'idxs' based on current step in mega-block.
bool shift_mega_block(const Indices& base_start, const Indices& base_stop,
- idx_t shift_num,
- StagePtr& bp,
- ScanIndices& idxs);
+ idx_t shift_num,
+ StagePtr& bp,
+ ScanIndices& idxs,
+ const MpiSection& mpisec);
// Set various limits in 'idxs' based on current step in block.
bool shift_micro_block(const Indices& mb_base_start,
@@ -766,4 +728,62 @@ namespace yask {
}; // StencilContext.
+ // Flags to track state of calculating the interior and/or exterior.
+ class MpiSection {
+ const StencilContext* _scp;
+
+ public:
+ bool do_mpi_interior = true;
+ bool do_mpi_left = true; // left exterior in given dim.
+ bool do_mpi_right = true; // right exterior in given dim.
+ idx_t mpi_exterior_dim = -1; // which domain dim in left/right.
+
+ MpiSection(const StencilContext* scp) :
+ _scp(scp) { }
+
+ void init() {
+ do_mpi_interior = do_mpi_left = do_mpi_right = true;
+ mpi_exterior_dim = -1;
+ }
+
+ // Is overlapping-comms mode currently enabled?
+ // Side-effect: checks for consistency of MPI flags.
+ inline bool is_overlap_active() const {
+ assert(do_mpi_interior || do_mpi_left || do_mpi_right);
+ if (!do_mpi_interior) {
+ assert(do_mpi_left || do_mpi_right); // one or both.
+ if (do_mpi_left != do_mpi_right) // one only.
+ assert(mpi_exterior_dim >= 0); // must specify dim.
+ }
+ else {
+ assert(do_mpi_left == do_mpi_right); // both or neither.
+ }
+ bool active = !do_mpi_interior || !do_mpi_left || !do_mpi_right;
+ if (active)
+ assert(_scp->mpi_interior.bb_valid);
+ return active;
+ }
+
+ // Currently doing the exterior only?
+ bool is_exterior_active() const {
+ return !do_mpi_interior && (do_mpi_left || do_mpi_right);
+ }
+
+ // Describe MPI flag setting.
+ std::string make_descr() const {
+ STATE_VARS(_scp);
+ if (is_overlap_active())
+ return std::string("MPI ") +
+ (do_mpi_interior ? "interior" :
+ (do_mpi_left && do_mpi_right) ? "exterior" :
+ do_mpi_left ?
+ ("exterior left-" +
+ domain_dims.get_dim_name(mpi_exterior_dim)) :
+ ("exterior right-" +
+ domain_dims.get_dim_name(mpi_exterior_dim))) +
+ " section";
+ return std::string("all MPI sections");
+ }
+ };
+
} // yask namespace.
diff --git a/src/kernel/lib/factory.cpp b/src/kernel/lib/factory.cpp
index dba3f985..74f0a80e 100644
--- a/src/kernel/lib/factory.cpp
+++ b/src/kernel/lib/factory.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/generic_var.cpp b/src/kernel/lib/generic_var.cpp
index f02e8a8e..ffb902f7 100644
--- a/src/kernel/lib/generic_var.cpp
+++ b/src/kernel/lib/generic_var.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/generic_var.hpp b/src/kernel/lib/generic_var.hpp
index 0ce866ee..d4fb2fa4 100644
--- a/src/kernel/lib/generic_var.hpp
+++ b/src/kernel/lib/generic_var.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/halo.cpp b/src/kernel/lib/halo.cpp
index 389b599d..33084507 100644
--- a/src/kernel/lib/halo.cpp
+++ b/src/kernel/lib/halo.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -66,7 +66,7 @@ namespace yask {
*/
// Exchange dirty halo data for all vars and all steps.
- void StencilContext::exchange_halos() {
+ void StencilContext::exchange_halos(MpiSection& mpisec) {
#if defined(USE_MPI)
STATE_VARS(this);
@@ -77,7 +77,7 @@ namespace yask {
halo_time.start();
double wait_delta = 0.;
- TRACE_MSG("following calc of " << make_mpi_section_descr());
+ TRACE_MSG("following calc of " << mpisec.make_descr());
// Vars that need to be swapped and their step indices.
struct SwapInfo {
@@ -139,11 +139,11 @@ namespace yask {
// Flags indicate what part of vars were most recently calc'd.
// These determine what exchange steps need to be done now.
if (vars_to_swap.size()) {
- if (do_mpi_left || do_mpi_right) {
+ if (mpisec.do_mpi_left || mpisec.do_mpi_right) {
steps_to_do.push_back(halo_irecv);
steps_to_do.push_back(halo_pack_isend);
}
- if (do_mpi_interior) {
+ if (mpisec.do_mpi_interior) {
steps_to_do.push_back(halo_unpack);
steps_to_do.push_back(halo_final);
}
diff --git a/src/kernel/lib/indices.hpp b/src/kernel/lib/indices.hpp
index 0ca733a6..728e5e2a 100644
--- a/src/kernel/lib/indices.hpp
+++ b/src/kernel/lib/indices.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/new_var.cpp b/src/kernel/lib/new_var.cpp
index 3effd42e..ea3818d3 100644
--- a/src/kernel/lib/new_var.cpp
+++ b/src/kernel/lib/new_var.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/offload.hpp b/src/kernel/lib/offload.hpp
index e22dd8b9..6b9178ba 100644
--- a/src/kernel/lib/offload.hpp
+++ b/src/kernel/lib/offload.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/realv.hpp b/src/kernel/lib/realv.hpp
index 4e7d2a4f..29d1aa1b 100644
--- a/src/kernel/lib/realv.hpp
+++ b/src/kernel/lib/realv.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/settings.cpp b/src/kernel/lib/settings.cpp
index f431f033..883f3b5c 100644
--- a/src/kernel/lib/settings.cpp
+++ b/src/kernel/lib/settings.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -1027,7 +1027,7 @@ namespace yask {
}
- // Set number of threads w/o using thread-divisor.
+ // Set number of threads to max-threads.
// Return number of threads.
// Do nothing and return 0 if not properly initialized.
int KernelStateBase::set_max_threads() {
diff --git a/src/kernel/lib/settings.hpp b/src/kernel/lib/settings.hpp
index a1901113..f956f180 100644
--- a/src/kernel/lib/settings.hpp
+++ b/src/kernel/lib/settings.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -701,7 +701,7 @@ namespace yask {
_state->_env->disable_debug_output();
}
- // Set number of threads w/o using thread-divisor.
+ // Set number of threads to max-threads.
// Return number of threads.
// Do nothing and return 0 if not properly initialized.
int set_max_threads();
diff --git a/src/kernel/lib/setup.cpp b/src/kernel/lib/setup.cpp
index 77f4c0a8..c89714b3 100644
--- a/src/kernel/lib/setup.cpp
+++ b/src/kernel/lib/setup.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/soln_apis.cpp b/src/kernel/lib/soln_apis.cpp
index 86dc8f43..e7591de5 100644
--- a/src/kernel/lib/soln_apis.cpp
+++ b/src/kernel/lib/soln_apis.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/stencil_calc.cpp b/src/kernel/lib/stencil_calc.cpp
index fff5497b..e2625c6b 100644
--- a/src/kernel/lib/stencil_calc.cpp
+++ b/src/kernel/lib/stencil_calc.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -39,7 +39,8 @@ namespace yask {
// are respected. There must not be any temporal blocking at this point.
void StencilBundleBase::calc_micro_block(int outer_thread_idx,
KernelSettings& settings,
- const ScanIndices& micro_block_idxs) {
+ const ScanIndices& micro_block_idxs,
+ MpiSection& mpisec) {
STATE_VARS(this);
TRACE_MSG("calc_micro_block('" << get_name() << "'): [" <<
micro_block_idxs.begin.make_val_str() << " ... " <<
@@ -240,7 +241,7 @@ namespace yask {
} // bundles.
// Mark exterior dirty for halo exchange if exterior was done.
- bool mark_dirty = _context->do_mpi_left || _context->do_mpi_right;
+ bool mark_dirty = mpisec.do_mpi_left || mpisec.do_mpi_right;
update_var_info(YkVarBase::self, t, mark_dirty, true, false);
} // BB list.
diff --git a/src/kernel/lib/stencil_calc.hpp b/src/kernel/lib/stencil_calc.hpp
index f6f08f9a..2ce88be5 100644
--- a/src/kernel/lib/stencil_calc.hpp
+++ b/src/kernel/lib/stencil_calc.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -159,8 +159,9 @@ namespace yask {
// Calculate results within a micro-block.
void
calc_micro_block(int outer_thread_idx,
- KernelSettings& settings,
- const ScanIndices& micro_block_idxs);
+ KernelSettings& settings,
+ const ScanIndices& micro_block_idxs,
+ MpiSection& mpisec);
// Mark vars dirty that are updated by this bundle and/or
// update last valid step.
diff --git a/src/kernel/lib/utils.cpp b/src/kernel/lib/utils.cpp
index 7f5b6f42..8465ff56 100644
--- a/src/kernel/lib/utils.cpp
+++ b/src/kernel/lib/utils.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/utils.hpp b/src/kernel/lib/utils.hpp
index 470f5041..1db9ea8c 100644
--- a/src/kernel/lib/utils.hpp
+++ b/src/kernel/lib/utils.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/yask.hpp b/src/kernel/lib/yask.hpp
index b61a69b1..f2bca737 100644
--- a/src/kernel/lib/yask.hpp
+++ b/src/kernel/lib/yask.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -183,19 +183,6 @@ typedef std::uint64_t bit_mask_t;
#define __assume_aligned(p,n) ((void)0)
#endif
-// VTune or stubs.
-// https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/api-support/instrumentation-and-tracing-technology-apis/instrumentation-tracing-technology-api-reference/collection-control-api.html
-#ifdef USE_VTUNE
-#include "ittnotify.h"
-#define VTUNE_PAUSE __itt_pause()
-#define VTUNE_RESUME __itt_resume()
-#define VTUNE_DETACH __itt_detach()
-#else
-#define VTUNE_PAUSE ((void)0)
-#define VTUNE_RESUME ((void)0)
-#define VTUNE_DETACH ((void)0)
-#endif
-
// Default alloc settings.
#define CACHELINE_BYTES (64)
#define YASK_PAD (3) // cache-lines between data buffers.
diff --git a/src/kernel/lib/yask_stencil.hpp b/src/kernel/lib/yask_stencil.hpp
index 693ab320..4d834e40 100644
--- a/src/kernel/lib/yask_stencil.hpp
+++ b/src/kernel/lib/yask_stencil.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/yk_var.cpp b/src/kernel/lib/yk_var.cpp
index f311aac3..f59d3b61 100644
--- a/src/kernel/lib/yk_var.cpp
+++ b/src/kernel/lib/yk_var.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/yk_var.hpp b/src/kernel/lib/yk_var.hpp
index 1141e8ce..14ef859a 100644
--- a/src/kernel/lib/yk_var.hpp
+++ b/src/kernel/lib/yk_var.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/lib/yk_var_apis.cpp b/src/kernel/lib/yk_var_apis.cpp
index 61b22abb..b6196507 100644
--- a/src/kernel/lib/yk_var_apis.cpp
+++ b/src/kernel/lib/yk_var_apis.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/swig/yask_kernel_api.i b/src/kernel/swig/yask_kernel_api.i
index 8beb7c18..5afe9010 100644
--- a/src/kernel/swig/yask_kernel_api.i
+++ b/src/kernel/swig/yask_kernel_api.i
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/openmp_test.cpp b/src/kernel/tests/openmp_test.cpp
index 05a44748..88dba318 100644
--- a/src/kernel/tests/openmp_test.cpp
+++ b/src/kernel/tests/openmp_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/var_test.cpp b/src/kernel/tests/var_test.cpp
index 64ed526a..51e26990 100644
--- a/src/kernel/tests/var_test.cpp
+++ b/src/kernel/tests/var_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/yask_kernel_api_exception_test.cpp b/src/kernel/tests/yask_kernel_api_exception_test.cpp
index 9e2bb05f..c10d9f09 100644
--- a/src/kernel/tests/yask_kernel_api_exception_test.cpp
+++ b/src/kernel/tests/yask_kernel_api_exception_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/yask_kernel_api_exception_test.py b/src/kernel/tests/yask_kernel_api_exception_test.py
index d8a135ce..5499c909 100755
--- a/src/kernel/tests/yask_kernel_api_exception_test.py
+++ b/src/kernel/tests/yask_kernel_api_exception_test.py
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/yask_kernel_api_test.cpp b/src/kernel/tests/yask_kernel_api_test.cpp
index 88100fa6..5884e6ac 100644
--- a/src/kernel/tests/yask_kernel_api_test.cpp
+++ b/src/kernel/tests/yask_kernel_api_test.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/tests/yask_kernel_api_test.py b/src/kernel/tests/yask_kernel_api_test.py
index 01f92074..cca4b3e7 100755
--- a/src/kernel/tests/yask_kernel_api_test.py
+++ b/src/kernel/tests/yask_kernel_api_test.py
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/src/kernel/yask.sh b/src/kernel/yask.sh
index 554b4967..87796f56 100755
--- a/src/kernel/yask.sh
+++ b/src/kernel/yask.sh
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
@@ -282,7 +282,11 @@ while true; do
fi
# Pass this option to executable.
- opts+=" $1"
+ if [[ $1 =~ [[:space:]] ]]; then
+ opts+=" '$1'"
+ else
+ opts+=" $1"
+ fi
shift
fi
diff --git a/src/kernel/yask_main.cpp b/src/kernel/yask_main.cpp
index c3b8f51a..32971a94 100644
--- a/src/kernel/yask_main.cpp
+++ b/src/kernel/yask_main.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -25,10 +25,24 @@ IN THE SOFTWARE.
// This code implements the YASK stand-alone performance-measurement tool.
+// TODO: remove reliance on internal definitions and use only yask_kernel_api.hpp.
#include "yask_stencil.hpp"
using namespace std;
using namespace yask;
+// VTune APIs or stubs.
+// https://www.intel.com/content/www/us/en/develop/documentation/vtune-help/top/api-support/instrumentation-and-tracing-technology-apis/instrumentation-tracing-technology-api-reference/collection-control-api.html
+#ifdef USE_VTUNE
+#include "ittnotify.h"
+#define VTUNE_PAUSE __itt_pause()
+#define VTUNE_RESUME __itt_resume()
+#define VTUNE_DETACH __itt_detach()
+#else
+#define VTUNE_PAUSE ((void)0)
+#define VTUNE_RESUME ((void)0)
+#define VTUNE_DETACH ((void)0)
+#endif
+
// Add some command-line options for this application in addition to the
// default ones provided by YASK library.
struct MySettings {
@@ -266,9 +280,8 @@ int main(int argc, char** argv)
kenv->assert_equality_over_ranks(opts.validate ? 0 : 1, "validation");
// Print splash banner and related info.
- yask_print_splash(os, argc, argv);
- os << "\nYASK performance and validation utility\n"
- "Stencil name: " << ksoln->get_name() << endl;
+ kenv->print_splash(argc, argv, "YASK Performance and Validation Utility invocation: ");
+ os << "\nStencil name: " << ksoln->get_name() << endl;
// Print PID and sleep for debug if needed.
os << "\nPID: " << getpid() << endl;
@@ -609,7 +622,7 @@ int main(int argc, char** argv)
cerr << "TEST PASSED on rank " << ri << ".\n" << flush;
else {
cerr << "TEST FAILED on rank " << ri << ": " << errs << " mismatch(es).\n";
- if (REAL_BYTES < 8)
+ if (ksoln->get_element_bytes() < 8)
cerr << " Small differences are not uncommon for low-precision FP; "
"try with 8-byte reals.\n";
cerr << flush;
diff --git a/src/stencils/AwpStencil.cpp b/src/stencils/AwpStencil.cpp
index e5972cfe..14bd97ae 100644
--- a/src/stencils/AwpStencil.cpp
+++ b/src/stencils/AwpStencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
@@ -638,7 +638,7 @@ namespace {
// Macros for the "abc" versions.
// Set the following macro to define all points, even those above the
- // surface that are never used. This make error-checking more consistent.
+ // surface that are never used. This makes error-checking more consistent.
#define SET_ALL_POINTS
// Set the following macro to use intermediate scratch vars.
@@ -702,7 +702,7 @@ namespace {
// Since we're defining points when z == surface + 1,
// the surface itself will be at z - 1;
- auto surf = _base->z - 1;
+ auto surf = z - 1;
#ifdef USE_SCRATCH_VARS
diff --git a/src/stencils/ElasticStencil/Elastic2Stencil.hpp b/src/stencils/ElasticStencil/Elastic2Stencil.hpp
index 95e39764..34535fd8 100644
--- a/src/stencils/ElasticStencil/Elastic2Stencil.hpp
+++ b/src/stencils/ElasticStencil/Elastic2Stencil.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/ElasticStencil/ElasticStencil.hpp b/src/stencils/ElasticStencil/ElasticStencil.hpp
index 200b7dbc..4ff2a477 100644
--- a/src/stencils/ElasticStencil/ElasticStencil.hpp
+++ b/src/stencils/ElasticStencil/ElasticStencil.hpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/FSGElastic2Stencil.cpp b/src/stencils/FSGElastic2Stencil.cpp
index a011fd19..abdaf923 100644
--- a/src/stencils/FSGElastic2Stencil.cpp
+++ b/src/stencils/FSGElastic2Stencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/FSGElasticStencil.cpp b/src/stencils/FSGElasticStencil.cpp
index 58583068..4b6ca0b1 100644
--- a/src/stencils/FSGElasticStencil.cpp
+++ b/src/stencils/FSGElasticStencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/Iso3dfdStencil.cpp b/src/stencils/Iso3dfdStencil.cpp
index 3c745273..93116065 100644
--- a/src/stencils/Iso3dfdStencil.cpp
+++ b/src/stencils/Iso3dfdStencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/SSGElastic2Stencil.cpp b/src/stencils/SSGElastic2Stencil.cpp
index 0144b654..2591b0f5 100644
--- a/src/stencils/SSGElastic2Stencil.cpp
+++ b/src/stencils/SSGElastic2Stencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/SSGElasticStencil.cpp b/src/stencils/SSGElasticStencil.cpp
index 668f17cf..21ceed41 100644
--- a/src/stencils/SSGElasticStencil.cpp
+++ b/src/stencils/SSGElasticStencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/SimpleStencils.cpp b/src/stencils/SimpleStencils.cpp
index e06b40d8..920b7024 100644
--- a/src/stencils/SimpleStencils.cpp
+++ b/src/stencils/SimpleStencils.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/TTIStencil.cpp b/src/stencils/TTIStencil.cpp
index 1a58a73c..05bec2c6 100644
--- a/src/stencils/TTIStencil.cpp
+++ b/src/stencils/TTIStencil.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/src/stencils/TestStencils.cpp b/src/stencils/TestStencils.cpp
index 5c9410b4..6edad2f4 100644
--- a/src/stencils/TestStencils.cpp
+++ b/src/stencils/TestStencils.cpp
@@ -1,7 +1,7 @@
/*****************************************************************************
YASK: Yet Another Stencil Kit
-Copyright (c) 2014-2022, Intel Corporation
+Copyright (c) 2014-2023, Intel Corporation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/analyze_trace.pl b/utils/bin/analyze_trace.pl
index 300a2be6..d7b0585c 100755
--- a/utils/bin/analyze_trace.pl
+++ b/utils/bin/analyze_trace.pl
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/convert_v2_stencil.pl b/utils/bin/convert_v2_stencil.pl
index bb60832d..97fb33a0 100755
--- a/utils/bin/convert_v2_stencil.pl
+++ b/utils/bin/convert_v2_stencil.pl
@@ -3,7 +3,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/gen_layouts.pl b/utils/bin/gen_layouts.pl
index 72af87ec..7270042c 100755
--- a/utils/bin/gen_layouts.pl
+++ b/utils/bin/gen_layouts.pl
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/gen_loops.pl b/utils/bin/gen_loops.pl
index 2adcbc94..5e4ccbc9 100755
--- a/utils/bin/gen_loops.pl
+++ b/utils/bin/gen_loops.pl
@@ -3,7 +3,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/view_asm.pl b/utils/bin/view_asm.pl
index 40c0c90b..5458aeee 100755
--- a/utils/bin/view_asm.pl
+++ b/utils/bin/view_asm.pl
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/yask_indent.sh b/utils/bin/yask_indent.sh
index 4580d914..b5445c81 100755
--- a/utils/bin/yask_indent.sh
+++ b/utils/bin/yask_indent.sh
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/yask_log_to_csv.pl b/utils/bin/yask_log_to_csv.pl
index a3bfd052..0385af82 100755
--- a/utils/bin/yask_log_to_csv.pl
+++ b/utils/bin/yask_log_to_csv.pl
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/yask_tuner.pl b/utils/bin/yask_tuner.pl
index c01008ba..2a4ca5ae 100755
--- a/utils/bin/yask_tuner.pl
+++ b/utils/bin/yask_tuner.pl
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/bin/yask_tuner_summary.csh b/utils/bin/yask_tuner_summary.csh
index e1775e1f..cbca2e3b 100755
--- a/utils/bin/yask_tuner_summary.csh
+++ b/utils/bin/yask_tuner_summary.csh
@@ -2,7 +2,7 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/lib/CmdLine.pm b/utils/lib/CmdLine.pm
index 2aee5946..c97d5268 100644
--- a/utils/lib/CmdLine.pm
+++ b/utils/lib/CmdLine.pm
@@ -1,6 +1,6 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to
diff --git a/utils/lib/YaskUtils.pm b/utils/lib/YaskUtils.pm
index ab7341c5..8c0d85e9 100644
--- a/utils/lib/YaskUtils.pm
+++ b/utils/lib/YaskUtils.pm
@@ -1,6 +1,6 @@
##############################################################################
## YASK: Yet Another Stencil Kit
-## Copyright (c) 2014-2022, Intel Corporation
+## Copyright (c) 2014-2023, Intel Corporation
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to