חישוב מבוזר קהילתי הוא חישוב מבוזר, כלומר שיטה לעריכת חישובים ארוכים או מסובכים, לפרויקטים הזקוקים לעוצמה כזו, המתבצע באמצעות קהילה מקוונת המאפשרת ניצול הזמן הפנוי של עשרות אלפי מחשבים אישיים שבעליהם מצטרפים לפרויקט, ורתימתם לפרויקט אחד באמצעות האינטרנט.
במקום להשתמש במחשבי-על, שמחירם גבוה וזמינותם נמוכה, חישוב מבוזר קהילתי מתבסס על אלפים רבים של משתמשים ביתיים שהתקינו במחשבם תוכנת לקוח קטנה. התוכנה רצה ברקע ומנצלת את המעבד כשהוא לא בשימוש. במחשבים של היום, אפילו תוך כדי עבודה רגילה, נדיר להגיע לצריכת 100% מכוח העיבוד שלו, והתוכנה מסתמכת על עובדה זו. בוודאי שבמשך שעות רבות שבהן המחשב האישי אינו נמצא בשימוש ניתן לנצל את מלוא עוצמתו לפרויקט.
תוכנת הלקוח מתקשרת עם שרת כדי לקבל מטלות חישוב - משימות קצרות זמן, בצירוף כמות נתונים קטנה, עליה מבוצעים החישובים. בסיום חישוב המטלה, התוצאה נשלחת בחזרה לשרת. אז יכולה תוכנת הלקוח לבקש יחידות עבודה נוספות, וחוזר חלילה. שיטה זו של התקשרות במשיכה מאפשרת עקיפת חומות אש מאחוריהן נמצאים פעמים רבות מחשבי המתנדבים.
דוגמה לפרויקט של חישוב מבוזר קהילתי היא המשימה של חיפוש מספרים ראשוניים ענקיים. עד לשנת 1996 התגלו מספרים כאלה על ידי מחשבי-על (בעיקר מתוצרת CDC או Cray). החל משנה זו התגלו מספרים כאלה על ידי מחשבי פנטיום ביתיים שהופעלו באלפיהם באמצעות האינטרנט.
בנוסף לתרומה הישירה של החישוב המבוזר לפרויקט הנהנה ממנו, יש בו גם תרומה עקיפה, בזכות הוצאת המחקר מתחומו המצומצם של "מגדל השן" האקדמי ופתיחתו להשתתפות פעילה של קהילה רחבה של חובבים. בהיבט זה שלו מהווה החישוב המבוזר הקהילתי חלק מתרבות האינטרנט.
מחשבי מתנדבים הם הטרוגניים מאוד מבחינת מערכת הפעלה וחומרה. על החוקר להכין תוכנות לקוח גמישות ופורטביליות כדי לאפשר לפרויקט שלו לנצל את מירב המתנדבים העומדים לרשותו. המחשבים מתחלפים לעיתים קרובות, ומקשים על צבירת רישומים היסטוריים לביסוס אמינותו וביצועיו של מחשב מסוים. אף כי המאגר הכולל של המתנדבים עשוי להיות גדול, קשה לאמוד האם מחשב מסוים נמצא או לא נמצא במאגר המחשבים העובדים כעת על הפרויקט, בגלל החיבוריות הרופפת בה מאופיינת התשתית. לא ניתן בדרך כלל להעביר הודעות למחשבי המתנדבים באופן יזום (כמו למשל הודעת ביטול מטלה), מכיוון שהתקשורת מתבצעת ביוזמת מחשבי הלקוח בלבד. זמינות מחשבי המתנדבים נמוכה - יש צורך בערך בפי שלושה מחשבי מתנדבים מאשר במחשבים ייעודיים לצורך ביצוע אותו פרויקט. כמו כן ניהול הפרויקט הוא מורכב, ומצריך תחזוקה של שרתים מרכזיים מתוחכמים. עבור פרויקטים קטנים וקצרי טווח, לא משתלם להניע פרויקט מבוזר קהילתי כלל.[1]
המשתמשים אשר מנדבים את מחשביהם לפרויקט נהנים מכך שהם מפעילים משאב מערכת לא מנוצל לטובת מטרה שהם רואים כנעלה. כדי להניע את המשתמשים לתרום עוד ממשאביהם, מנהיגים פרויקטים שונים שיטות ניקוד למשתתפים, אשר מזכות את המשתתפים המובילים בזכות להגיע לרשימת התורמים הגדולים של הפרויקט. תגמול זה לבדו, אף כי אינו כרוך בתגמול כספי, מניע לעיתים את מנדבי המחשבים לזייף תוצאות: במקום לחשב מטלת חישוב, להחזיר עבורה תוצאה של מטלה קודמת, למשל. כדי להתגונן בפני שיטה זו, כמו גם בפני שגיאות חישוב הקורות בעיקר במחשבים בתנאי קיצון, למשל מחשבים שעברו over clocking, מפעילים החוקרים המובילים את פרויקטי החישוב המבוזר הקהילתי מנגנונים המשפרים את הבטחת איכות התוצאות, אך מבזבזים משאבי חישוב. שיטות כאלה כוללות הכנסה של חישובי ביקורת בתוך מטלת החישוב (כהגנה בפני החזרת תוצאות אקראיות) ודרישה לכפילות תוצאות: החוקר מבקש לקבל תוצאות עבור אותה מטלת חישוב משני מחשבי מתנדבים ומעלה. מגמה זו בתורה גורמת להתמרמרות בקרב המתנדבים, אשר מעריכים את זמן המחשב והוצאות החשמל שהם תורמים, ואינם רוצים לראות את תרומתם מבוזבזת בשל חוסר אמון של החוקרים. הפרזה בדרישה למספר התוצאות הכפולות מביאה לרתיעה של המתנדבים מן הפרויקט, ומקטינה עוד יותר את כמות העבודה המבוצעת (מעבר לצמצום כמות העבודה אשר נובע מבזבוז משאבים לצורך כפילות).
מחשבי מתנדבים אינם מחוברים לשרת באופן קבוע, אלא מבקשים מספר מטלות, השייכות לעיתים לפרויקטים שונים, ומחזירים אותם במועד מאוחר יותר, בעיקר על פי זמני היעד של המטלות. זמן היעד של מטלה הוא מועד אשר אם המטלה מגיעה לשרת לאחריו, המשתמש אינו מקבל ניקוד עבורה. ביצוע מטלות ללא קבלת ניקוד מתסכל את המשתמשים ומבזבז את משאביהם. לכן ערוכות תכנות הלקוח לסדר את מטלות החישוב על פי זמני היעד שלהן, דבר המביא לכך שמטלות בעלות זמני יעד ארוכים מחושבות לאחר ש"הוחזקו בבטן" של הלקוח במשך זמן רב, בעוד הלקוח מבצע חישובים עבור פרויקטים אחרים, בעלי זמני יעד קצרים יותר. מאידך גיסא, קיצור זמני היעד עלול להוביל את הלקוח לכישלון בעמידה בזמני היעד של הפרויקט, ולעודד את הלקוח להימנע מביצוע מטלות עבור פרויקט זה.
תכנות הלקוח המוקדמות למחשוב מבוזר קהילתי היו תוכנה יחידה אשר כללה גם את החישוב המדעי וגם את תשתית המיקבול. מבנה מונוליתי זה היה בלתי גמיש. למשל, היה קשה לעדכן את גרסת החישוב המדעי. לאחר מכן עבר החישוב הקהילתי המבוזר למערכות תווכה שמספקות תשתית מיקבול בנפרד מן החישוב המדעי. דוגמאות לתווכות כאלה הן
משתמש אשר מנדב זמן מעבד, מנדב בעצם יותר מכך. צריכת החשמל של המעבד עולה ככל שהוא עסוק יותר. ההפרש עשוי להתבטא בכ-50–150 וט עבור מעבדי אופטרון, למשל. חישוב זה נובע מהכפלת האומדן של חברת AMD עבור הספקי המעבדים במצבים השונים פי שניים, כדי להביא בחשבון את עלויות הקירור. [2] הפרש ההספק בין מצבי הפעילות השונים הולך וגדל עם עליית המודעות לצריכת האנרגיה של מחשבים. בנוסף, משתמש להוט עשוי להותיר את המחשב פועל במשך הלילה או לנטרל מנגנוני חיסכון באנרגיה כגון השהיה.
ניצול זמן מעבד בעת שהמשתמש משתמש במחשב פוגע בביצועי המחשב עקב זיהום זיכרון המטמון, עומס על המעבד, ועומס על הדיסק והגישה לרשת. אם זיכרון מהווה מגבלה, תיתכן הגדלה של כמות ההחמצות בזיכרון המטמון של הדיסק ודפדוף מוגבר. על פי רוב מקבל מחשוב התנדבותי עדיפות נמוכה לצורך זימונו בתור למעבד, דבר שמקטין את מידת ההפרעה למשתמש, אך לא מבטל אותה לחלוטין.