Score:1

nvcc/gcc ใช้งานไม่ได้ใน Ubuntu 20.04/21.04: วิธีแก้ไข gcc (ติดตั้งผ่าน apt)

ธง mt

คำถาม: วิธีแก้ปัญหาทีละขั้นตอนในการใช้โปรแกรมแก้ไข gcc โดยเฉพาะเมื่อติดตั้งผ่าน apt คืออะไร (ฉันต้องการใช้อันที่กล่าวถึง ที่นี่)

ฉันพยายามทำตามคำแนะนำหลายข้อเกี่ยวกับวิธีแพตช์ gcc แต่พวกเขาพึ่งพาว่า gcc ถูกติดตั้งผ่านซอร์สหรือผ่าน git นอกจากนี้ สำหรับผู้ใช้ที่มีประสบการณ์น้อย จะทำให้เกิดความสับสนอย่างมากว่าแพทช์คืออะไร/ไฟล์ใดที่เป็น/มีลักษณะอย่างไร จะรับจากรายงานข้อบกพร่องได้อย่างไร และนำไปใช้อย่างไร เมื่อทำตามขั้นตอนที่ระบุไว้ในคำแนะนำ ฉันอาจได้รับข้อผิดพลาดว่าไม่สามารถแยกวิเคราะห์แพตช์ที่ดาวน์โหลดได้อย่างถูกต้อง หรือดูเหมือนว่าไม่มีอะไรเกิดขึ้น เป็น นี้ แพทช์?

พื้นหลัง: มีข้อผิดพลาดใน gcc 10.3: "คอมไพเลอร์ขัดข้องด้วยความผิดพลาดในการแบ่งกลุ่มในไลบรารี chrono โดยใช้ nvcc" (ดูข้อความแสดงข้อผิดพลาดด้านล่าง) แพทช์ที่กล่าวถึงในรายงานข้อบกพร่องไม่รวมอยู่ในเวอร์ชันที่มาพร้อมกับ apt ดังนั้น Ubuntu 20.04 (อาจเป็น 21.04 รวมถึง Linux distros อื่น ๆ ) มาพร้อมกับเวอร์ชันที่ใช้งานไม่ได้ ทำให้ไม่สามารถคอมไพล์โค้ด CUDA ได้ โปรดทราบว่าข้อผิดพลาดควรจะได้รับการแก้ไขใน gcc 11 แต่สิ่งนี้ ดูเหมือนว่า CUDA ไม่รองรับ.

ข้อความผิดพลาด:

/usr/include/c++/10/chrono: ในการแทนที่ â template<class _Rep, class _Period> template<class _Period2> โดยใช้ __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)> [กับ _Period2 = _Period2; _Rep = _เรป; _ระยะเวลา = _ระยะเวลา]â:
/usr/include/c++/10/chrono:473:154: จำเป็นจากที่นี่
/usr/include/c++/10/chrono:428:27: ข้อผิดพลาดของคอมไพเลอร์ภายใน: การแบ่งส่วนผิดพลาด
  428 | _S_gcd(intmax_t __m, intmax_t __n) ไม่มีข้อยกเว้น
      | ^~~~~~~
กรุณาส่งรายงานข้อบกพร่องฉบับเต็ม
ด้วยแหล่งที่มาที่ประมวลผลล่วงหน้าตามความเหมาะสม
ดู <file:///usr/share/doc/gcc-10/README.Bugs> สำหรับคำแนะนำ
นินจา: บิลด์หยุดทำงาน: คำสั่งย่อยล้มเหลว

สิ่งที่ฉันพยายามจนถึงตอนนี้:

  • ล้างทุกอย่างที่เกี่ยวข้องกับ Nvidia / CUDA และติดตั้งใหม่ทั้งหมด (ฉันลอง CUDA เวอร์ชัน 11.2, 11.3, 11.4)
  • กำลังอัปเกรดเป็น gcc-11 g++-11 แต่สิ่งนี้ ดูเหมือนว่า CUDA ไม่รองรับ
  • แก้ไข gcc แต่ฉันล้มเหลวหรือดูเหมือนจะไม่ทำอะไรเลย
  • การดาวน์เกรดเป็น gcc-9 ช่วยแก้ปัญหาได้ แต่ไม่ใช่วิธีแก้ปัญหาระยะยาวในความคิดของฉัน

ที่เกี่ยวข้อง:

cc flag
การดาวน์เกรดเป็น 10.2 จะไม่ช่วยแก้ปัญหาด้วยหรือ
mt flag
@ubfan1 ใช่ ฉันเชื่อว่าคุณพูดถูก ฉันไม่พบวิธีที่ง่ายในการทำเช่นนี้ อย่างน้อยก็ไม่ใช่ apt เนื่องจากฉันสามารถเลือกได้เฉพาะ "gcc-10" ไม่ใช่เวอร์ชันย่อย

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา