האם NVIDIA פתחה את הקוד לדרייבר ה-GPU שלה?

החדשות שהופיעו באתרים שונים (לדוגמא: Phoronix) לפיו חברת NVIDIA החליטה לפתוח את קוד המקור של הדרייברים לכרטיסי ה-GPU שלהם – גרמו ללא מעט אנשים לחייך ואולי לאמר "ניצחנו", חברת NVIDIA נכנעה ופתחה את הקוד לדרייברים שלה!

אז זהו. שלא.

הדבר הראשון שכדאי להבין – זו הסיבה מדוע NVIDIA התעקשה להשאיר את הדרייברים כקוד סגור, והסיבה לכך קשורה להיסטוריה: NVIDIA קנתה חברות שונות והשתמשת בקניין הרוחני. בנוסף, NVIDIA חתמה על הסכמי רישוי שונים כולל השכרת פטנטים מחברות כמו S3, IBM וכו' הקשורים למימוש פונקציות שונות בדרייברים, והסכמים אלו אסרו על NVIDIA לפתוח את הקוד לחלקים אלו, כך של-NVIDIA לא נותרה ברירה ודרייברים ל-GPU ביתיים ומקצועיים – נשארו סגורים. לעומת זאת, בכל הקשור לציוד משובץ (Embedded) – ב-NVIDIA (עם דרייברים ל-Tegra, ה-GPU למערכות משובצות שלהם) התחילו הכל מאפס, כך שהם יכלו מהרגע הראשון לפתוח את הקוד לדרייברים, ואכן הדרייברים הללו נמצאים בחלקים השונים בלינוקס, כמו ב-Kernel, ב-Mesa ובמקומות אחרים.

אז מה בעצם השוני הגדול הפעם?

מה שקורה, הוא ש-NVIDIA פיתחה מיקרו מעבד חדש מבוסס RISC-V שנמצא בתוך ה-GPU (זה נקרא GSP) ואותו מעבד מבצע את מה שהדרייברים הקודמים עשו עם ה-CPU במחשב, במהלך איתחול ה-GPU כשה-OS עולה, רק שעכשיו הכל נעשה עם ה-GSP, באופן עקרוני:

  1. הדרייבר ב-Kernel מאתחל את ה-GPU ואת ה-GSP (ללא האיתחול, הדברים היחידים שאפשר לעשות עם ה-GPU זה בחירת מצב טקסטואלי ממה שנתמך דרך VESA, ומצב Frame Buffer mode, אם בא לך לשנן מחדש את קטלוג הקללות שאתה יודע..).
  2. הדרייבר מעלה קושחה סגורה ומוצפנת וה-GSP "לוקח פיקוד"
  3. בסיום, הכרטיס מודיע ל-Kernel לגבי מהות הציוד, כניסות, יציאות, פונקציות אפשריות, יכולות וכו'
  4. לאחר שהמודול הופעל בהצלחה, חלקים אחרים (User space) מתחילים לפעול מול המודול בזכרון

במילים אחרות, מכיוון שהכל נעשה עתה בחומרה ללא צורך בכל הדרייבר הבינארי ש-NVIDIA בנתה ושחררה (שימו לב, דרייבר בינארי. עדיין צריך את הקושחה הבינארית וזה דבר שתמיד תצטרכו) – אין מניע ל-NVIDIA שלא לשחרר את הקוד החדש, הוא לא מגלה שום דבר למתחרים מצד אחד, ולא מאפשר למשתמשים להפעיל פונקציונאליות בלתי מורשית מצד שני.

האם זה אומר שממחר בבוקר הדרייבר הפתוח הוא המענה החדש של NVIDIA? לא ממש. הדרייבר החדש הוא רק בראשית דרכו, יש לו עוד דרך חתחתים לעבור (והפעם כל יצרני הפצות לינוקס משתתפים בבניה ושילוב הדרייבר והכנת חבילות התקנה), כך שלבינתיים ממשיכים לעבוד עם הדרייברים הבינאריים הרגילים. בנוסף, ה-GSP בגירסה החדשה קיים רק בכרטיסים מבוססי Turing. שאר הכרטיסים הישנים יותר – ממשיכים לקבל תמיכה רק דרך הדרייברים הבינאריים הרגילים.

