[all-commits] [llvm/llvm-project] 36c2a9: [flang][runtime] New APIs for copyin/copyout of no...

Slava Zakharin via All-commits all-commits at lists.llvm.org
Wed Oct 26 11:07:05 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 36c2a9d54ddfaec123859714cad6073edf468b49
      https://github.com/llvm/llvm-project/commit/36c2a9d54ddfaec123859714cad6073edf468b49
  Author: Slava Zakharin <szakharin at nvidia.com>
  Date:   2022-10-26 (Wed, 26 Oct 2022)

  Changed paths:
    M flang/include/flang/Runtime/support.h

  Log Message:
  -----------
  [flang][runtime] New APIs for copyin/copyout of non-contiguous objects.

The intention is to use these APIs for copyin/copyout of subprogram
arguments at the call sites. Currently, Flang generates loop nests
to do this, and in some corner cases this results in very long
compilation times due to LLVM loop optimizations.

For example, Flang produces 25245 loops for 521.wrf/module_dm.f90.
If we extract the copyin/copyout loops into runtime, Flang will only
produce 207 loops, and the compilation time may reduce by 47x.

Given that the copyin/copyout loop nests can not be fused with other
loop nests, extracting them into runtime functions should not reduce
performance if the runtime optimizes the leading contiguous dimension
copies.

The implementation will come in separate patches.

Differential Revision: https://reviews.llvm.org/D136378




More information about the All-commits mailing list