Skip to content

[BUG]: test_ring_buffer.cpp compilation failure #325

Open
@pdmack

Description

Version

23.07

Which installation method(s) does this occur on?

Docker

Describe the bug.

This is a custom MRC build within a docker image but external to the specified conda setup. It generally relies on the existing cmake constructs provided by the project with a few modifications. But it relies on dependencies drawn from a combination of non conda-forge or nvidia* conda packages: 22.04 Jammy, PyPi, src builds of grpc, etc.

The compilation and linking completes with the exception of the test_ring_buffer.cpp test code. The error itself relates to deleted functions from C++11 (C++0x) but it's not clear to me what the root cause is. This error does not occur in the conda build.

Minimum reproducible example

Please contact @pdmack directly

Relevant log output

/opt/rapids/src/mrc/cpp/mrc/tests/coroutines/test_ring_buffer.cpp: In lambda function:
/opt/rapids/src/mrc/cpp/mrc/tests/coroutines/test_ring_buffer.cpp:223:57: error: use of deleted function 'mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation::WriteOperation(const mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation&)'
  223 |                 co_await rb.write(i).resume_immediately();
      |                                                         ^
In file included from /opt/rapids/src/mrc/cpp/mrc/tests/coroutines/test_ring_buffer.cpp:41:
/opt/rapids/src/mrc/cpp/mrc/include/mrc/coroutines/ring_buffer.hpp:114:12: note: 'mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation::WriteOperation(const mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation&)' is implicitly deleted because the default definition would be ill-formed:
  114 |     struct WriteOperation : ThreadLocalContext
      |            ^~~~~~~~~~~~~~
/opt/rapids/src/mrc/cpp/mrc/include/mrc/coroutines/ring_buffer.hpp:114:12: error: use of deleted function 'std::unique_lock<_Mutex>::unique_lock(const std::unique_lock<_Mutex>&) [with _Mutex = std::mutex]'
In file included from /usr/include/c++/11/condition_variable:41,
                 from /opt/rapids/src/mrc/cpp/mrc/include/mrc/coroutines/thread_pool.hpp:45,
                 from /opt/rapids/src/mrc/cpp/mrc/include/mrc/coroutines/latch.hpp:42,
                 from /opt/rapids/src/mrc/cpp/mrc/tests/coroutines/test_ring_buffer.cpp:40:
/usr/include/c++/11/bits/unique_lock.h:107:7: note: declared here
  107 |       unique_lock(const unique_lock&) = delete;
      |       ^~~~~~~~~~~
/opt/rapids/src/mrc/cpp/mrc/tests/coroutines/test_ring_buffer.cpp:226:51: error: use of deleted function 'mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation::WriteOperation(const mrc::coroutines::RingBuffer<long unsigned int>::WriteOperation&)'
  226 |                 co_await rb.write(i).resume_on(&tp);
      |                                                   ^
