Điểm:1

nvcc/gcc bị hỏng trong Ubuntu 20.04/21.04: cách vá gcc (cài đặt qua apt)?

lá cờ mt

Câu hỏi: Giải pháp từng bước để áp dụng bản vá gcc, đặc biệt khi nó được cài đặt qua apt là gì? (Tôi muốn áp dụng cái được đề cập đây)

Tôi đã thử làm theo nhiều hướng dẫn về cách vá gcc, nhưng chúng đều dựa vào gcc đó đã được cài đặt qua nguồn hoặc qua git. Hơn nữa, đối với những người dùng ít kinh nghiệm hơn, sẽ cực kỳ khó hiểu bản vá là GÌ/tập tin nào/nó trông như thế nào, cách lấy bản vá từ báo cáo lỗi và cách áp dụng bản vá đó. Khi làm theo các bước được nêu trong hướng dẫn, tôi gặp lỗi không thể phân tích cú pháp chính xác bản vá đã tải xuống hoặc dường như không có gì xảy ra. Là cái này mảnh vụn?

Lý lịch: Có một lỗi trong gcc 10.3: "Trình biên dịch gặp sự cố với lỗi phân đoạn trên thư viện chrono sử dụng nvcc" (xem thông báo lỗi bên dưới). Bản vá được đề cập trong báo cáo lỗi không có trong phiên bản đi kèm với apt. Do đó, Ubuntu 20.04 (có thể là 21.04, cũng như các bản phân phối Linux khác) đi kèm với phiên bản bị hỏng, do đó không thể biên dịch mã CUDA. Lưu ý rằng lỗi được cho là đã được sửa trong gcc 11, nhưng điều này dường như không được hỗ trợ bởi CUDA.

Thông báo lỗi:

/usr/include/c++/10/chrono: Thay thế âtemplate<class _Rep, class _Period> template<class _Period2> bằng cách sử dụng __is_harmonic = std::__bool_constant<(std::ratio<((_Period2::num / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::num, _Period::num)) * (_Period::den / std::chrono::duration<_Rep, _Period>::_S_gcd (_Period2::den, _Period::den))), ((_Period2::den / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::den, _Period::den)) * ( _Period::num / std::chrono::duration<_Rep, _Period>::_S_gcd(_Period2::num, _Period::num)))>::den == 1)> [với _Period2 = _Period2; _Đại diện = _Đại diện; _Period = _Period]â:
/usr/include/c++/10/chrono:473:154: bắt buộc từ đây
/usr/include/c++/10/chrono:428:27: lỗi trình biên dịch nội bộ: Lỗi phân đoạn
  428 | _S_gcd(intmax_t __m, intmax_t __n) không ngoại lệ
      | ^~~~~~~
Vui lòng gửi báo cáo lỗi đầy đủ,
với nguồn tiền xử lý nếu thích hợp.
Xem <file:///usr/share/doc/gcc-10/README.Bugs> để biết hướng dẫn.
ninja: quá trình xây dựng đã dừng: lệnh phụ không thành công.

Những gì tôi đã cố gắng cho đến nay:

  • xóa hoàn toàn mọi thứ liên quan đến Nvidia/CUDA và cài đặt lại (Tôi đã thử CUDA phiên bản 11.2, 11.3, 11.4)
  • nâng cấp lên gcc-11 g++-11, nhưng điều này dường như không được hỗ trợ bởi CUDA
  • vá gcc, nhưng tôi đã thất bại hoặc điều này dường như không làm được gì
  • hạ cấp xuống gcc-9 giải quyết được vấn đề, nhưng theo tôi không phải là giải pháp lâu dài

Có liên quan:

lá cờ cc
Việc hạ cấp xuống 10.2 cũng sẽ không giải quyết được vấn đề?
lá cờ mt
@ubfan1 vâng, tôi tin rằng bạn đúng. Tuy nhiên, tôi không tìm thấy cách dễ dàng để thực hiện việc này, ít nhất là không phải với apt vì tôi chỉ có thể chọn "gcc-10", chứ không phải subverison.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.