2016-10-18 2 views
2

Мне нужно выполнить некоторые тензорные произведения и сокращения на некоторых больших массивах в Фортране. Иногда они являются векторами или матрицами, и иногда некоторые из задействованных объектов представляют собой 3-массивы или 4-массивы.Эффективный способ выполнения тензорных продуктов в Фортране

Конечно, очень легко написать подпрограмму, обеспечивающую это с помощью некоторых вложенных циклов, и это именно то, что я сделал. Но мне приходится многократно вызывать эту подпрограмму со всеми ее циклами для очень больших массивов, и мне просто интересно, есть ли какая-то оптимизированная функция или подпрограмма, реализованная в Fortran, в которой я мог бы воспользоваться.

+2

Показать ваш код. –

+0

И BTW «Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другие ресурсы за пределами сайта, не относятся к теме для переполнения стека, поскольку они склонны привлекать упрямые ответы и спам. Вместо этого опишите проблему и что было сделано до сих пор, чтобы решить эту проблему ». –

+2

Fortran превосходит по итерации большие, плотные регулярные массивы. И компиляторы Fortran преуспевают в оптимизации выполнения таких кодов на любых ресурсах, которые предоставляет CPU (и т. Д.). Иногда ручная плитка помогает, иногда ее больше проблем, чем ее ценность. Для такого общего вопроса, как ваш, могут быть предоставлены не более неопределенные общие понятия, такие как мои. –

ответ

3

Последний раз, когда я смотрел (около года назад), я не нашел высокопроизводительную библиотеку продуктов тензора общего назначения в Фортране. Я думаю, что одной из причин этого может быть громоздкий способ изменения размера массивов Fortran, что является постоянным требованием при работе с тензорами.

Если вам нужно только умножение, вы можете уйти с помощью своего собственного кода. Однако, если вам нужна высокая производительность, или более общие операции, я настоятельно рекомендую писать интерфейс C и с помощью одного из отличных C++ библиотек там, которые, вероятно, уже оптимизированные для вашего типа применения:

физика: http://itensor.org/

Машинное обучение: https://github.com/tensorflow/tensorflow

это только примеры. Для получения более полного списка см .: Tensor multiplication library

Смежные вопросы