New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add compiling support for CUDA v11 and cuDNN v8 #215
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tlikhomanenko has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
include_directories(include) | ||
|
||
FIND_PACKAGE(CUDA 6.5) | ||
MESSAGE(STATUS "warpctc: cuda found ${CUDA_FOUND}") | ||
FIND_PACKAGE(Torch) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be possible to disable looking Torch up front or add QUIET
to this at the very least? It would probably confuse the user quite a lot if the build looks for Torch.
lib/CMakeLists.txt
Outdated
@@ -82,6 +82,11 @@ if (FL_LIBRARIES_USE_CUDA) | |||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..> # TODO(jacobkahn): fix me | |||
) | |||
|
|||
# TODO For CUDA version 11 CUB doesn't have to be built | |||
if (CUDA_VERSION VERSION_GREATER "11.0" OR CUDA_VERSION VERSION_EQUAL "11.0") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you potentially gate https://github.com/facebookresearch/flashlight/blob/cc7f8073b719f1d7aba289ba0e50ec9e94dca5db/lib/CMakeLists.txt#L55 with this check as well so we don't download Cub if we've found CUDA 11?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've tried to do that, but it didn't work, and I didn't have the time to dig into it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, the latest version of FindCudaToolkit (which should be updated in flashlight CMakeLists.txt) doesn't compile cub library yet, so we need to do it by hand.
lib/CMakeLists.txt
Outdated
@@ -82,6 +82,11 @@ if (FL_LIBRARIES_USE_CUDA) | |||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/..> # TODO(jacobkahn): fix me | |||
) | |||
|
|||
# TODO For CUDA version 11 CUB doesn't have to be built | |||
if (CUDA_VERSION VERSION_GREATER "11.0" OR CUDA_VERSION VERSION_EQUAL "11.0") | |||
add_compile_definitions(THRUST_IGNORE_CUB_VERSION_CHECK) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's use target_compile_definitions
on the lib
target. We can make the modification PUBLIC
so it works with libraries that link to lib
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
@alealv has updated the pull request. You must reimport the pull request before landing. |
2 similar comments
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
I took the time to update CMakeLists.txt of the warpctc project and submit a PR. It works but I think it will take time to be approved. Because of that and because many of the project files used in flashlight were also outdated, I updated everything and made a PR for that. Hence, that PR should be merge before this one. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
3 similar comments
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tlikhomanenko has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
@alealv has updated the pull request. You must reimport the pull request before landing. |
Could you fix the build? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tlikhomanenko has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
@alealv has updated the pull request. You must reimport the pull request before landing. |
Fixed! [#225] |
@alealv has updated the pull request. You must reimport the pull request before landing. |
6 similar comments
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv has updated the pull request. You must reimport the pull request before landing. |
@alealv — thanks for this. I'm actually about to commit some changes that update our CMake minimum version to 3.10 which has much better CUDA support (as some of us have been discussing in another thread). Once that's in, it would be great if you could rebase on top of that, then I'll review this. |
Summary: Pull Request resolved: #266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - #215 - #225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
…pile. Nvidia changed its Deprecation Policy (https://docs.nvidia.com/deeplearning/cudnn/developer-guide/index.html#backward-compatibility) and introduce a new version of cudnnSetRNNDescriptor ()https://docs.nvidia.com/deeplearning/cudnn/api/index.html#release-800-preview)
@alealv has updated the pull request. You must reimport the pull request before landing. |
Given that most of the changes were added in #266, I updated this PR to contain only the following change that is missing and stoping the master branch to compile if CUDAv11 is present:
|
Thanks for those updates @alealv — especially thanks for continuing to rebase on top of recent changes (things are changing quickly) :) - taking a look |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jacobkahn has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
Summary: **Original Issue**: [#198] & [#213] & [#147] - I updated [CMakeList.txt](https://github.com/facebookresearch/flashlight/blob/master/app/asr/third_party/warpctc/CMakeLists.txt) of third party library (warp-ctc)[https://github.com/baidu-research/warp-ctc]. The latest CMakeLists.txt handles conditional compilation for architecture **compute_30** depending on CUDA version (CUDAv11 deprecates this architecture). - The same is done for main [CMakeLists.txt]() file - The [deprecation policy of CUDA has changed](https://docs.nvidia.com/deeplearning/cudnn/developer-guide/index.html#backward-compatibility). Therefore, the condition of **cudnnSetRNNDescriptor** used [here](https://github.com/facebookresearch/flashlight/blob/master/flashlight/autograd/backend/cuda/CudnnUtils.cpp#L281) needs to also include until version 8000 of cuDNN. - Finally, with CUDA v11 [Nvidia cub](https://nvlabs.github.io/cub/) is included in CUDA toolkit, but because **flashlight** downloads and uses it's own version, it collides with _Thrust_ version. Hence, **THRUST_IGNORE_CUB_VERSION_CHECK** must be define in if using CUDA v11 Pull Request resolved: #215 Reviewed By: padentomasello Differential Revision: D24636876 Pulled By: jacobkahn fbshipit-source-id: 76fac8c7f7672f4bb254420af3e1cbc6f3b187bc
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Summary: Pull Request resolved: flashlight/flashlight#266 *Looking for comments here.* We don't have to go with this, but this is a draft of what this looks like. Helps us eliminate a lot of technical debt for now. We might be able to one day relax this restriction down the line again if we need to. Update the minimum version of CMake required for flashlight to 3.10. 3.10 deprecates `FindCUDA.cmake` and adds first-class support for CUDA code in CMake as a project language. Among other things, this diff: - **Adds support for CUDA 11** and running flashlight code on Ampere with the CMake build - **Adds support for building flashlight libraries, flashlight core, and flashlight apps as shared objects/libraries**. This makes shipping these libraries to other places easy. - **Removes the `fl-libraries-cuda` and `warpctc` targets from flashlight**. These used to be separate CUDA libraries that were linked with and exported as additional targets - They flashlight exported targets more difficult to understand - They had the potential to conflict with other bits, i.e. another build of warpctc on the user's machine - CUDA kernels in flashlight libraries are now part of the `fl-libraries` target which makes it transparently easy to add new CUDA sources to flashlight, cc chaitan3 - CMake 3.10 automatically enables CUDA Separable Compilation, device linking, and PIC. - Removes the backport of `cuda_add_library` that was necessary for older versions of CMake - Builds warpctc as part of `fl-app-asr` - Removes unused cruft in warpctc related to the warpctc CPU backend (which we will never use or build) - Removes direct linking of `OpenMP` and `Threads` `IMPORTED` targets because they incorrectly propagate flags to nvcc which aren't interpreted properly. This is probably fixable in a better way. - Gates the installation of CUB for CUDA versions <= 11 (this is necessary - including CUB with CUDA >= 11 breaks things) Changes that need to be rebased (so they're Github auto-mentioned): - flashlight/flashlight#215 - flashlight/flashlight#225 Reviewed By: tlikhomanenko Differential Revision: D25013556 fbshipit-source-id: 8bbb56783dba07c0f2e7209748ddcd0e7c481db8
Original Issue: [#198] & [#213] & [#147]
Summary