Page MenuHomePhabricator

Meinersbur (Michael Kruse)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 17 2015, 7:07 AM (249 w, 6 d)

Recent Activity

Today

Meinersbur added inline comments to D70228: [LoopDataPrefetch + SystemZ] Let target decide on prefetching on a per loop basis.
Tue, Mar 31, 7:09 AM · Restricted Project
Meinersbur added a comment to D69088: [Lex] #pragma clang transform.

ping

Tue, Mar 31, 6:04 AM · Restricted Project
Meinersbur added a comment to D76342: [OpenMP] Implement '#pragma omp tile'.

ping

Tue, Mar 31, 6:04 AM · Restricted Project

Yesterday

Meinersbur added inline comments to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..
Mon, Mar 30, 10:22 PM · Restricted Project
Meinersbur accepted D75233: [LoopTerminology] LCSSA Form.

LGTM. Thanks for the effort!

Mon, Mar 30, 10:22 PM · Restricted Project
Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

S2(i2,j2,k2) depends on S1(i1,j1,k1) iff i1==i2-1(A[i1] and A[i2-1] access the same element), j1==j2+1, k1==k2-1 and (i1,j1,k1) <=_{lexicographic} (i2,j2,k2),
in other words, the dependence vector is (+1,-1,+1) or (GT,LT,GT) [direction from S1->S2, since S1 is the source and S2 is the consumer].

This is a bit counter intuitive, but a positive dependence direction, is represented as LT (not GT). See section 4.2.1 in G.G, Ken Kennedy, C.W. Tseng, 1990. Practical Dependence Testing.
The corresponding direction vector for (+1,-1,+1) is (LT, GT, LT) which would be a lexicographically positive direction vector.

Mon, Mar 30, 9:50 PM · Restricted Project
Meinersbur added a comment to D77027: Make BitVector::operator== return false for different-sized vectors.

Since BitVector is supposed to resemble a std::vector<bool>, this is the behavior I'd expect.

Mon, Mar 30, 4:50 AM · Restricted Project
Meinersbur added a comment to D70228: [LoopDataPrefetch + SystemZ] Let target decide on prefetching on a per loop basis.

@greened is looking into generating the prefetcher properties using tblgen (D58736). Would this be compatible with that approach?

Mon, Mar 30, 12:30 AM · Restricted Project

Sun, Mar 29

Meinersbur added a comment to D77027: Make BitVector::operator== return false for different-sized vectors.

It's helpful to have one patch per issue (instead of three in a single patch). One of the reasons is that in the commit history, it's unambiguous what diff caused which change.

Sun, Mar 29, 11:57 PM · Restricted Project
Meinersbur added inline comments to D75233: [LoopTerminology] LCSSA Form.
Sun, Mar 29, 11:57 PM · Restricted Project

Sat, Mar 28

Meinersbur added a comment to D75233: [LoopTerminology] LCSSA Form.

Yes. Could you explain the part about dominator nodes ? I understand how dominators help in the identification
of loops and how dominance frontiers help in the placement of normal PHI nodes (i.e. when 2 or more paths converge). But I don't see how dominators
help with the placement of LCSSA phi nodes.

Sat, Mar 28, 6:16 PM · Restricted Project
Meinersbur added a comment to D75425: [docs] Added solutions to slow build under common problems.

@e-leclercq Would you create a new diff to address the new comments?

Sat, Mar 28, 7:32 AM · Restricted Project
Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

I am still confused. Your version only allow GT (by checking == GT). My version only allow GT, LT, NE (by checking ! &EQ). So both versions requires us to check further with GE.
I was trying to use

for i
  for j        <= unroll loop
    for k
       S1: A[i][j][k]
       S2: A[i-1][j+1][k-1]

as an example, where your version would consider as unsafe and my version would consider as safe.
Am I correct to think loop-j is safe to unroll and jam?

Sat, Mar 28, 7:00 AM · Restricted Project
Meinersbur added a comment to D76642: Make static linking for LLVM plugins more reliable..

In my point of view, having only the new PM cause the plugin symbols to be pulled-in was sufficient, thinking that we will move away from the legacy pass manager anyway.

Sat, Mar 28, 4:18 AM · Restricted Project
Meinersbur added a comment to D76642: Make static linking for LLVM plugins more reliable..

This is one of the things I insisted on in https://reviews.llvm.org/D61446#1681841. There was a previous discussion to also load plugins in lld for LTO (see https://reviews.llvm.org/D61446?id=198588#inline-548338), but we wanted to finish D61446 first.

Sat, Mar 28, 3:46 AM · Restricted Project
Meinersbur accepted D73181: [SCEV] Use backedge SCEV of PHI only if its input is loop invariant.

LGTM

Sat, Mar 28, 3:46 AM · Restricted Project
Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

My above example was not good.
Consider this example:

for i
  for j        <= unroll loop
    for k
       A[i][j][k]
       A[i-1][j+1][k-1]

The dependence direction vector would be [LT, GT, LT].

Sat, Mar 28, 3:46 AM · Restricted Project
Meinersbur added inline comments to D75425: [docs] Added solutions to slow build under common problems.
Sat, Mar 28, 3:14 AM · Restricted Project
Meinersbur committed rG37943e518c5a: [docs] Added solutions to slow build under common problems. (authored by e-leclercq).
[docs] Added solutions to slow build under common problems.
Sat, Mar 28, 2:42 AM
Meinersbur closed D75425: [docs] Added solutions to slow build under common problems.
Sat, Mar 28, 2:42 AM · Restricted Project
Meinersbur added a comment to D75425: [docs] Added solutions to slow build under common problems.

Hi Evan,

Sat, Mar 28, 2:42 AM · Restricted Project
Meinersbur accepted D75425: [docs] Added solutions to slow build under common problems.
Sat, Mar 28, 2:10 AM · Restricted Project

Thu, Mar 26

Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

Thanks @Meinersbur ! I mostly used your code directly, except

for (unsigned d = 1; d < UnrollLevel; ++d) {
      // Check if dependence is carried by an outer loop.
      // That is, changing
      //   (0,>,>,*,*)
      // to
      //   (0,>,>=,*,*)
      // will still not violate the dependency.
      if (D->getDirection(d) == Dependence::DVEntry::GT)
        return true;
    }

which I think should be safe as long as the one dependence is not EQ then should be safe.

for i
  for j        <= unroll loop
    for k
       A[i][j][k]
       A[i-1][j+1][k]

Loop-j should be safe to unroll and jam. Am I right?

Thu, Mar 26, 9:11 AM · Restricted Project
Meinersbur added a comment to D75233: [LoopTerminology] LCSSA Form.

2 questions:

  1. Is it "loop closed PHI node" or "loop closing PHI node"?
Thu, Mar 26, 8:38 AM · Restricted Project
Meinersbur added a comment to D76642: Make static linking for LLVM plugins more reliable..

Symbols should be pulled by the responsible tools, e.g. bugpoint: https://reviews.llvm.org/D61446#C1743754NL232 . AFAIK there is no requirements that plugins generate object libraries. For instance, in my typical build configuration, there are no "obj.LLVM*" targets. It depends on the build configuration I guess, whether shared objects and static libraries are both built.

Thu, Mar 26, 7:33 AM · Restricted Project

Wed, Mar 25

Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

Here is my suggested dependency checker:

// Check whether it is semantically safe Src and Dst considering any potential
// dependency between them.
//
// @param UnrollLevel The level of the loop being unrolled
// @param JamLevel    The level of the loop being jammed; if Src and Dst are on
// different levels, the outermost common loop counts as jammed level
//
// @return true if is safe and false if there is a dependency violation.
static bool checkDependency(Instruction *Src, Instruction *Dst,
                            unsigned UnrollLevel, unsigned JamLevel,
                            bool Sequentialized, DependenceInfo &DI) {
  assert(UnrollLevel <= JamLevel);
Wed, Mar 25, 9:39 PM · Restricted Project
Meinersbur added a comment to D76342: [OpenMP] Implement '#pragma omp tile'.

edit: actually you've already done the clang-format on trunk as I hoped, phabricator mislead me. Apologies for the noise

Wed, Mar 25, 3:44 PM · Restricted Project
Meinersbur added a comment to D22630: Loop rotation.

Could you do the following?

Wed, Mar 25, 3:11 PM
Meinersbur committed rG7520cf03eeb8: [clang] Reformat cindex. NFC. (authored by Meinersbur).
[clang] Reformat cindex. NFC.
Wed, Mar 25, 9:43 AM
Meinersbur updated the diff for D76342: [OpenMP] Implement '#pragma omp tile'.
  • Rebase after clang-format of cindex
Wed, Mar 25, 9:43 AM · Restricted Project
Meinersbur added a reviewer for D76342: [OpenMP] Implement '#pragma omp tile': dreachem.
Wed, Mar 25, 7:32 AM · Restricted Project

Tue, Mar 24

Meinersbur updated the diff for D76342: [OpenMP] Implement '#pragma omp tile'.
  • Rebase
  • Remove unrelated change
Tue, Mar 24, 11:25 PM · Restricted Project
Meinersbur added a comment to D76342: [OpenMP] Implement '#pragma omp tile'.

ping

Tue, Mar 24, 10:24 PM · Restricted Project

Wed, Mar 18

Meinersbur added inline comments to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..
Wed, Mar 18, 10:20 AM · Restricted Project
Meinersbur added inline comments to D75425: [docs] Added solutions to slow build under common problems.
Wed, Mar 18, 9:47 AM · Restricted Project

Tue, Mar 17

Meinersbur added inline comments to D75425: [docs] Added solutions to slow build under common problems.
Tue, Mar 17, 10:08 PM · Restricted Project
Meinersbur added a comment to D73129: [LoopUnrollAndJam] Correctly update LoopInfo when unroll and jam more than 2-levels loop nests..

Would it help if a wrote/sketched the code for dependency violation?

Tue, Mar 17, 10:08 PM · Restricted Project
Meinersbur added inline comments to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..
Tue, Mar 17, 9:36 PM · Restricted Project
Meinersbur created D76342: [OpenMP] Implement '#pragma omp tile'.
Tue, Mar 17, 8:34 PM · Restricted Project

Mon, Mar 16

Meinersbur accepted D75013: [LoopTerminology] Rotated Loops.

My LGTM still stands.

Mon, Mar 16, 2:46 PM · Restricted Project

Sat, Mar 14

Meinersbur added a comment to D75425: [docs] Added solutions to slow build under common problems.

You should not accept your own patches. Please wait for someone else to greenlight it.

Sat, Mar 14, 8:58 PM · Restricted Project
Meinersbur added inline comments to D75425: [docs] Added solutions to slow build under common problems.
Sat, Mar 14, 3:34 PM · Restricted Project

Fri, Mar 13

Meinersbur added a comment to D76132: [LoopUnrollAndJam] Changed safety checks to consider more than 2-levels loop nest..

Nice work!

Fri, Mar 13, 3:40 PM · Restricted Project
Meinersbur added inline comments to D75920: [LoopCacheAnalysis] Improve cost heuristic..
Fri, Mar 13, 2:37 PM · Restricted Project

Tue, Mar 10

Meinersbur added inline comments to D75013: [LoopTerminology] Rotated Loops.
Tue, Mar 10, 12:00 PM · Restricted Project

Mon, Mar 9

Meinersbur added inline comments to D75013: [LoopTerminology] Rotated Loops.
Mon, Mar 9, 7:26 PM · Restricted Project
Meinersbur accepted D75013: [LoopTerminology] Rotated Loops.

This is somewhat more verbose than I'd expect for a terminology document (more like a tutorial). I also don't see why not: LGTM.

Mon, Mar 9, 5:50 PM · Restricted Project
Meinersbur added inline comments to D75628: [DA] [SCEV] Provide facility to check for total ordering based on dominance.
Mon, Mar 9, 12:25 PM · Restricted Project
Meinersbur added a reviewer for D75628: [DA] [SCEV] Provide facility to check for total ordering based on dominance: spop.
Mon, Mar 9, 12:25 PM · Restricted Project
Meinersbur committed rG0e93f3b0a06f: [Polly] Replace use of std::stringstream. NFC. (authored by Meinersbur).
[Polly] Replace use of std::stringstream. NFC.
Mon, Mar 9, 9:42 AM

Fri, Mar 6

Meinersbur added a comment to D73801: [LoopFission]: Loop Fission Interference Graph (FIG).

I tried to engineer an example that would introduce a cycle with input dependency being a critical edge, but I failed. If you have such an example it would be interesting to look at.

Fri, Mar 6, 2:22 PM · Restricted Project
Meinersbur added inline comments to D75233: [LoopTerminology] LCSSA Form.
Fri, Mar 6, 11:35 AM · Restricted Project

Thu, Mar 5

Meinersbur added inline comments to D75628: [DA] [SCEV] Provide facility to check for total ordering based on dominance.
Thu, Mar 5, 2:17 PM · Restricted Project

Wed, Mar 4

Meinersbur added inline comments to D75628: [DA] [SCEV] Provide facility to check for total ordering based on dominance.
Wed, Mar 4, 2:04 PM · Restricted Project
Meinersbur added a comment to D75013: [LoopTerminology] Rotated Loops.

The comment about single successor I got from the original patch for loop rotation (https://reviews.llvm.org/D22630).

Wed, Mar 4, 10:05 AM · Restricted Project

Mon, Mar 2

Meinersbur added inline comments to D75233: [LoopTerminology] LCSSA Form.
Mon, Mar 2, 11:36 AM · Restricted Project

Mar 1 2020

Meinersbur closed D74801: [ADT][NFC] SCCIterator: Change hasLoop() to hasCycle().

I committed that (https://reviews.llvm.org/rG21390eab4c05e0ed7e7d13ada9e85f62b87ea484) but as it seems, I should have added the differential division in the commit message. I'll try the next commit to be better.

Mar 1 2020, 12:49 PM · Restricted Project, Restricted Project
Meinersbur added a comment to D75425: [docs] Added solutions to slow build under common problems.

Additional mitigations we should cover:

Mar 1 2020, 12:25 PM · Restricted Project
Meinersbur added a comment to D75425: [docs] Added solutions to slow build under common problems.

Issues with compile time and memory requirements come up regularly, so we though it would be a good idea to document mitigations. For instance:

Mar 1 2020, 12:13 PM · Restricted Project
Meinersbur added reviewers for D75425: [docs] Added solutions to slow build under common problems: tstellar, dblaikie, Kokan, rnk, t.p.northover, erichkeane, abrachet, dim, fhahn, nhaehnle, gbedwell, lebedev.ri.
Mar 1 2020, 12:07 PM · Restricted Project
Meinersbur added inline comments to D75233: [LoopTerminology] LCSSA Form.
Mar 1 2020, 11:47 AM · Restricted Project
Meinersbur committed rGdce2ef9e6421: [Polly][docs] Polly release notes. (authored by Meinersbur).
[Polly][docs] Polly release notes.
Mar 1 2020, 8:29 AM

Feb 27 2020

Meinersbur added inline comments to D75233: [LoopTerminology] LCSSA Form.
Feb 27 2020, 1:05 PM · Restricted Project

Feb 26 2020

Meinersbur added inline comments to D72178: [DA] Delinearization of fixed-size multi-dimensional arrays.
Feb 26 2020, 9:15 PM · Restricted Project, Restricted Project
Meinersbur committed rG2a49d650a5d2: [docs][LoopTerminology] Add Loop Simplify Form description. (authored by baziotis).
[docs][LoopTerminology] Add Loop Simplify Form description.
Feb 26 2020, 6:43 PM
Meinersbur closed D74989: [LoopTerminology] Loop Simplify Form.
Feb 26 2020, 6:43 PM · Restricted Project
Meinersbur accepted D74989: [LoopTerminology] Loop Simplify Form.
Feb 26 2020, 6:34 PM · Restricted Project
Meinersbur closed D75127: [zorg] Add x86_64 buildbots for Polly..
Feb 26 2020, 2:29 PM · Restricted Project
Meinersbur committed rZORGf685ba3c618c: [zorg] Add x86_64 buildbots for Polly. (authored by Meinersbur).
[zorg] Add x86_64 buildbots for Polly.
Feb 26 2020, 2:29 PM
Meinersbur added a comment to D73801: [LoopFission]: Loop Fission Interference Graph (FIG).

Question regarding input dependencies inherited from the DDG:

for (int i = 0; i < b; ++i) {
  B[i] = f(A[i-1] + A[i]);
  C[i] = g(A[i]);
}

IIUC, the DDG will contain the input dependencies B->C and C->B (loop-carried). Since this results in a cycle, those will be combined in a Pi-node. The FIG treats Pi-nodes atomically, hence will not be able to fission/distribute the loop. Is this correct? Having read-read dependencies in the DDG still feels strange to me.

Feb 26 2020, 1:33 PM · Restricted Project
Meinersbur added inline comments to D73801: [LoopFission]: Loop Fission Interference Graph (FIG).
Feb 26 2020, 9:00 AM · Restricted Project

Feb 25 2020

Meinersbur committed rG002af0119286: [Polly][docs] Polly release notes. (authored by Meinersbur).
[Polly][docs] Polly release notes.
Feb 25 2020, 8:45 PM
Meinersbur requested changes to D74989: [LoopTerminology] Loop Simplify Form.

[serious] I get the following error with ninja docs-llvm-html:

[1/1] Generating html Sphinx documentation for llvm into "/home/meinersbur/build/llvm-project/release/docs/html"
FAILED: docs/CMakeFiles/docs-llvm-html
cd /home/meinersbur/build/llvm-project/release/docs && /usr/bin/sphinx-build -b html -d /home/meinersbur/build/llvm-project/release/docs/_doctrees-llvm-html -q -W /home/meinersbur/src/llvm-project/llvm/docs /home/meinersbur/build/llvm-project/release/docs/html
Feb 25 2020, 7:41 PM · Restricted Project
Meinersbur accepted D74989: [LoopTerminology] Loop Simplify Form.

LGTM. Do you want me to commit for you?

Feb 25 2020, 3:41 PM · Restricted Project
Meinersbur accepted D72178: [DA] Delinearization of fixed-size multi-dimensional arrays.

LGTM

Feb 25 2020, 3:41 PM · Restricted Project, Restricted Project
Meinersbur added inline comments to D74989: [LoopTerminology] Loop Simplify Form.
Feb 25 2020, 10:18 AM · Restricted Project
Meinersbur created D75127: [zorg] Add x86_64 buildbots for Polly..
Feb 25 2020, 9:20 AM · Restricted Project

Feb 24 2020

Meinersbur added inline comments to D74989: [LoopTerminology] Loop Simplify Form.
Feb 24 2020, 4:27 PM · Restricted Project
Meinersbur accepted D75089: [polly] Don't count scops in a global variable..

And I thought we got rid of such globals some time ago.

Feb 24 2020, 4:00 PM · Restricted Project
Meinersbur added a comment to D73998: [DA] renaming the -da-disable-delinearization-checks option.

Regarding the suggested names: "-da-allow-unsafe-derived(-multidimensional)-subscripts", "-da-disable-derived(-multidimensional)-index-range-checks", and "-da-assume-nonoverlapping-of-heuristically-derived-multidimensional-array-structures". Is there anyone you prefer over the existing -da-disable-delinearization-checks? If not I can abandon this revision.

Feb 24 2020, 3:42 PM · Restricted Project
Meinersbur added inline comments to D75013: [LoopTerminology] Rotated Loops.
Feb 24 2020, 3:06 PM · Restricted Project
Meinersbur added a comment to D73998: [DA] renaming the -da-disable-delinearization-checks option.

I think A should be float A[n*n+2*n] for it to even be an in-bound access,

Feb 24 2020, 1:43 PM · Restricted Project
Meinersbur added inline comments to D75013: [LoopTerminology] Rotated Loops.
Feb 24 2020, 12:20 PM · Restricted Project
Meinersbur added a comment to D73998: [DA] renaming the -da-disable-delinearization-checks option.

Consider the example C source:

float A[n*n+n];
for (int i = 0; i < 2*n; i+=1)
  for (int j = 0; j < n; j+=1)
    A[j*n + i] = ...

Delinearization might convert the access to A[j][i] for an array of size A[][n]. However, in this example, elements accessed by the j-loop overlap into elements accessed by the (j+1)-loop. Assuming that A[j] and A[j+1] do not overlap ("assume-inrange") would be illegal, but from the source code's point-of-view, there is not even an inner array dimension that could be out-of-range. Since the loop bounds are derived heuristically, the user doesn't even know what indexes they agree to not overlap (it could also be A[j/2][n*(j%2) + i] for an array of size A[][2*n]).

Feb 24 2020, 12:11 PM · Restricted Project
Meinersbur accepted D74989: [LoopTerminology] Loop Simplify Form.

@fhahn Also asked to cross-link https://llvm.org/docs/Passes.html#loop-simplify-canonicalize-natural-loops. Could you please do so?

Feb 24 2020, 11:52 AM · Restricted Project
Meinersbur committed rG6369b9bf3118: [CMake] Default to static linking for subprojects. (authored by Meinersbur).
[CMake] Default to static linking for subprojects.
Feb 24 2020, 10:03 AM
Meinersbur closed D72372: [CMake] Default to static linking for subprojects..
Feb 24 2020, 10:03 AM · Restricted Project
Meinersbur updated the diff for D72372: [CMake] Default to static linking for subprojects..
  • Remove space between endif and parens
Feb 24 2020, 9:17 AM · Restricted Project
Meinersbur added a comment to D72372: [CMake] Default to static linking for subprojects..

@Meinersbur, thank you for taking the time to look at linkage on windows. Could you please give a concrete example of an issue that this patch resolves?

Feb 24 2020, 8:58 AM · Restricted Project

Feb 23 2020

Meinersbur added inline comments to D74989: [LoopTerminology] Loop Simplify Form.
Feb 23 2020, 3:52 PM · Restricted Project
Meinersbur added inline comments to D75013: [LoopTerminology] Rotated Loops.
Feb 23 2020, 3:29 PM · Restricted Project
Meinersbur added a comment to D75024: [SCCIterator] Check if a SCC is a natural loop..

Hmm, that's bizarre. Won't the SCCIterator go through all the SCCs? That is, let's say we have a topmost loop with blocks: A, B, C. And blocks B, C also form a loop.
Won't we get a separate SCC for A, B, C and B, C?

Feb 23 2020, 12:29 PM · Restricted Project
Meinersbur added a comment to D72372: [CMake] Default to static linking for subprojects..

@serge-sans-paille OK to commit?

Feb 23 2020, 12:12 PM · Restricted Project
Meinersbur added a comment to D75024: [SCCIterator] Check if a SCC is a natural loop..

"ADT" stands for "Abstract Data Type". This use case is rather concrete. Unfortunately, LoopInfo ignores non-natural loops, but it would be the place for this.

Feb 23 2020, 12:03 PM · Restricted Project

Feb 22 2020

Meinersbur added a comment to D75013: [LoopTerminology] Rotated Loops.
Feb 22 2020, 6:17 PM · Restricted Project
Meinersbur added inline comments to D74989: [LoopTerminology] Loop Simplify Form.
Feb 22 2020, 5:59 PM · Restricted Project

Feb 21 2020

Meinersbur added a comment to D74989: [LoopTerminology] Loop Simplify Form.

Oh thanks, I didn't know that. So, closing. Can I add any part that is not addressed in this draft? For example, rotated loops
I think aren't and personally I feel they really need doc.

Feb 21 2020, 3:53 PM · Restricted Project
Meinersbur added inline comments to D74989: [LoopTerminology] Loop Simplify Form.
Feb 21 2020, 3:53 PM · Restricted Project
Meinersbur added a comment to D74989: [LoopTerminology] Loop Simplify Form.

Note that there already is a draft filling out this section at D65257.

Feb 21 2020, 3:34 PM · Restricted Project
Meinersbur committed rG393f4e8ac263: [Analysis][Docs] Parents of loops documentation. (authored by baziotis).
[Analysis][Docs] Parents of loops documentation.
Feb 21 2020, 3:16 PM