make[2]: *** [cpp/mrc/tests/CMakeFiles/test_mrc.dir/build.make:104: cpp/mrc/tests/CMakeFiles/test_mrc.dir/coroutines/test_ring_buffer.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:799: cpp/mrc/tests/CMakeFiles/test_mrc.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

Full env printout

<details><summary>Click here to see environment details</summary><pre>

     ***OS Information***
     DISTRIB_ID=Ubuntu
     DISTRIB_RELEASE=22.04
     DISTRIB_CODENAME=jammy
     DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
     PRETTY_NAME="Ubuntu 22.04.2 LTS"
     NAME="Ubuntu"
     VERSION_ID="22.04"
     VERSION="22.04.2 LTS (Jammy Jellyfish)"
     VERSION_CODENAME=jammy
     ID=ubuntu
     ID_LIKE=debian
     HOME_URL="https://www.ubuntu.com/"
     SUPPORT_URL="https://help.ubuntu.com/"
     BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
     PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
     UBUNTU_CODENAME=jammy
     Linux 37fd8139e87a 5.4.0-139-generic #156-Ubuntu SMP Fri Jan 20 17:27:18 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

     ***GPU Information***
     Thu May  4 21:02:03 2023
     +-----------------------------------------------------------------------------+
     | NVIDIA-SMI 525.89.02    Driver Version: 525.89.02    CUDA Version: 12.1     |
     |-------------------------------+----------------------+----------------------+
     | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
     | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
     |                               |                      |               MIG M. |
     |===============================+======================+======================|
     |   0  Quadro RTX 8000     Off  | 00000000:04:00.0 Off |                    0 |
     | N/A   32C    P8    26W / 250W |      9MiB / 46080MiB |      0%      Default |
     |                               |                      |                  N/A |
     +-------------------------------+----------------------+----------------------+
     |   1  Quadro RTX 8000     Off  | 00000000:43:00.0 Off |                    0 |
     | N/A   33C    P8    29W / 250W |      9MiB / 46080MiB |      0%      Default |
     |                               |                      |                  N/A |
     +-------------------------------+----------------------+----------------------+
     |   2  Quadro RTX 8000     Off  | 00000000:88:00.0 Off |                    0 |
     | N/A   31C    P8    28W / 250W |      9MiB / 46080MiB |      0%      Default |
     |                               |                      |                  N/A |
     +-------------------------------+----------------------+----------------------+
     |   3  Quadro RTX 8000     Off  | 00000000:C4:00.0 Off |                    0 |
     | N/A   33C    P8    26W / 250W |      9MiB / 46080MiB |      0%      Default |
     |                               |                      |                  N/A |
     +-------------------------------+----------------------+----------------------+

     +-----------------------------------------------------------------------------+
     | Processes:                                                                  |
     |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
     |        ID   ID                                                   Usage      |
     |=============================================================================|
     +-----------------------------------------------------------------------------+

     ***CPU***
     Architecture:                    x86_64
     CPU op-mode(s):                  32-bit, 64-bit
     Address sizes:                   43 bits physical, 48 bits virtual
     Byte Order:                      Little Endian
     CPU(s):                          128
     On-line CPU(s) list:             0-127
     Vendor ID:                       AuthenticAMD
     Model name:                      AMD EPYC 7702P 64-Core Processor
     CPU family:                      23
     Model:                           49
     Thread(s) per core:              2
     Core(s) per socket:              64
     Socket(s):                       1
     Stepping:                        0
     Frequency boost:                 enabled
     CPU max MHz:                     2000.0000
     CPU min MHz:                     1500.0000
     BogoMIPS:                        3999.58
     Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate sme ssbd mba sev ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr wbnoinvd arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif umip rdpid overflow_recov succor smca
     Virtualization:                  AMD-V
     L1d cache:                       2 MiB (64 instances)
     L1i cache:                       2 MiB (64 instances)
     L2 cache:                        32 MiB (64 instances)
     L3 cache:                        256 MiB (16 instances)
     NUMA node(s):                    1
     NUMA node0 CPU(s):               0-127
     Vulnerability Itlb multihit:     Not affected
     Vulnerability L1tf:              Not affected
     Vulnerability Mds:               Not affected
     Vulnerability Meltdown:          Not affected
     Vulnerability Mmio stale data:   Not affected
     Vulnerability Retbleed:          Vulnerable
     Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
     Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
     Vulnerability Spectre v2:        Mitigation; Retpolines, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling, PBRSB-eIBRS Not affected
     Vulnerability Srbds:             Not affected
     Vulnerability Tsx async abort:   Not affected

     ***CMake***
     /usr/bin/cmake
     cmake version 3.26.3

     CMake suite maintained and supported by Kitware (kitware.com/cmake).

     ***g++***
     /usr/bin/g++
     g++ (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
     Copyright (C) 2021 Free Software Foundation, Inc.
     This is free software; see the source for copying conditions.  There is NO
     warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


     ***nvcc***
     /usr/local/cuda/bin/nvcc
     nvcc: NVIDIA (R) Cuda compiler driver
     Copyright (c) 2005-2023 NVIDIA Corporation
     Built on Mon_Apr__3_17:16:06_PDT_2023
     Cuda compilation tools, release 12.1, V12.1.105
     Build cuda_12.1.r12.1/compiler.32688072_0

     ***Python***
     /usr/bin/python
     Python 3.10.6

     ***Environment Variables***
     PATH                            : /root/.local/bin:/usr/local/mpi/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/ucx/bin:/usr/local/cuda/bin:/usr/local/bin
     LD_LIBRARY_PATH                 : /usr/local/cuda/compat/lib.real:/usr/local/cuda/compat/lib:/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/local/mpi/lib:/usr/local/ucx/lib:/usr/local/lib:/usr/lib
     NUMBAPRO_NVVM                   :
     NUMBAPRO_LIBDEVICE              :
     CONDA_PREFIX                    :
     PYTHON_PATH                     :

     conda not found
     ***pip packages***
     /usr/local/bin/pip
     Package            Version              Editable project location
     ------------------ -------------------- --------------------------------
     blinker            1.4
     cryptography       3.4.8
     Cython             0.29.28
     dbus-python        1.2.18
     distro             1.7.0
     exceptiongroup     1.1.1
     httplib2           0.20.2
     importlib-metadata 4.6.4
     iniconfig          2.0.0
     jeepney            0.7.1
     keyring            23.5.0
     launchpadlib       1.10.16
     lazr.restfulclient 0.14.4
     lazr.uri           1.0.6
     more-itertools     8.10.0
     mrc                23.7.0a0+40.gdb51433 /opt/rapids/src/mrc/build/python
     oauthlib           3.2.0
     packaging          23.1
     pip                23.1.2
     pluggy             1.0.0
     pybind11-stubgen   0.13.0
     PyGObject          3.42.1
     PyJWT              2.3.0
     pyparsing          2.4.7
     pytest             7.3.1
     python-apt         2.4.0+ubuntu1
     scikit-build       0.17.3
     SecretStorage      3.3.1
     setuptools         67.7.2
     six                1.16.0
     tomli              2.0.1
     wadllib            1.3.6
     wheel              0.40.0
     zipp               1.0.0

</pre></details>

Other/Misc.

This is a non-conda build environment. All other compilation and tests can be run except for this one. I fully acknowledge that this is a currently unsupported build environment.

Code of Conduct

  • I agree to follow MRC's Code of Conduct
  • I have searched the open bugs and have found no duplicates for this bug report

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    • Status

      Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions