Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions doc/dev/transpose_access_map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Transpose 32x32 Access Maps (All Warps Combined)

Cells show tids (3 digits); empty cells are `...`.

**Summary**
- No bank conflicts: within each warp, the swizzle permutes lanes so each thread lands on a distinct bank for the shared accesses shown in `write to smem` and `regs (from smem read)`.
- Coalesced gmem: the input and output gmem plots show contiguous columns for each warp group, so global reads/writes are aligned and coalesced.

## input gmem (read)

```
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
000: 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ... 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ...
001: 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ... 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ...
002: 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ... 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ...
003: 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ... 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ...
004: 033 ... ... ... 032 ... ... ... 035 ... ... ... 034 ... ... ... 037 ... ... ... 036 ... ... ... 039 ... ... ... 038 ... ... ...
005: 041 ... ... ... 040 ... ... ... 043 ... ... ... 042 ... ... ... 045 ... ... ... 044 ... ... ... 047 ... ... ... 046 ... ... ...
006: 049 ... ... ... 048 ... ... ... 051 ... ... ... 050 ... ... ... 053 ... ... ... 052 ... ... ... 055 ... ... ... 054 ... ... ...
007: 057 ... ... ... 056 ... ... ... 059 ... ... ... 058 ... ... ... 061 ... ... ... 060 ... ... ... 063 ... ... ... 062 ... ... ...
008: 066 ... ... ... 067 ... ... ... 064 ... ... ... 065 ... ... ... 070 ... ... ... 071 ... ... ... 068 ... ... ... 069 ... ... ...
009: 074 ... ... ... 075 ... ... ... 072 ... ... ... 073 ... ... ... 078 ... ... ... 079 ... ... ... 076 ... ... ... 077 ... ... ...
010: 082 ... ... ... 083 ... ... ... 080 ... ... ... 081 ... ... ... 086 ... ... ... 087 ... ... ... 084 ... ... ... 085 ... ... ...
011: 090 ... ... ... 091 ... ... ... 088 ... ... ... 089 ... ... ... 094 ... ... ... 095 ... ... ... 092 ... ... ... 093 ... ... ...
012: 099 ... ... ... 098 ... ... ... 097 ... ... ... 096 ... ... ... 103 ... ... ... 102 ... ... ... 101 ... ... ... 100 ... ... ...
013: 107 ... ... ... 106 ... ... ... 105 ... ... ... 104 ... ... ... 111 ... ... ... 110 ... ... ... 109 ... ... ... 108 ... ... ...
014: 115 ... ... ... 114 ... ... ... 113 ... ... ... 112 ... ... ... 119 ... ... ... 118 ... ... ... 117 ... ... ... 116 ... ... ...
015: 123 ... ... ... 122 ... ... ... 121 ... ... ... 120 ... ... ... 127 ... ... ... 126 ... ... ... 125 ... ... ... 124 ... ... ...
016: 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ... 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ...
017: 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ... 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ...
018: 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ... 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ...
019: 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ... 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ...
020: 037 ... ... ... 036 ... ... ... 039 ... ... ... 038 ... ... ... 033 ... ... ... 032 ... ... ... 035 ... ... ... 034 ... ... ...
021: 045 ... ... ... 044 ... ... ... 047 ... ... ... 046 ... ... ... 041 ... ... ... 040 ... ... ... 043 ... ... ... 042 ... ... ...
022: 053 ... ... ... 052 ... ... ... 055 ... ... ... 054 ... ... ... 049 ... ... ... 048 ... ... ... 051 ... ... ... 050 ... ... ...
023: 061 ... ... ... 060 ... ... ... 063 ... ... ... 062 ... ... ... 057 ... ... ... 056 ... ... ... 059 ... ... ... 058 ... ... ...
024: 070 ... ... ... 071 ... ... ... 068 ... ... ... 069 ... ... ... 066 ... ... ... 067 ... ... ... 064 ... ... ... 065 ... ... ...
025: 078 ... ... ... 079 ... ... ... 076 ... ... ... 077 ... ... ... 074 ... ... ... 075 ... ... ... 072 ... ... ... 073 ... ... ...
026: 086 ... ... ... 087 ... ... ... 084 ... ... ... 085 ... ... ... 082 ... ... ... 083 ... ... ... 080 ... ... ... 081 ... ... ...
027: 094 ... ... ... 095 ... ... ... 092 ... ... ... 093 ... ... ... 090 ... ... ... 091 ... ... ... 088 ... ... ... 089 ... ... ...
028: 103 ... ... ... 102 ... ... ... 101 ... ... ... 100 ... ... ... 099 ... ... ... 098 ... ... ... 097 ... ... ... 096 ... ... ...
029: 111 ... ... ... 110 ... ... ... 109 ... ... ... 108 ... ... ... 107 ... ... ... 106 ... ... ... 105 ... ... ... 104 ... ... ...
030: 119 ... ... ... 118 ... ... ... 117 ... ... ... 116 ... ... ... 115 ... ... ... 114 ... ... ... 113 ... ... ... 112 ... ... ...
031: 127 ... ... ... 126 ... ... ... 125 ... ... ... 124 ... ... ... 123 ... ... ... 122 ... ... ... 121 ... ... ... 120 ... ... ...
```

## write to smem

```
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
000: 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ... 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ...
001: 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ... 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ...
002: 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ... 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ...
003: 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ... 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ...
004: 032 ... ... ... 033 ... ... ... 034 ... ... ... 035 ... ... ... 036 ... ... ... 037 ... ... ... 038 ... ... ... 039 ... ... ...
005: 040 ... ... ... 041 ... ... ... 042 ... ... ... 043 ... ... ... 044 ... ... ... 045 ... ... ... 046 ... ... ... 047 ... ... ...
006: 048 ... ... ... 049 ... ... ... 050 ... ... ... 051 ... ... ... 052 ... ... ... 053 ... ... ... 054 ... ... ... 055 ... ... ...
007: 056 ... ... ... 057 ... ... ... 058 ... ... ... 059 ... ... ... 060 ... ... ... 061 ... ... ... 062 ... ... ... 063 ... ... ...
008: 064 ... ... ... 065 ... ... ... 066 ... ... ... 067 ... ... ... 068 ... ... ... 069 ... ... ... 070 ... ... ... 071 ... ... ...
009: 072 ... ... ... 073 ... ... ... 074 ... ... ... 075 ... ... ... 076 ... ... ... 077 ... ... ... 078 ... ... ... 079 ... ... ...
010: 080 ... ... ... 081 ... ... ... 082 ... ... ... 083 ... ... ... 084 ... ... ... 085 ... ... ... 086 ... ... ... 087 ... ... ...
011: 088 ... ... ... 089 ... ... ... 090 ... ... ... 091 ... ... ... 092 ... ... ... 093 ... ... ... 094 ... ... ... 095 ... ... ...
012: 096 ... ... ... 097 ... ... ... 098 ... ... ... 099 ... ... ... 100 ... ... ... 101 ... ... ... 102 ... ... ... 103 ... ... ...
013: 104 ... ... ... 105 ... ... ... 106 ... ... ... 107 ... ... ... 108 ... ... ... 109 ... ... ... 110 ... ... ... 111 ... ... ...
014: 112 ... ... ... 113 ... ... ... 114 ... ... ... 115 ... ... ... 116 ... ... ... 117 ... ... ... 118 ... ... ... 119 ... ... ...
015: 120 ... ... ... 121 ... ... ... 122 ... ... ... 123 ... ... ... 124 ... ... ... 125 ... ... ... 126 ... ... ... 127 ... ... ...
016: 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ... 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ...
017: 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ... 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ...
018: 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ... 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ...
019: 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ... 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ...
020: 032 ... ... ... 033 ... ... ... 034 ... ... ... 035 ... ... ... 036 ... ... ... 037 ... ... ... 038 ... ... ... 039 ... ... ...
021: 040 ... ... ... 041 ... ... ... 042 ... ... ... 043 ... ... ... 044 ... ... ... 045 ... ... ... 046 ... ... ... 047 ... ... ...
022: 048 ... ... ... 049 ... ... ... 050 ... ... ... 051 ... ... ... 052 ... ... ... 053 ... ... ... 054 ... ... ... 055 ... ... ...
023: 056 ... ... ... 057 ... ... ... 058 ... ... ... 059 ... ... ... 060 ... ... ... 061 ... ... ... 062 ... ... ... 063 ... ... ...
024: 064 ... ... ... 065 ... ... ... 066 ... ... ... 067 ... ... ... 068 ... ... ... 069 ... ... ... 070 ... ... ... 071 ... ... ...
025: 072 ... ... ... 073 ... ... ... 074 ... ... ... 075 ... ... ... 076 ... ... ... 077 ... ... ... 078 ... ... ... 079 ... ... ...
026: 080 ... ... ... 081 ... ... ... 082 ... ... ... 083 ... ... ... 084 ... ... ... 085 ... ... ... 086 ... ... ... 087 ... ... ...
027: 088 ... ... ... 089 ... ... ... 090 ... ... ... 091 ... ... ... 092 ... ... ... 093 ... ... ... 094 ... ... ... 095 ... ... ...
028: 096 ... ... ... 097 ... ... ... 098 ... ... ... 099 ... ... ... 100 ... ... ... 101 ... ... ... 102 ... ... ... 103 ... ... ...
029: 104 ... ... ... 105 ... ... ... 106 ... ... ... 107 ... ... ... 108 ... ... ... 109 ... ... ... 110 ... ... ... 111 ... ... ...
030: 112 ... ... ... 113 ... ... ... 114 ... ... ... 115 ... ... ... 116 ... ... ... 117 ... ... ... 118 ... ... ... 119 ... ... ...
031: 120 ... ... ... 121 ... ... ... 122 ... ... ... 123 ... ... ... 124 ... ... ... 125 ... ... ... 126 ... ... ... 127 ... ... ...
```

## regs (from smem read)

```
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
000: 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120
001: 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120
002: 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120
003: 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120 000 008 016 024 032 040 048 056 064 072 080 088 096 104 112 120
004: 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089
005: 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089
006: 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089
007: 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089 033 041 049 057 001 009 017 025 097 105 113 121 065 073 081 089
008: 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058
009: 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058
010: 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058
011: 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058 066 074 082 090 098 106 114 122 002 010 018 026 034 042 050 058
012: 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027
013: 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027
014: 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027
015: 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027 099 107 115 123 067 075 083 091 035 043 051 059 003 011 019 027
016: 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124
017: 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124
018: 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124
019: 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124 004 012 020 028 036 044 052 060 068 076 084 092 100 108 116 124
020: 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093
021: 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093
022: 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093
023: 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093 037 045 053 061 005 013 021 029 101 109 117 125 069 077 085 093
024: 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062
025: 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062
026: 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062
027: 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062 070 078 086 094 102 110 118 126 006 014 022 030 038 046 054 062
028: 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031
029: 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031
030: 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031
031: 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031 103 111 119 127 071 079 087 095 039 047 055 063 007 015 023 031
```

## output gmem (write)

```
000 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031
000: 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ... 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ...
001: 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ... 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ...
002: 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ... 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ...
003: 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ... 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ...
004: 032 ... ... ... 033 ... ... ... 034 ... ... ... 035 ... ... ... 036 ... ... ... 037 ... ... ... 038 ... ... ... 039 ... ... ...
005: 040 ... ... ... 041 ... ... ... 042 ... ... ... 043 ... ... ... 044 ... ... ... 045 ... ... ... 046 ... ... ... 047 ... ... ...
006: 048 ... ... ... 049 ... ... ... 050 ... ... ... 051 ... ... ... 052 ... ... ... 053 ... ... ... 054 ... ... ... 055 ... ... ...
007: 056 ... ... ... 057 ... ... ... 058 ... ... ... 059 ... ... ... 060 ... ... ... 061 ... ... ... 062 ... ... ... 063 ... ... ...
008: 064 ... ... ... 065 ... ... ... 066 ... ... ... 067 ... ... ... 068 ... ... ... 069 ... ... ... 070 ... ... ... 071 ... ... ...
009: 072 ... ... ... 073 ... ... ... 074 ... ... ... 075 ... ... ... 076 ... ... ... 077 ... ... ... 078 ... ... ... 079 ... ... ...
010: 080 ... ... ... 081 ... ... ... 082 ... ... ... 083 ... ... ... 084 ... ... ... 085 ... ... ... 086 ... ... ... 087 ... ... ...
011: 088 ... ... ... 089 ... ... ... 090 ... ... ... 091 ... ... ... 092 ... ... ... 093 ... ... ... 094 ... ... ... 095 ... ... ...
012: 096 ... ... ... 097 ... ... ... 098 ... ... ... 099 ... ... ... 100 ... ... ... 101 ... ... ... 102 ... ... ... 103 ... ... ...
013: 104 ... ... ... 105 ... ... ... 106 ... ... ... 107 ... ... ... 108 ... ... ... 109 ... ... ... 110 ... ... ... 111 ... ... ...
014: 112 ... ... ... 113 ... ... ... 114 ... ... ... 115 ... ... ... 116 ... ... ... 117 ... ... ... 118 ... ... ... 119 ... ... ...
015: 120 ... ... ... 121 ... ... ... 122 ... ... ... 123 ... ... ... 124 ... ... ... 125 ... ... ... 126 ... ... ... 127 ... ... ...
016: 000 ... ... ... 001 ... ... ... 002 ... ... ... 003 ... ... ... 004 ... ... ... 005 ... ... ... 006 ... ... ... 007 ... ... ...
017: 008 ... ... ... 009 ... ... ... 010 ... ... ... 011 ... ... ... 012 ... ... ... 013 ... ... ... 014 ... ... ... 015 ... ... ...
018: 016 ... ... ... 017 ... ... ... 018 ... ... ... 019 ... ... ... 020 ... ... ... 021 ... ... ... 022 ... ... ... 023 ... ... ...
019: 024 ... ... ... 025 ... ... ... 026 ... ... ... 027 ... ... ... 028 ... ... ... 029 ... ... ... 030 ... ... ... 031 ... ... ...
020: 032 ... ... ... 033 ... ... ... 034 ... ... ... 035 ... ... ... 036 ... ... ... 037 ... ... ... 038 ... ... ... 039 ... ... ...
021: 040 ... ... ... 041 ... ... ... 042 ... ... ... 043 ... ... ... 044 ... ... ... 045 ... ... ... 046 ... ... ... 047 ... ... ...
022: 048 ... ... ... 049 ... ... ... 050 ... ... ... 051 ... ... ... 052 ... ... ... 053 ... ... ... 054 ... ... ... 055 ... ... ...
023: 056 ... ... ... 057 ... ... ... 058 ... ... ... 059 ... ... ... 060 ... ... ... 061 ... ... ... 062 ... ... ... 063 ... ... ...
024: 064 ... ... ... 065 ... ... ... 066 ... ... ... 067 ... ... ... 068 ... ... ... 069 ... ... ... 070 ... ... ... 071 ... ... ...
025: 072 ... ... ... 073 ... ... ... 074 ... ... ... 075 ... ... ... 076 ... ... ... 077 ... ... ... 078 ... ... ... 079 ... ... ...
026: 080 ... ... ... 081 ... ... ... 082 ... ... ... 083 ... ... ... 084 ... ... ... 085 ... ... ... 086 ... ... ... 087 ... ... ...
027: 088 ... ... ... 089 ... ... ... 090 ... ... ... 091 ... ... ... 092 ... ... ... 093 ... ... ... 094 ... ... ... 095 ... ... ...
028: 096 ... ... ... 097 ... ... ... 098 ... ... ... 099 ... ... ... 100 ... ... ... 101 ... ... ... 102 ... ... ... 103 ... ... ...
029: 104 ... ... ... 105 ... ... ... 106 ... ... ... 107 ... ... ... 108 ... ... ... 109 ... ... ... 110 ... ... ... 111 ... ... ...
030: 112 ... ... ... 113 ... ... ... 114 ... ... ... 115 ... ... ... 116 ... ... ... 117 ... ... ... 118 ... ... ... 119 ... ... ...
031: 120 ... ... ... 121 ... ... ... 122 ... ... ... 123 ... ... ... 124 ... ... ... 125 ... ... ... 126 ... ... ... 127 ... ... ...
```
Loading
Loading