О тонкостях разреженности в капелле

Учитывая плотный домен dom: domain(n);, где n ‹ 3, объявление sps1: sparse subdomain(dom); дает разреженный поддомен sps1 из dom. С sps1 возможна обычная нарезка массива/матрицы. То есть, учитывая матрицу A: [sps1], можно взять n - 1-мерные срезы A. Однако обычная матричная операция transpose() неприменима.

Определение второй матрицы B:[sps2] над другим разреженным поддоменом sps2 = CSRDomain(dom) позволяет получить transpose()s из B, но возможность разрезать на B утрачивается.

Обе эти способности, казалось бы, должны быть всегда доступны. Есть ли лучший способ объявить разреженные поддомены, которые сохранят два?


person Tshimanga    schedule 14.03.2018    source источник
comment
Would you mind to formulate the MCVE-code in ››› tio .run/##pc9NC4JAEAbg@/   -  person user3666197    schedule 14.03.2018
comment
извините, я не понимаю вашего вопроса @user3666197   -  person Tshimanga    schedule 14.03.2018
comment
Нет проблем, сэр. Только что предложили использовать онлайн-терминал Chapel (со встроенным постоянством) для наброска кода, который будет работать и который может продемонстрировать здесь концепцию подходов к тестированию (так же просто, как просто Ctrl+C / Ctrl+V постоянный (на самом деле самодостаточное состояние ) гиперссылка-URL, как было указано выше, для перехода к готовому к запуску MVCE-коду (стандартная культура постановки задач StackOverflow). В любом случае, наслаждайтесь великолепным язык часовни, сэр.   -  person user3666197    schedule 14.03.2018


Ответы (1)


Есть ли лучший способ объявить разреженные поддомены, которые сохранят два?

Я думаю, вы просто столкнулись с недостатком текущей реализации Chapel 1.16.0.

COO разреженные массивы и домены, разреженный дистрибутив языка по умолчанию, созданный с помощью sps1: sparse subdomain(dom), еще не поддерживается в модуле LinearAlgebra.Sparse, поэтому транспонирование, поддерживаемое библиотекой, отсутствует.

CSR разреженные массивы и домены, LinearAlgebra по умолчанию (и только поддерживаемые) разреженные дистрибутивы, созданные с помощью sps2 = CSRDomain(dom), еще не поддерживают нарезку.

Обе эти возможности когда-нибудь станут возможны по мере дальнейшего развития разреженных массивов и функций линейной алгебры.

person ben-albrecht    schedule 14.03.2018
comment
FWIW, работа над этим должна быть возможна сегодня. Реализация COO транспонирования не будет слишком сложной. Обойти CSR срезы немного сложнее, но все же возможно, если вы готовы погрузиться во внутренности массива. - person ben-albrecht; 14.03.2018