[GH-PAGES] Updated website
This commit is contained in:
@@ -235,17 +235,17 @@ We can now run the decorated function above. Pass `print_data=True` to see the p
|
||||
0 4096.0 9.600000 9.600000
|
||||
1 8192.0 19.200000 19.200000
|
||||
2 16384.0 38.400001 38.400001
|
||||
3 32768.0 63.999998 76.800002
|
||||
3 32768.0 76.800002 76.800002
|
||||
4 65536.0 127.999995 127.999995
|
||||
5 131072.0 219.428568 219.428568
|
||||
6 262144.0 341.333321 384.000001
|
||||
6 262144.0 384.000001 384.000001
|
||||
7 524288.0 472.615390 472.615390
|
||||
8 1048576.0 614.400016 614.400016
|
||||
9 2097152.0 722.823517 722.823517
|
||||
10 4194304.0 780.190482 780.190482
|
||||
11 8388608.0 812.429770 812.429770
|
||||
12 16777216.0 833.084721 833.084721
|
||||
13 33554432.0 842.004273 843.811163
|
||||
13 33554432.0 842.004273 842.004273
|
||||
14 67108864.0 847.448255 848.362445
|
||||
15 134217728.0 849.737435 850.656574
|
||||
|
||||
@@ -255,7 +255,7 @@ We can now run the decorated function above. Pass `print_data=True` to see the p
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 1 minutes 49.928 seconds)
|
||||
**Total running time of the script:** ( 1 minutes 41.917 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_01-vector-add.py:
|
||||
|
@@ -278,17 +278,17 @@ We will then compare its performance against (1) :code:`torch.softmax` and (2) t
|
||||
|
||||
softmax-performance:
|
||||
N Triton Torch (native) Torch (jit)
|
||||
0 256.0 546.133347 546.133347 188.321838
|
||||
0 256.0 512.000001 546.133347 190.511628
|
||||
1 384.0 614.400016 585.142862 153.600004
|
||||
2 512.0 655.360017 606.814814 154.566038
|
||||
2 512.0 655.360017 585.142849 154.566038
|
||||
3 640.0 706.206879 640.000002 160.000000
|
||||
4 768.0 722.823517 664.216187 162.754967
|
||||
.. ... ... ... ...
|
||||
93 12160.0 812.359066 406.179533 198.834951
|
||||
94 12288.0 812.429770 415.661740 199.197579
|
||||
95 12416.0 812.498981 412.149375 198.755369
|
||||
96 12544.0 810.925276 412.971190 199.012395
|
||||
97 12672.0 811.007961 412.097543 199.167004
|
||||
93 12160.0 812.359066 406.603966 199.038365
|
||||
94 12288.0 812.429770 416.101597 199.197579
|
||||
95 12416.0 812.498981 413.006241 198.854847
|
||||
96 12544.0 810.925276 412.971190 199.111113
|
||||
97 12672.0 811.007961 412.516771 199.167004
|
||||
|
||||
[98 rows x 4 columns]
|
||||
|
||||
@@ -306,7 +306,7 @@ In the above plot, we can see that:
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 3 minutes 30.792 seconds)
|
||||
**Total running time of the script:** ( 3 minutes 30.054 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_02-fused-softmax.py:
|
||||
|
@@ -459,37 +459,37 @@ We can now compare the performance of our kernel against that of cuBLAS. Here we
|
||||
|
||||
matmul-performance:
|
||||
M cuBLAS ... Triton Triton (+ LeakyReLU)
|
||||
0 256.0 2.978909 ... 2.978909 3.276800
|
||||
0 256.0 2.730667 ... 2.978909 2.978909
|
||||
1 384.0 7.372800 ... 8.507077 8.507077
|
||||
2 512.0 14.563555 ... 16.384000 16.384000
|
||||
2 512.0 14.563555 ... 15.420235 16.384000
|
||||
3 640.0 22.260869 ... 24.380953 24.380953
|
||||
4 768.0 32.768000 ... 35.389441 34.028308
|
||||
5 896.0 39.025776 ... 40.140799 39.025776
|
||||
5 896.0 37.971025 ... 40.140799 39.025776
|
||||
6 1024.0 49.932191 ... 53.773130 52.428801
|
||||
7 1152.0 45.242181 ... 48.161033 48.161033
|
||||
7 1152.0 45.242181 ... 48.161033 47.396572
|
||||
8 1280.0 51.200001 ... 57.690139 57.690139
|
||||
9 1408.0 64.138541 ... 69.009825 67.305878
|
||||
10 1536.0 80.430545 ... 81.355034 79.526831
|
||||
9 1408.0 64.138541 ... 69.009825 68.147202
|
||||
10 1536.0 80.430545 ... 80.430545 78.643199
|
||||
11 1664.0 62.929456 ... 63.372618 62.492442
|
||||
12 1792.0 72.512412 ... 73.460287 59.467852
|
||||
13 1920.0 68.776119 ... 71.257735 71.257735
|
||||
12 1792.0 72.983276 ... 73.460287 59.467852
|
||||
13 1920.0 69.120002 ... 71.626943 71.257735
|
||||
14 2048.0 73.908442 ... 78.398206 77.314362
|
||||
15 2176.0 83.500614 ... 87.876193 86.367588
|
||||
16 2304.0 68.446623 ... 77.810656 77.307030
|
||||
17 2432.0 71.305746 ... 86.711310 85.653855
|
||||
18 2560.0 77.833728 ... 82.956960 81.108913
|
||||
19 2688.0 83.369354 ... 90.316801 90.102270
|
||||
20 2816.0 79.587973 ... 84.687779 83.153880
|
||||
21 2944.0 81.967162 ... 83.617504 81.967162
|
||||
22 3072.0 81.707223 ... 90.020831 88.060814
|
||||
23 3200.0 83.879425 ... 95.238096 87.673110
|
||||
24 3328.0 83.226931 ... 82.748617 84.895397
|
||||
25 3456.0 81.353753 ... 88.207407 91.200871
|
||||
26 3584.0 87.296493 ... 99.354022 97.628001
|
||||
27 3712.0 82.421427 ... 89.353616 83.247783
|
||||
28 3840.0 83.339866 ... 91.398346 86.840987
|
||||
29 3968.0 86.849777 ... 92.302520 84.066569
|
||||
30 4096.0 93.077479 ... 83.055527 82.340585
|
||||
15 2176.0 83.155572 ... 87.876193 85.998493
|
||||
16 2304.0 68.446623 ... 78.064941 77.307030
|
||||
17 2432.0 71.305746 ... 86.179335 85.653855
|
||||
18 2560.0 77.833728 ... 82.539044 81.310171
|
||||
19 2688.0 83.737433 ... 90.532356 89.676257
|
||||
20 2816.0 80.767055 ... 83.873477 81.674548
|
||||
21 2944.0 82.237674 ... 83.477440 82.373605
|
||||
22 3072.0 81.707223 ... 89.877939 88.197981
|
||||
23 3200.0 84.544253 ... 96.822991 94.814812
|
||||
24 3328.0 83.226931 ... 85.398926 84.895397
|
||||
25 3456.0 81.766291 ... 91.511426 86.503829
|
||||
26 3584.0 83.876297 ... 95.756542 95.350361
|
||||
27 3712.0 84.159518 ... 88.837126 87.937800
|
||||
28 3840.0 85.070769 ... 93.326587 85.663823
|
||||
29 3968.0 91.198760 ... 87.097744 91.609561
|
||||
30 4096.0 86.204508 ... 93.792965 89.240508
|
||||
|
||||
[31 rows x 5 columns]
|
||||
|
||||
@@ -499,7 +499,7 @@ We can now compare the performance of our kernel against that of cuBLAS. Here we
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 7 minutes 16.663 seconds)
|
||||
**Total running time of the script:** ( 6 minutes 38.507 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_03-matrix-multiplication.py:
|
||||
|
@@ -240,7 +240,7 @@ References
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 0 minutes 0.279 seconds)
|
||||
**Total running time of the script:** ( 0 minutes 0.012 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_04-low-memory-dropout.py:
|
||||
|
@@ -38,36 +38,36 @@ Layer Normalization
|
||||
|
||||
layer-norm:
|
||||
N Triton Torch Apex
|
||||
0 1024.0 585.142849 277.694907 481.882344
|
||||
0 1024.0 585.142849 277.694907 468.114273
|
||||
1 1536.0 630.153868 323.368435 511.999982
|
||||
2 2048.0 668.734716 334.367358 528.516136
|
||||
3 2560.0 694.237267 365.714281 518.481028
|
||||
2 2048.0 682.666643 337.814445 520.126988
|
||||
3 2560.0 694.237267 362.477870 512.000013
|
||||
4 3072.0 712.347810 378.092307 501.551037
|
||||
5 3584.0 725.873439 384.859062 458.751978
|
||||
6 4096.0 728.177767 381.023256 458.293714
|
||||
7 4608.0 670.254540 396.387087 426.173427
|
||||
8 5120.0 688.403381 397.669909 426.666652
|
||||
9 5632.0 698.542675 395.228063 413.357796
|
||||
10 6144.0 702.171410 402.885254 411.313806
|
||||
11 6656.0 700.631610 400.360920 398.861429
|
||||
12 7168.0 690.891575 396.844306 387.459443
|
||||
13 7680.0 678.895043 392.587863 387.634072
|
||||
14 8192.0 639.375598 393.609605 373.424507
|
||||
15 8704.0 627.315309 389.005597 380.502740
|
||||
16 9216.0 606.814809 407.337026 383.999986
|
||||
17 9728.0 587.350922 409.599987 382.427505
|
||||
18 10240.0 564.965524 408.578556 382.803739
|
||||
19 10752.0 547.872604 411.559798 381.445676
|
||||
20 11264.0 533.207081 406.826188 373.134567
|
||||
5 3584.0 725.873439 384.859062 451.527536
|
||||
6 4096.0 728.177767 381.023256 451.972420
|
||||
7 4608.0 670.254540 396.387087 428.651163
|
||||
8 5120.0 688.403381 397.669909 420.102563
|
||||
9 5632.0 704.000002 395.228063 413.357796
|
||||
10 6144.0 702.171410 402.885254 413.042029
|
||||
11 6656.0 700.631610 400.360920 400.360920
|
||||
12 7168.0 690.891575 392.767108 382.293315
|
||||
13 7680.0 678.895043 393.846167 386.415087
|
||||
14 8192.0 636.271854 394.795186 377.729113
|
||||
15 8704.0 624.502255 389.005597 379.465939
|
||||
16 9216.0 604.327881 406.214877 382.010363
|
||||
17 9728.0 585.142883 408.524944 383.369452
|
||||
18 10240.0 564.965524 409.600010 382.803739
|
||||
19 10752.0 546.133312 411.559798 380.601764
|
||||
20 11264.0 531.634232 404.997742 371.595879
|
||||
21 11776.0 520.486200 409.599991 377.587162
|
||||
22 12288.0 514.680630 413.911572 383.251457
|
||||
23 12800.0 504.433489 410.420828 376.470582
|
||||
24 13312.0 494.180982 405.699062 376.310952
|
||||
25 13824.0 481.882350 411.888257 379.389355
|
||||
26 14336.0 470.997935 406.695045 374.185964
|
||||
27 14848.0 460.403127 408.192434 374.712936
|
||||
28 15360.0 454.269882 406.214870 378.092307
|
||||
29 15872.0 447.887117 406.974373 376.225175
|
||||
22 12288.0 516.031509 413.911572 383.251457
|
||||
23 12800.0 504.433489 409.599981 377.163903
|
||||
24 13312.0 494.180982 406.473303 377.645399
|
||||
25 13824.0 482.934503 412.656711 379.389355
|
||||
26 14336.0 471.967074 402.414053 370.558967
|
||||
27 14848.0 461.297068 407.492270 373.534584
|
||||
28 15360.0 454.269882 406.214870 377.511515
|
||||
29 15872.0 447.098578 409.599996 377.343238
|
||||
|
||||
|
||||
|
||||
@@ -393,7 +393,7 @@ Layer Normalization
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 5 minutes 37.042 seconds)
|
||||
**Total running time of the script:** ( 5 minutes 37.218 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_05-layer-norm.py:
|
||||
|
@@ -23,7 +23,7 @@ Fused Attention
|
||||
This is a Triton implementation of the Flash Attention algorithm
|
||||
(see: Dao et al., https://arxiv.org/pdf/2205.14135v2.pdf; Rabe and Staats https://arxiv.org/pdf/2112.05682v2.pdf)
|
||||
|
||||
.. GENERATED FROM PYTHON SOURCE LINES 7-355
|
||||
.. GENERATED FROM PYTHON SOURCE LINES 7-360
|
||||
|
||||
|
||||
|
||||
@@ -233,13 +233,16 @@ This is a Triton implementation of the Flash Attention algorithm
|
||||
def forward(ctx, q, k, v, sm_scale):
|
||||
BLOCK = 128
|
||||
# shape constraints
|
||||
Lq, Lk = q.shape[-1], k.shape[-1]
|
||||
assert Lq == Lk
|
||||
Lq, Lk, Lv = q.shape[-1], k.shape[-1], v.shape[-1]
|
||||
assert Lq == Lk and Lk == Lv
|
||||
assert Lk in {16, 32, 64, 128}
|
||||
o = torch.empty_like(q)
|
||||
grid = (triton.cdiv(q.shape[2], BLOCK), q.shape[0] * q.shape[1])
|
||||
tmp = torch.empty((q.shape[0] * q.shape[1], q.shape[2]), device=q.device, dtype=torch.float32)
|
||||
L = torch.empty((q.shape[0] * q.shape[1], q.shape[2]), device=q.device, dtype=torch.float32)
|
||||
m = torch.empty((q.shape[0] * q.shape[1], q.shape[2]), device=q.device, dtype=torch.float32)
|
||||
num_warps = 4 if Lk <= 64 else 8
|
||||
|
||||
_fwd_kernel[grid](
|
||||
q, k, v, sm_scale,
|
||||
tmp, L, m,
|
||||
@@ -250,14 +253,14 @@ This is a Triton implementation of the Flash Attention algorithm
|
||||
o.stride(0), o.stride(1), o.stride(2), o.stride(3),
|
||||
q.shape[0], q.shape[1], q.shape[2],
|
||||
BLOCK_M=BLOCK, BLOCK_N=BLOCK,
|
||||
BLOCK_DMODEL=64, num_warps=4,
|
||||
BLOCK_DMODEL=Lk, num_warps=num_warps,
|
||||
num_stages=1,
|
||||
)
|
||||
ctx.save_for_backward(q, k, v, o, L, m)
|
||||
ctx.BLOCK = BLOCK
|
||||
ctx.grid = grid
|
||||
ctx.sm_scale = sm_scale
|
||||
ctx.BLOCK_DMODEL = 64
|
||||
ctx.BLOCK_DMODEL = Lk
|
||||
return o
|
||||
|
||||
@staticmethod
|
||||
@@ -274,6 +277,8 @@ This is a Triton implementation of the Flash Attention algorithm
|
||||
do_scaled, delta,
|
||||
BLOCK_M=ctx.BLOCK, D_HEAD=ctx.BLOCK_DMODEL,
|
||||
)
|
||||
|
||||
num_warps = 4 if ctx.BLOCK_DMODEL <= 64 else 8
|
||||
_bwd_kernel[(ctx.grid[1],)](
|
||||
q, k, v, ctx.sm_scale,
|
||||
o, do_scaled,
|
||||
@@ -286,7 +291,7 @@ This is a Triton implementation of the Flash Attention algorithm
|
||||
q.shape[0], q.shape[1], q.shape[2],
|
||||
ctx.grid[0],
|
||||
BLOCK_M=ctx.BLOCK, BLOCK_N=ctx.BLOCK,
|
||||
BLOCK_DMODEL=ctx.BLOCK_DMODEL, num_warps=8,
|
||||
BLOCK_DMODEL=ctx.BLOCK_DMODEL, num_warps=num_warps,
|
||||
num_stages=1,
|
||||
)
|
||||
return dq, dk, dv, None
|
||||
@@ -385,7 +390,7 @@ This is a Triton implementation of the Flash Attention algorithm
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 0 minutes 0.078 seconds)
|
||||
**Total running time of the script:** ( 0 minutes 0.073 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_06-fused-attention.py:
|
||||
|
@@ -152,7 +152,7 @@ We can also customize the libdevice library path by passing the path to the `lib
|
||||
|
||||
.. rst-class:: sphx-glr-timing
|
||||
|
||||
**Total running time of the script:** ( 0 minutes 0.254 seconds)
|
||||
**Total running time of the script:** ( 0 minutes 0.010 seconds)
|
||||
|
||||
|
||||
.. _sphx_glr_download_getting-started_tutorials_07-libdevice-function.py:
|
||||
|
@@ -5,20 +5,20 @@
|
||||
|
||||
Computation times
|
||||
=================
|
||||
**18:15.037** total execution time for **getting-started_tutorials** files:
|
||||
**17:27.791** total execution time for **getting-started_tutorials** files:
|
||||
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_03-matrix-multiplication.py` (``03-matrix-multiplication.py``) | 07:16.663 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_03-matrix-multiplication.py` (``03-matrix-multiplication.py``) | 06:38.507 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_05-layer-norm.py` (``05-layer-norm.py``) | 05:37.042 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_05-layer-norm.py` (``05-layer-norm.py``) | 05:37.218 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_02-fused-softmax.py` (``02-fused-softmax.py``) | 03:30.792 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_02-fused-softmax.py` (``02-fused-softmax.py``) | 03:30.054 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_01-vector-add.py` (``01-vector-add.py``) | 01:49.928 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_01-vector-add.py` (``01-vector-add.py``) | 01:41.917 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_04-low-memory-dropout.py` (``04-low-memory-dropout.py``) | 00:00.279 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_06-fused-attention.py` (``06-fused-attention.py``) | 00:00.073 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_07-libdevice-function.py` (``07-libdevice-function.py``) | 00:00.254 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_04-low-memory-dropout.py` (``04-low-memory-dropout.py``) | 00:00.012 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
| :ref:`sphx_glr_getting-started_tutorials_06-fused-attention.py` (``06-fused-attention.py``) | 00:00.078 | 0.0 MB |
|
||||
| :ref:`sphx_glr_getting-started_tutorials_07-libdevice-function.py` (``07-libdevice-function.py``) | 00:00.010 | 0.0 MB |
|
||||
+---------------------------------------------------------------------------------------------------------+-----------+--------+
|
||||
|
Reference in New Issue
Block a user