Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # 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
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants