ABA


"אתגר תיכנותי - אופטימיזציה"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6559 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6559
blarg

   03:22   16.07.03   
אל הפורום  
  אתגר תיכנותי - אופטימיזציה  
 
   עבר עריכה לאחרונה בתאריך 16.07.03 בשעה 03:24
 
מצורפת תוכנה פשוטה ולא יעילה, המבצעת כפל מטריצות:


משימתכם, אם תסכימו לקבל אותה: להפוך את התוכנת למהירה ככל הניתן, תוך שמירה על התוצאה זהה לתוצאה של התוכנה המקורית. מותר לשנות רק את הקבצים multiply_d.c,Makefile ואת הפרמטר DIM בקובץ multiply_d.h.

אני הצלחתי להשיג, תוך שינוי של שלוש שורות, שיפור של פי 10 בביצועים, ועם מעט שינויים נוספים, שיפור של פי 15. אנשים שאני מכיר השיגו שיפור של פי 30.

בהצלחה
בלארג

**עריכה - תיקון שגיאת כתיב...


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  הרבה מזה תלוי חומרה, dryice 16.07.03 20:17 1

       
dryice

   20:17   16.07.03   
אל הפורום  
  1. הרבה מזה תלוי חומרה,  
בתגובה להודעה מספר 0
 
   מי שיש לו יכולת SSE2 יוסיף דגל -msse2 ובקלות יוציא פקטור 2
במהירות מבלי לגעת בקוד.

אפשר בכלל לחגוג על הmakefile לא מעט, loop-unroll סביר שיעזור.
אפשר גם לתת לgcc ללמוד מתוך הרצה של הקוד.
אפשר לנסות להשתמש בintel compiler. ובכלל קשה להשוות
משום שזמן הריצה איננו דטרמיניסטי בכלל.

כמובן ששיפור אמיתי, דורש שינוי אלגוריתמי, אפשר לרדת מO(N^3)

אפשר בקלות להגיע ל O(N^(log7/log2)) u
ויש כמה דברים שעובדים גם בפחות מזה, בשאיפה מתמדת שנגיע
מתישהוא לN^2


DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net