Puncte:1

nvcc/gcc rupt în Ubuntu 20.04/21.04: cum să corecționez gcc (instalat prin apt)?

drapel mt

Întrebare: Care este soluția pas cu pas pentru a aplica un patch gcc, în special atunci când este instalat prin apt? (Vreau să aplic pe cel menționat Aici)

Am încercat să urmez mai multe ghiduri despre cum să corectez gcc, dar fie se bazează pe faptul că gcc a fost instalat prin sursă, fie prin git. În plus, pentru utilizatorii mai puțin experimentați, este extrem de confuz CE este patch-ul/ce fișier este/cum arată, cum să îl obțineți din raportul de eroare și cum să îl aplicați. Când urmez pașii descriși în ghiduri, fie primesc o eroare că patch-ul descărcat nu poate fi analizat corect, fie nu pare să se întâmple nimic. Este acest plasturele?

Fundal: Există o eroare în gcc 10.3: „Compilatorul se blochează cu o eroare de segmentare pe o bibliotecă de cronograme folosind nvcc” (vezi mesajul de eroare de mai jos). Patch-ul menționat în raportul de eroare nu este inclus în versiunea care vine cu apt. Prin urmare, Ubuntu 20.04 (eventual 21.04, precum și alte distribuții Linux) sunt livrate cu versiunea deteriorată, astfel încât codul CUDA nu poate fi compilat. Rețineți că eroarea ar trebui să fie remediată în gcc 11, dar aceasta pare nesusținut de CUDA.

Mesaj de eroare:

/usr/include/c++/10/chrono: În înlocuirea âtemplate<class _Rep, class _Period> template<class _Period2> folosind __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)> [cu _Period2 = _Period2; _Rep = _Rep; _Period = _Period]â:
/usr/include/c++/10/chrono:473:154: necesar de aici
/usr/include/c++/10/chrono:428:27: eroare internă a compilatorului: eroare de segmentare
  428 | _S_gcd(intmax_t __m, intmax_t __n) noexcept
      | ^~~~~~
Vă rugăm să trimiteți un raport complet de eroare,
cu sursă preprocesată dacă este cazul.
Consultați <file:///usr/share/doc/gcc-10/README.Bugs> pentru instrucțiuni.
ninja: build stopped: subcomandă eșuată.

Ce am incercat pana acum:

  • curățarea completă a tot ceea ce are legătură cu Nvidia/CUDA și reinstalarea (am încercat versiunile CUDA 11.2, 11.3, 11.4)
  • upgrade la gcc-11 g++-11, dar asta pare nesusținut de CUDA
  • patching gcc, dar fie am eșuat, fie asta nu pare să facă nimic
  • downgrade-ul la gcc-9 rezolvă problema, dar nu este o soluție pe termen lung, în opinia mea

Legate de:

drapel cc
Trecerea la 10.2 nu ar rezolva și problema?
drapel mt
@ubfan1 da, cred că ai dreptate. Totuși, nu am găsit o modalitate ușoară de a face acest lucru, cel puțin nu cu apt, deoarece pot alege doar „gcc-10”, nu subverison.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.