Skip to content
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

CUDA 11.0: Unresolved extern function (fixed in CUDA 11.1) #1522

Open
havogt opened this issue Jun 22, 2020 · 5 comments
Open

CUDA 11.0: Unresolved extern function (fixed in CUDA 11.1) #1522

havogt opened this issue Jun 22, 2020 · 5 comments

Comments

@havogt
Copy link
Contributor

havogt commented Jun 22, 2020

In some conditions, GridTools code won't compile with CUDA 11 with the following error

ptxas fatal   : Unresolved extern function '_ZN9gridtools5impl_17tuple_leaf_getter3getILm0ENS_17positional_strideEEERKT0_RKNS0_10tuple_leafIXT_ES4_Lb1EEE'

This issues is partly worked-around in #1519 by disabling a static_assert.

NVIDIA is investigating the problem. We are waiting for feedback.

@havogt
Copy link
Contributor Author

havogt commented Mar 22, 2021

Bug should be fixed in CUDA 11.1u2.

@havogt
Copy link
Contributor Author

havogt commented Mar 22, 2021

Current default CUDA version on daint is 11.0 which is affected by this bug. The bug is triggered by regression_tests/boundary_conditions.cc.

@anstaf
Copy link
Contributor

anstaf commented Mar 23, 2021

For the record: demangled symbol is:
gridtools::positional_stride const& gridtools::impl_::tuple_leaf_getter::get<0ul, gridtools::positional_stride>(gridtools::impl_::tuple_leaf<0ul, gridtools::positional_stride, true> const&)

@havogt
Copy link
Contributor Author

havogt commented Mar 23, 2021

In the issue with the boundary_conditions, the symbol is a different one (same function, but template instantiated with a different type). If I understand the bug correctly, somewhere in a static_assert the function is used, but not in run-time. Looking at ptx (where the symbol appears) didn't help me to figure out the location of the static_assert (if that's really the problem).

@havogt
Copy link
Contributor Author

havogt commented Mar 23, 2021

In the boundary_conditions problem it is _ZN9gridtools5impl_17tuple_leaf_getter3getILm0EiEERKT0_RKNS0_10tuple_leafIXT_ES3_Lb0EEE

int const& gridtools::impl_::tuple_leaf_getter::get<0ul, int>(gridtools::impl_::tuple_leaf<0ul, int, false> const&)

havogt added a commit that referenced this issue Mar 23, 2021
2 tests disabled:
- boundary_conditions_gpu because of #1522
- test_tuple.cu conversion constructor for Clang 11.0.0 because of #1615
havogt added a commit to havogt/gridtools that referenced this issue Mar 23, 2021
2 tests disabled:
- boundary_conditions_gpu because of GridTools#1522
- test_tuple.cu conversion constructor for Clang 11.0.0 because of GridTools#1615
@havogt havogt pinned this issue Mar 29, 2021
@havogt havogt changed the title CUDA 11: Unresolved extern function CUDA 11.0: Unresolved extern function Mar 29, 2021
@havogt havogt changed the title CUDA 11.0: Unresolved extern function CUDA 11.0: Unresolved extern function (fixed in CUDA 11.1) Mar 29, 2021
@havogt havogt unpinned this issue May 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants