cudnn-frontend is distributed primarily under the Apache License 2.0
(see LICENSE.txt). Some files retain MIT or BSD-3-Clause
terms for pre-existing code. Every source file carries an SPDX
SPDX-License-Identifier: expression declaring the applicable licenses.
To find the license of any file, read its SPDX tag, e.g.:
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: MIT
SPDX-License-Identifier: Apache-2.0 AND MIT
SPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause
Third-party attributions are in THIRD_PARTY_LICENSES.txt.
The OSS warning cleanup licenses its NVIDIA modifications under Apache-2.0,
including changes to files with retained MIT or BSD-3-Clause code. Their headers
identify the scope of the modifications and use an SPDX AND expression to
preserve the pre-existing terms. This is not an alternative-license choice:
both sets of applicable terms must be respected. See the
SPDX license-expression specification.
Original copyright notices, provenance comments, and embedded license texts
remain intact. MIT terms are reproduced in LICENSE-MIT.txt,
and upstream license texts and attributions are reproduced in
THIRD_PARTY_LICENSES.txt. Where an existing file
carries both an MIT declaration and a BSD notice, its expression retains both.
The adapted CUTLASS static scheduler in python/cudnn/_cutlass_helpers/ likewise
retains BSD-3-Clause for the upstream code and applies Apache-2.0 to local changes.
An Apache-2.0 modification does not assert that upstream authors relicensed
their contributions. Files whose complete NVIDIA ownership is established can
use Apache-2.0 alone; _fp8_quant.py in block_sparse_attention/ is one such file.
The repository's original license was MIT. During the MIT → Apache 2.0 relicensing (PR #408, sign-off issue #431), files were converted to Apache 2.0 only when all of their surviving code is owned by NVIDIA. Files are kept under MIT in two cases:
- Pending external-contributor consent — the file contains code
contributed by a non-NVIDIA contributor whose consent to relicense has not
(yet) been obtained. Determined by
git blameondevelop: a file stays MIT if any external contributor's lines survive in it. - Third-party-derived code — the file is derived from external open source (FlashAttention, QuACK, or CUTLASS) and carries the original author's copyright.
If/when a listed external contributor grants consent, the files attributed to them below can be moved to Apache 2.0 by flipping their SPDX tag.
Consent received so far (see issue #431): @take-cheeze, @fallintoplace, @zianglih, @JackRao123, @zkyue, @Hyaloid, @haowen-han, @junaire, @szluyu99, @dimitar-asenov — their files have already been moved to Apache-2.0. A file still appears below if another contributor who has not yet consented also has surviving lines in it.
Cleared by NVIDIA employment (not by issue #431 consent): @HollowMan6, @hxbai — commits under a personal email address but is an NVIDIA employee, so those contributions are covered by employment and their files are Apache-2.0.
The Introducing commit(s) column links the exact commit that introduced the
surviving external line(s) in each file (blame on origin/develop).
| File | External contributor(s) | Introducing commit(s) |
|---|---|---|
CMakeLists.txt |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
cudnn_frontend-config.cmake.in |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
dlpack_version.txt |
Emilien Macchi (@EmilienM) | 1669048 (#165) |
include/cudnn_frontend/graph_properties.h |
Subhobrata Dey (@sbcd90) | 6943af9 (#214) |
include/cudnn_frontend/node/conv_dgrad.h |
DrDirk (@DrDirk) | 5f680bc (#423) |
include/cudnn_frontend/node/conv_fprop.h |
DrDirk (@DrDirk) | 5f680bc (#423) |
include/cudnn_frontend/node/conv_wgrad.h |
DrDirk (@DrDirk) | 5f680bc (#423) |
include/cudnn_frontend/node/matmul.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend/node/pointwise.h |
DrDirk (@DrDirk) James Y Knight (@jyknight) |
5f680bc (#423)af9bc9e (#56) |
include/cudnn_frontend/node/reduction.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend/node/reshape.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend/node/rng.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend/node/softmax.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend/node_interface.h |
James Y Knight (@jyknight) | af9bc9e (#56) |
include/cudnn_frontend_utils.h |
Martin Valgur (@valgur) | 31b2c5d (#154) |
python/CMakeLists.txt |
Connor Baker (@ConnorBaker) Emilien Macchi (@EmilienM) |
0f828cf (#125)1669048 (#165) |
samples/cpp/CMakeLists.txt |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/convolution/dgrads.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/convolution/fp8_fprop.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/convolution/fprop.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/convolution/int8_fprop.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/convolution/wgrads.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/matmul/fp8_matmul.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/matmul/int8_matmul.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/matmul/matmuls.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/matmul/mixed_matmul.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/misc/pointwise.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/misc/resample.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/misc/serialization.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/misc/slice.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/misc/sm_carveout.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/norm/batchnorm.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/norm/layernorm.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/norm/rmsnorm.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_bwd.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_bwd_with_cudagraphs.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_bwd_with_flexible_graphs.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_cached.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd_paged_decode_and_prefill.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd_with_cudagraphs.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd_with_custom_dropout.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd_with_flexible_graphs.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp16_fwd_with_paged_caches.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp8_bwd.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp8_bwd_bottom_right_causal_mask.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp8_fwd.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/cpp/sdpa/fp8_fwd_bottom_right_causal_mask.cpp |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
samples/legacy_samples/CMakeLists.txt |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
setup.py |
Emilien Macchi (@EmilienM) | e0449f6 (#163) |
test/cpp/CMakeLists.txt |
Connor Baker (@ConnorBaker) | 0f828cf (#125) |
Note:
dlpack_version.txtis a plain version-string file that cannot carry a header comment; it is listed here and governed by MIT via this manifest.
Derived from FlashAttention or CUTLASS (both BSD-3-Clause) and/or QuACK (Apache-2.0); they retain their original authors' copyright notices. See THIRD_PARTY_LICENSES.txt. Files with Apache-2.0 modifications retain MIT in their compound SPDX expression. The commit link(s) are the NVIDIA import commits that introduced the surviving derived lines. This historical list does not enumerate every later import; the source headers and third-party notices also cover those.
| File | Import commit(s) |
|---|---|
python/cudnn/block_sparse_attention/_interface.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/bwd/bsa_bwd_postprocess.py |
afd575d (#333)5b9c94a (#349) |
python/cudnn/block_sparse_attention/csrc/bwd/bsa_bwd_preprocess.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/bwd/sm100_blk128/bsa_bwd_sm100.py |
afd575d (#333)0041a2b (#382)d380fab (#350) |
python/cudnn/block_sparse_attention/csrc/fwd/sm100_blk64/bsa_fwd_combine.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/fwd/sm100_blk64/bsa_fwd_helpers.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/block_info.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/block_sparse_tile_scheduler.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/copy_utils.py |
afd575d (#333)0041a2b (#382) |
python/cudnn/block_sparse_attention/csrc/utils/cute_dsl_utils.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/kernel_utils.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/layout_utils.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/mma_sm100_desc.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/named_barrier.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/pack_gqa.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/pipeline.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/sm90_utils.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/softmax.py |
afd575d (#333)52119ee (#341) |
python/cudnn/block_sparse_attention/csrc/utils/tcgen05_mma_helpers.py |
afd575d (#333) |
python/cudnn/block_sparse_attention/csrc/utils/tile_scheduler.py |
afd575d (#333) |
python/cudnn/deepseek_sparse_attention/score_recompute/dense_score_recompute_sm90.py |
c4a9762 (#241)3e2b8ec (#263)7016b04 (#316)28462c3 (#273) |
python/cudnn/deepseek_sparse_attention/score_recompute/sparse_score_recompute_sm90.py |
c4a9762 (#241) |
python/cudnn/deepseek_sparse_attention/sparse_attention_backward/_interface_sm100.py |
c4a9762 (#241)7016b04 (#316)3e2b8ec (#263)cfee724 (#318) |
python/cudnn/deepseek_sparse_attention/sparse_attention_backward/_interface_sm90.py |
c4a9762 (#241)3e2b8ec (#263)f3ee97b (#388) |
python/cudnn/deepseek_sparse_attention/utils/copy.py |
c4a9762 (#241) |
python/cudnn/deepseek_sparse_attention/utils/sm90/bwd_barriers.py |
c4a9762 (#241) |
python/cudnn/deepseek_sparse_attention/utils/sm90/bwd_tile_scheduler.py |
c4a9762 (#241) |
python/cudnn/deepseek_sparse_attention/utils/sm90/mma.py |
c4a9762 (#241)74efc0d (#321) |
python/cudnn/deepseek_sparse_attention/utils/sm90/primitives.py |
c4a9762 (#241)7016b04 (#316) |
python/cudnn/hstu/hstu_attention/_kernels/blackwell_helpers.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/block_info.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/fast_math.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/mask.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/mma_sm100_desc.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/tile_scheduler.py |
c5471cb |
python/cudnn/hstu/hstu_attention/_kernels/utils.py |
c5471cb |