אז האם NVIDIA "ראתה את האור" בכך שהיא פותחת דרייבר חדש בקוד פתוח? רחוק מכך. אם תרצה לקודד וידאו, אם תרצה להעלות מהירות שעון של ה-GPU ואם תרצה להריץ קוד המצריך CUDA או OpenGL או דברים אחרים – תצטרך לעבוד מול החלקים האחרים (User Space) ש-NVIDIA משחררת כקוד סגור בלבד, ובשלב זה לא נראה ש-NVIDIA הולכת לפתוח את הקוד הזה.

ועוד משהו קטן לגבי המתחרה הגדולה של NVIDIA – חברת AMD. האם גרסאות הדרייברים בקוד פתוח שלהם נותנים בעצם יותר מעצם העובדה שהם פתוחים? לא תמיד. ב-AMD פשוט מחביאים את הפונקציות העיקריות והחשובות – בתוך קושחה בינארית מוצפנת. כמו ב-NVIDIA, רק שב-AMD החלקים הקשורים ל-User space – פתוחים. אגב, גם במקרה של אינטל, הדברים זהים למה ש-AMD מבצעים (אם כי גם שם יש חלקים סגורים, היי Intel Media SDK), ויש גם קוד חופף ל-AMD ואינטל בחלקים כמו Mesa וכו'.

לסיכום: NVIDIA מעולם לא חיפשה לעשות "דווקא" ולא היתה "אנטי קוד פתוח". אין שום כיף בכך שצריך לתחזק דרייבר משותף לכל מערכות ההפעלה, להכין קבצים בינאריים ולוודא שוב ושוב ששום דבר לא תוקע את ה-OS עקב באגים בדרייבר (ב-NVIDIA זוכרים את הלקח הכואב הזה בצורה חזקה מ-Windows Vista). אני מאמין שהם יפתחו לאט לאט גם את החלקים האחרים, אבל בכל מקרה, צריך לתת מחמאות ולעודד חברות שמחליטות לפתוח את הקוד לחלקים שונים (ולא מסתכלות על קוד פתוח כ"בית קברות" לפרויקטים שלא יתוחזקו לעולם).

כמה מילים על הדרייברים של NVIDIA וה"פריצות" החדשות

בשבועות האחרונים אנחנו עדים למגוון פוסטים של חדשות טכניות בהם אנשים שונים מפרסמים כי הם הצליחו "לפרוץ" את ההגבלה על מהירות HASH של כריית מטבעות וירטואליות (LHR) ש-NVIDIA הכניסו בכרטיסי GPU שונים. לקח יומיים עד שבאותם אתרים הופיעו החדשות כי ה"פריצה" היא לא יותר מאשר קובץ המכיל מספר סוגי וירוסים וסקריפטים שונים שרק מעמיסים תולעים ומזיקים למחשב.

בסוף השבוע האחרון הודיעה קבוצה דרום-אפריקאית כי הם הצליחו לפרוץ ל-NVIDIA (כפי הנראה דרך שרת הדואר), והם הצליחו לגנוב חומר חשוב בגודל 1 טרהבייט מהחברה, כולל מפרטים שונים, קוד וכו'. חברת NVIDIA, בצעד לא טיפוסי, הצליחה לפרוץ בחזרה אל הפורצים והחברה הצליחה להצפין עם כופרה את המחשב שבעזרתו נגנב התוכן. הפורצים הודיעו בתגובה כי הם הצליחו לגבות את החומר לפני ש-NVIDIA הצליחו להצפין את המחשב (שהוא בכלל VM).

כמובן שהפורצים התחילו לפרסם שלל הצהרות (כפי שניתן לראות כאן) עם איומים על NVIDIA שתפרסם "שחרור נעילה" של כרטיסי LHR ושלל דרישות אחרות – או שהם ישחררו דרייברים ועדכוני BIOS שיפתחו נעילות רבות ש-NVIDIA הכניסו על מנת להגביל את הכרטיסים השונים.

אז אחרי שראינו מה הפורצים רוצים, ומה ש-NVIDIA יכולים לעשות לפורצים, אולי כדאי יהיה להבהיר מספר דברים חשובים לכל אלו שמשתמשים בכרטיסים של NVIDIA לצורך כריה או שרוצים לשפר את ביצועי הכרטיסים שלהם:

  • חברת NVIDIA בעברה הרחוק, כלל לא חתמה ולא הצפינה את ה-BIOS לכרטיסיה, וכתוצאה מכך – סוחרים מפוקפקים רבים הצליחו לשים את ידם על כרטיסים ישנים, לשנות BIOS ולמכור את הכרטיסים הללו ככרטיסי GTX 1070, GTX 2060 וזיופים של כרטיסי NVIDIA אחרים, כאשר בתוך אותו כרטיס ישנו מעבד גרפי ישן מאוד. כיום, אם מישהו חושב שהוא קנה כרטיס גרפי במחיר מציאה וחושש שעבדו עליו, הוא יוכל להתקין את תוכנת HWinfo ולבדוק זאת, והתוכנה תתריע מיידית אם מדובר בכרטיס עם מעבד גרפי מזויף או אותנטי.
  • ב-NVIDIA משתמשים במספר טריקים שונים בכדי ליצור דרייברים לכרטיסים השונים. כך, לדוגמא, כל דורם שמבצע סקירה על כרטיס שלא שוחרר של NVIDIA, יקבל בדואר את הכרטיס, אך הוא לא יוכל להפעילו עד ש-NVIDIA לא תשחרר רשמית דרייברים לאותו כרטיס באתר יעודי סגור. כל מי שינסה לקחת דרייברים קיימים ולנסות לשנות אותם (לפי PCI ID לדוגמא) יגלה מהר מאוד שהדרייברים הקיימים פשוט לא עובדים על הכרטיס החדש והלא מוכרז. הסיבה: החלק ששונה בין הכרטיסים הישנים לחדשים נמצא, באופן מוצפן וחתום, על הקושחה שמגיעה עם הדרייבר.
  • חברת NVIDIA מאפשרת עבודה די בסיסית עם הכרטיסים שלה, כל עוד הכרטיס מופעל במהירות שעון בסיסית בלבד, וכאשר רוב פונקציות התלת מימד והקידוד/פריסת וידאו אינן פעילות במלואם – כל זאת ניתן לעשות בלינוקס עם דרייבר ה-Nouveau, וגם כאן – כל עוד יש קובץ קושחה אותנטי, מוצפן וחתום. הסיבה לכך: NVIDIA רוצה שלמשתמשים תהיה סביבה גרפית פעילה באופן מספק על מנת שהמשתמש יוכל להוריד בקלות בלינוקס דרייבר מלא ושיוכל להתקינו מבלי לעבור תהליכי "פליק פלאק" שונים.
  • תהליך יצירת וחתימת דרייברים, גם עבור שותפים עסקיים של NVIDIA, לא מבוצע Online אלא לחלוטין Offline בצורה הכי ידנית שיש ובשימוש מספר כלים בכדי לייצר דרייבר וקושחה – כשהם מוצפנים במפתחות יעודיים (ושונים: אפשר לדוגמא להריץ דרייברים של RTX ה"ביתיים" על כרטיסי GTX, אך לא לקבל את כל הפונקציות החזקות על הכרטיסים המקצועיים מסידרת A, לדוגמא).

ולכן – כאשר כל מיני "פורצים" מבטיחים כי הם יוכלו לבטל LHR או מגבלות אחרות בכרטיס, מדובר בלא יותר מעבודה בעיניים. אכן, בעבר, NVIDIA הגבילה את ה-LHR ברמת הדרייבר ועקב טעות של מהנדס, ההגבלה שהיתה ברמת דרייבר בלבד – בוטלה, אולם מאז החברה למדה לקח, והגבלת ה-LHR היא ברמת הסיליקון, הווה אומר – הגבלה חומרתית במעבד הגרפי, ושום עדכון BIOS/קושחה לא יוכל לבטל זאת.

אז אם אתם קוראים על כל מיני "פריצות" חדשות ל-GPU שיאפשרו דברים טובים וביצועים משמעותית יותר גבוהים, וכל זאת ב"דרייבר" להתקנה – שמרו מרחק מ"דרייבר" כזה. אגב, כל מה שתיארתי לעיל על NVIDIA, תקף (ברובו) גם על AMD.

קצת על הכרטיסים הגרפיים החדשים של nVidia

