REMOVE_DIST_ARRAYS_FROM_IO Handle assumed-size and assumed-shape arrays #64

Merged
Alexander_KS merged 6 commits from replace_io_arrays into master 2025-09-16 05:23:31 +00:00
Collaborator
No description provided.
xnpster added 2 commits 2025-08-17 13:00:43 +00:00
Alexander_KS requested changes 2025-08-17 15:15:04 +00:00
Alexander_KS left a comment
Owner

небольшие мелочи я бы поправил. В остальном - это работает на большинстве тестов или же ошибки еще остались?

небольшие мелочи я бы поправил. В остальном - это работает на большинстве тестов или же ошибки еще остались?
@@ -20,0 +34,4 @@
static bool checkDynamicArray(DIST::Array *array)
{
for (const auto &bounds : array->GetSizes())
if (bounds.first == -1 || bounds.second == -1)
Owner

А если массив определен в процедуре как А(N) допустим, по языку он вроде статический, то есть выделяется на стеке при входе в нее, но размеры не будут определены, если N это не константа, тут все нормально с этим ?

А если массив определен в процедуре как А(N) допустим, по языку он вроде статический, то есть выделяется на стеке при входе в нее, но размеры не будут определены, если N это не константа, тут все нормально с этим ?
Author
Collaborator

С этим всё окей, если этот массив не assumed size, то копия выделится с помощью allocate, как для assumed shape массивов. Позже можно будет выделить этот случай в отдельный, без allocate, если это будет валидно во всех случаях

С этим всё окей, если этот массив не assumed size, то копия выделится с помощью allocate, как для assumed shape массивов. Позже можно будет выделить этот случай в отдельный, без allocate, если это будет валидно во всех случаях
Author
Collaborator

Да, посмотрел, в таком случае легче без allocate, поправил

Да, посмотрел, в таком случае легче без allocate, поправил
@@ -20,0 +63,4 @@
{
bool found = false;
DIST::Array* array_p = getArrayFromDeclarated(st, arrayName);
Owner

здесь потенциально тоже может быть nullptr

здесь потенциально тоже может быть nullptr
xnpster marked this conversation as resolved
@@ -20,0 +68,4 @@
auto place = *array_p->GetDeclInfo().begin();
auto decl_file_name = place.first;
SgFile::switchToFile(decl_file_name);
Owner

без проверки

без проверки
xnpster marked this conversation as resolved
@@ -20,0 +89,4 @@
found = true;
}
SgFile::switchToFile(currentFile);
Owner

без проверки

без проверки
xnpster marked this conversation as resolved
@@ -499,0 +654,4 @@
}
// insert allocate(a_l(lbound(a, 1):ubound(a,1),...)) statement
SgFile::switchToFile(filename);
Owner

тут тоже

тут тоже
xnpster marked this conversation as resolved
@@ -499,0 +686,4 @@
auto *lcall = new SgFunctionCallExp(*lbound_symb);
auto *rcall = new SgFunctionCallExp(*ubound_symb);
for (auto *call : {lcall, rcall})
Owner

это в с++17 входит ?

это в с++17 входит ?
Author
Collaborator

Да, это же просто std::initializer_list

Да, это же просто std::initializer_list
@@ -499,0 +740,4 @@
}
}
SgFile::switchToFile(filename);
Owner

тут тоже

тут тоже
xnpster marked this conversation as resolved
Author
Collaborator

@Alexander_KS пока ещё не готово, есть фиксы, которые не коммитил

@Alexander_KS пока ещё не готово, есть фиксы, которые не коммитил
xnpster force-pushed replace_io_arrays from fdab7096d4 to 24cc61d72f 2025-09-04 20:29:43 +00:00 Compare
Author
Collaborator

Всё ещё есть проблема с тем, что массивы из модуля не помечаются как IO_PRIV, нужно отдебажить

Всё ещё есть проблема с тем, что массивы из модуля не помечаются как IO_PRIV, нужно отдебажить
Author
Collaborator

Сейчас при вставке intent происходит копирование номера строки, поэтому SgStatement::getStatementByFileAndLine для объявлений массивов работает не так, как ожидается (возвращается не объявление, а intent (in))

.. и это ломает в том числе устранение конфликтов областей (src/ParallelizationRegions/resolve_par_reg_conflicts.cpp:999)

Сейчас при вставке intent происходит копирование номера строки, поэтому SgStatement::getStatementByFileAndLine для объявлений массивов работает не так, как ожидается (возвращается не объявление, а `intent (in)`) .. и это ломает в том числе устранение конфликтов областей (src/ParallelizationRegions/resolve_par_reg_conflicts.cpp:999)
xnpster added 1 commit 2025-09-05 22:13:50 +00:00
Owner

понятно, надо тогда подумать, как лучше это делать, видимо для intent придется отрицательный номер строки делать.

понятно, надо тогда подумать, как лучше это делать, видимо для intent придется отрицательный номер строки делать.
Owner

Всё ещё есть проблема с тем, что массивы из модуля не помечаются как IO_PRIV, нужно отдебажить

хорошо, а можешь скинуть простой пример. Сам посмотри, что там может быть, эти флаги устанавливаются в loop_analyzer.cpp вроде как в самом низу почти.

> Всё ещё есть проблема с тем, что массивы из модуля не помечаются как IO_PRIV, нужно отдебажить хорошо, а можешь скинуть простой пример. Сам посмотри, что там может быть, эти флаги устанавливаются в loop_analyzer.cpp вроде как в самом низу почти.
xnpster added 1 commit 2025-09-10 19:14:59 +00:00
xnpster force-pushed replace_io_arrays from 320a112bef to f90142c8af 2025-09-10 19:19:55 +00:00 Compare
xnpster force-pushed replace_io_arrays from f90142c8af to 7c65ae981c 2025-09-11 09:40:57 +00:00 Compare
Author
Collaborator

Да, с твоим фиксом тоже нормально работает @Alexander_KS (я про IO_PRIV массивы)

Да, с твоим фиксом тоже нормально работает @Alexander_KS (я про IO_PRIV массивы)
Owner

кажется, что добавленной SgStatement::getStatementByFileAndLine вместо getDeclStatement будет достаточно.

кажется, что добавленной SgStatement::getStatementByFileAndLine вместо getDeclStatement будет достаточно.
xnpster force-pushed replace_io_arrays from 7c65ae981c to 280beb13cc 2025-09-13 17:57:12 +00:00 Compare
xnpster added 1 commit 2025-09-15 18:27:33 +00:00
Author
Collaborator

Теперь на моих небольших примерах работает как надо, осталось разобраться с багрепортами

Теперь на моих небольших примерах работает как надо, осталось разобраться с багрепортами
Alexander_KS added 1 commit 2025-09-16 05:22:58 +00:00
Alexander_KS merged commit 06aabdbee6 into master 2025-09-16 05:23:31 +00:00
Alexander_KS deleted branch replace_io_arrays 2025-09-16 05:23:31 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Alexander_KS/SAPFOR#64