diff --git a/tests/performance/CMakeLists.txt b/tests/performance/CMakeLists.txt index b8a9a5c..bc366c6 100644 --- a/tests/performance/CMakeLists.txt +++ b/tests/performance/CMakeLists.txt @@ -7,6 +7,8 @@ set(tests pi-dump-trg quicksort-dump-trg vector_add-dump-trg + data_item_get + data_item_get_invariant ) foreach(test ${tests}) diff --git a/tests/performance/data_item_get.cpp b/tests/performance/data_item_get.cpp new file mode 100644 index 0000000..89fd05c --- /dev/null +++ b/tests/performance/data_item_get.cpp @@ -0,0 +1,136 @@ +/** + * ------------------------ Auto-generated Code ------------------------ + * This code was generated by the Insieme Compiler + * --------------------------------------------------------------------- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* ------- Program Code --------- */ + +ALLSCALE_REGISTER_TREETURE_TYPE(int32_t) +using data_item_type_1 = allscale::api::user::data::StaticGrid; +REGISTER_DATAITEMSERVER_DECLARATION(data_item_type_1) +REGISTER_DATAITEMSERVER(data_item_type_1) + +struct main_name { + static const char* name() { return "__wi_main"; } +}; + +struct main_process; + +using main_work = allscale::work_item_description< + int32_t, + main_name, + allscale::no_serialization, + allscale::no_split, + main_process>; + +/* ------- Function Definitions --------- */ +int32_t main(int argc, char** argv) { + return allscale::runtime::main_wrapper(argc, argv); +} + +/* ------- Function Definitions --------- */ +int32_t IMP_main() { +} +/* ------- Function Definitions --------- */ +struct main_process { + static allscale::treeture execute(hpx::util::tuple< > const&) + { + using allscale::runtime::DataItemReference; + using allscale::runtime::DataItemManager; + using allscale::api::user::data::StaticGrid; + using allscale::api::user::data::StaticGridRegion; + using allscale::utils::Vector; + const int32_t var_0 = 200; + const int32_t var_1 = 10; + const double var_2 = 1.0E-3; + DataItemReference > var_3 = + DataItemManager::create >(); + DataItemReference > var_4 = + DataItemManager::create >(); + DataItemReference >& var_5 = var_3; + + hpx::util::high_resolution_timer timer; + + auto lease1 = allscale::data_item_manager::acquire>( + allscale::createDataItemRequirement( + var_3, + StaticGridRegion<2>(200, 200), + allscale::access_mode::ReadWrite) + ); + + auto lease2 = allscale::data_item_manager::acquire>( + allscale::createDataItemRequirement( + var_4, + StaticGridRegion<2>(200, 200), + allscale::access_mode::ReadWrite) + ); + + int32_t var_6 = 0; + while (var_6 < var_0) + { + int32_t var_7 = 0; + while (var_7 < var_0) { + { + DataItemManager::get(var_5)[Vector(var_6, var_7)] = 0.; + if (var_6 == var_0 / 2 && var_7 == var_0 /2) + { + DataItemManager::get(var_5)[Vector(var_6, var_7)] = 100.; + } + }; + var_7++; + }; + var_6++; + } + for (int32_t var_8 = 0; var_8 < var_1; ++var_8) + { + DataItemReference>& var_9 = var_3; + DataItemReference>& var_10 = var_4; + int32_t var_11 = 1; + while (var_11 < var_0 - 1) + { + int32_t var_12 = 1; + while (var_12 < var_0 - 1) + { + DataItemManager::get(var_10)[Vector(var_11, var_12)] = + DataItemManager::get(var_9)[Vector(var_11, var_12)] + + var_2 * ( + DataItemManager::get(var_9)[Vector(var_11 - 1, var_12)] + + DataItemManager::get(var_9)[Vector(var_11 + 1, var_12)] + + DataItemManager::get(var_9)[Vector(var_11, var_12 - 1)] + + DataItemManager::get(var_9)[Vector(var_11, var_12 + 1)] + + -4. * DataItemManager::get(var_9)[Vector(var_11, var_12)]); + var_12++; + } + var_11++; + } + if (var_8 % (var_1 / 10) == 0) + { + std::cout << "t=" << var_8 << " - center: " << + DataItemManager::get(var_10)[Vector(var_0 / 2, var_0 / 2)] << + std::endl; + } + std::swap(var_3, var_4); + } + allscale::data_item_manager::release(lease1); + allscale::data_item_manager::release(lease2); + double elapsed = timer.elapsed(); + + std::cout << "t=" << var_1 << " - center: " << + DataItemManager::get(var_5)[Vector(var_0 / 2, var_0 / 2)] << + std::endl; + std::cout << "Elapsed time: " << elapsed << '\n'; + return allscale::make_ready_treeture( + DataItemManager::get(var_5)[Vector(var_0 / 2, var_0 / 2)] < 100. ? 0 : 1); + } + static constexpr bool valid = true; +}; diff --git a/tests/performance/data_item_get_invariant.cpp b/tests/performance/data_item_get_invariant.cpp new file mode 100644 index 0000000..1abc534 --- /dev/null +++ b/tests/performance/data_item_get_invariant.cpp @@ -0,0 +1,137 @@ +/** + * ------------------------ Auto-generated Code ------------------------ + * This code was generated by the Insieme Compiler + * --------------------------------------------------------------------- + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* ------- Program Code --------- */ + +ALLSCALE_REGISTER_TREETURE_TYPE(int32_t) +using data_item_type_1 = allscale::api::user::data::StaticGrid; +REGISTER_DATAITEMSERVER_DECLARATION(data_item_type_1) +REGISTER_DATAITEMSERVER(data_item_type_1) + +struct main_name { + static const char* name() { return "__wi_main"; } +}; + +struct main_process; + +using main_work = allscale::work_item_description< + int32_t, + main_name, + allscale::no_serialization, + allscale::no_split, + main_process>; + +/* ------- Function Definitions --------- */ +int32_t main(int argc, char** argv) { + return allscale::runtime::main_wrapper(argc, argv); +} + +/* ------- Function Definitions --------- */ +int32_t IMP_main() { +} +/* ------- Function Definitions --------- */ +struct main_process { + static allscale::treeture execute(hpx::util::tuple< > const&) + { + using allscale::runtime::DataItemReference; + using allscale::runtime::DataItemManager; + using allscale::api::user::data::StaticGrid; + using allscale::api::user::data::StaticGridRegion; + using allscale::utils::Vector; + const int32_t var_0 = 200; + const int32_t var_1 = 10; + const double var_2 = 1.0E-3; + DataItemReference > var_3 = + DataItemManager::create >(); + DataItemReference > var_4 = + DataItemManager::create >(); + DataItemReference >& var_5 = var_3; + + hpx::util::high_resolution_timer timer; + + auto lease1 = allscale::data_item_manager::acquire>( + allscale::createDataItemRequirement( + var_3, + StaticGridRegion<2>(200, 200), + allscale::access_mode::ReadWrite) + ); + + auto lease2 = allscale::data_item_manager::acquire>( + allscale::createDataItemRequirement( + var_4, + StaticGridRegion<2>(200, 200), + allscale::access_mode::ReadWrite) + ); + + int32_t var_6 = 0; + auto f_var_5 = DataItemManager::get(var_5); + while (var_6 < var_0) + { + int32_t var_7 = 0; + while (var_7 < var_0) { + { + f_var_5[Vector(var_6, var_7)] = 0.; + if (var_6 == var_0 / 2 && var_7 == var_0 /2) + { + f_var_5[Vector(var_6, var_7)] = 100.; + } + }; + var_7++; + }; + var_6++; + } + for (int32_t var_8 = 0; var_8 < var_1; ++var_8) + { + auto var_9 = DataItemManager::get(var_3); + auto var_10 = DataItemManager::get(var_4); + int32_t var_11 = 1; + while (var_11 < var_0 - 1) + { + int32_t var_12 = 1; + while (var_12 < var_0 - 1) + { + var_10[Vector(var_11, var_12)] = + var_9[Vector(var_11, var_12)] + + var_2 * ( + var_9[Vector(var_11 - 1, var_12)] + + var_9[Vector(var_11 + 1, var_12)] + + var_9[Vector(var_11, var_12 - 1)] + + var_9[Vector(var_11, var_12 + 1)] + + -4. * var_9[Vector(var_11, var_12)]); + var_12++; + } + var_11++; + } + if (var_8 % (var_1 / 10) == 0) + { + std::cout << "t=" << var_8 << " - center: " << + var_10[Vector(var_0 / 2, var_0 / 2)] << + std::endl; + } + std::swap(var_3, var_4); + } + allscale::data_item_manager::release(lease1); + allscale::data_item_manager::release(lease2); + double elapsed = timer.elapsed(); + + std::cout << "t=" << var_1 << " - center: " << + DataItemManager::get(var_5)[Vector(var_0 / 2, var_0 / 2)] << + std::endl; + std::cout << "Elapsed time: " << elapsed << '\n'; + return allscale::make_ready_treeture( + DataItemManager::get(var_5)[Vector(var_0 / 2, var_0 / 2)] < 100. ? 0 : 1); + } + static constexpr bool valid = true; +};