חברת nVidia הציגה אתמול את הכרטיסים הגרפיים למשתמש הביתי/סמי-מקצועי, סידרת ה-RTX, דגמי 2070,2080,2080Ti, וזאת אחרי שנתיים "יובש" שבו החברה לא הציגה התפתחות משמעותית לקהל זה (למעט Titan V שיותר מיועד לאלו שמתחילים בתחום ה-AI/DL). לקהל אחר החברה הוציאה מס' כרטיסי Tesla ורק לפני כמה ימים הציגה החברה למשתמשים המקצועיים את סידרת ה-Quadro RTX, במחירים סופר יוקרתיים. (אחרי הכל, אתה קונה כרטיס שביצועיו נמוכים מאחיו המשפחתיים, רק שעם זכרון ECC ואחריות יותר ארוכה, אז מדוע שלא תשלם פי 4?)

במשך שעתיים הציג מנכ"ל החברה את ה-RTX, הוא דיבר על Deep Learning, על AI, על Ray Tracing וכמה הכרטיסים החדשים סופר-מהפכניים וסופר מהירים ב-Ray Tracing. אין ספק, המנכ"ל צודק, הכרטיס, ארכיטקטורת Turing באמת מהפכנית.

אבל בסופו של יום nVidia לא הציגה משהו אחד די פשוט: איך הכרטיסים החדשים והכה-נוצצים בביצועים עם תוכנות עכשויות. אם אני עורך וידאו ואני רוצה לרנדר (הן אובייקטים והן להוצאת קובץ לשידור) – בכמה טוב הכרטיס החדש? איך הביצועים שלו על DirectX, OpenGL, Vulkan? סביר להניח שהביצועים יותר טובים בשימוש CUDA (כי פשוט יש יותר ליבות, יש זכרון יותר מהיר וכו'), אבל בכמה הוא יותר טוב?

וכאן nVidia לא פרסמה מאומה. לא לכרטיסים המקצועיים, ולא לכרטיסים הביתיים. כלום, אפילו לא שקף אחד במצגת ולא באתר החברה.

תחום ה-Deep Learning, כמוהו אחיו ה-Artificial Intelligence – הם תחומים מאוד חשובים. גם בתחום ה-Ray Tracing לא התרחשו הרבה התפתחויות לשוק הביתי/סמי מקצועי זה זמן רב, ואם היית רוצה להשתמש ב-Ray Tracing, הדבר הראשון שהיית צריך להצטייד בו זה המון סבלנות. רינדורים כאלו הם איטיים. אין ספק שכרטיסי ה-RTX בהחלט מאיצים דברים וההדגמות נראו מעולות.

אבל יש כמה בעיות בעניין:

  • אין שום סטנדרט ל-Ray Tracing. כל תוכנה עובדת בדרכה ואולי מאפשרת יבוא מתוכנה מתחרה, אבל בניגוד לפורמטים של קבצי וידאו ו-Codecs, אף קבוצה עדיין לא הקימה סטנדרטים שחברות יתחייבו לממש אותן.
  • אין תוכנות מקצועיות שיכולות לנצל את ה-RTX מבחינת Ray Tracing. אני מאמין שבעקבות ההכרזה, חברות תוכנה רבות יוסיפו תמיכה ל-RTX, אבל זה תהליך שלוקח זמן, לפעמים שנה ולפעמים (ברוב המקרים) יותר.
  • מיקרוסופט הוסיפה תמיכת Ray Tracing ל-DirectX, אבל ב-Vulkan ו-OpenGL, ספריות וארכיקטורות שרצות על מק, iOS, אנדרואיד, לינוקס וכו' – אין שום תמיכה.

במילים אחרות: זה נחמד ש-nVidia מוציאה את כרטיסי ה-RTX וגם SDK למפתחים, אבל עד שיופיעו תוכנות שינצלו את ה-RTX, יהיה כדאי להמתין לבדיקות ולראות אם קניית כרטיסי ה-RTX 2070,2080,2080Ti תהיה שווה. בל נשכח שיש מלאי ענק בחוץ של כרטיסי GTX 1070, 1080 ו-1080Ti בשוק שמחיריהם ירדו, ואולי שיפור של כמה אחוזים לא יצדיק את רכישת "המילה" האחרונה בתחום ה-GPU.

Exit mobile version