CnD

צילום מסך תוכנה:
CnD
פרטי תוכנה:
גרסה: 2012.1
טען תאריך: 14 Apr 15
מפתחים: Andreas Kloeckner
רשיון: ללא תשלום
פופולריות: 11

Rating: nan/5 (Total Votes: 0)

CND הוא מתורגמן מקור למקור Python שעושה שימוש במערכי n-ממדי בC נעים יותר & nbsp; זה יהפוך את הקוד הזה.:
sgemm חלל (float *, לצוף * b, לצוף * ג, n int)
{
& Nbsp; ממד "Fortran" [n, n];
& Nbsp; ב "Fortran" ממד [n, n];
& Nbsp; ממד ג [n, n];
& Nbsp; ל( int i = 1; i <= n; ++ i)
& Nbsp; ל( j int = 1; j <= n; j ++)
& Nbsp; {
& Nbsp; tmp לצוף = 0;
& Nbsp; ל( k int = 1; k <= n; ++ k)
& Nbsp; tmp + = [i, k] b * [k, j];
& Nbsp; ג [i-1, j-1] = tmp;
& Nbsp;}
}
לזה:
sgemm חלל (float *, לצוף * b, לצוף * ג, n int)
{
& Nbsp; ל( int i = 1; i <= n; ++ i)
& Nbsp; ל( j int = 1; j <= n; j ++)
& Nbsp; {
& Nbsp; tmp לצוף = 0;
& Nbsp; ל( k int = 1; k <= n; ++ k)
& Nbsp; tmp + = [((k - 1) * ((n - 1) + 1)) + (i - 1)] * [b ((j - 1) * ((n - 1) + 1) ) + (K - 1)];
& Nbsp; ג [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
אתה יכול גם להעיף מבט על דוגמא מקיפה יותר שמראה תוספת רעש וצלצולים כמה.
התוצאה היחידה של הכרזת ממד היא לשנות את הפרשנות של המפעיל תחתי מערך (IDX). הצהרות ממד לציית לכללים לקביעת טווח C רגילים.
אני גם רוצה לציין שCND הוא מתורגמן חזק, המבוסס על מנתח, לא כלי החלפת טקסט מקושקש. הוא מבין את כל C99, ועוד רבים סיומות של גנו.
כל מפרט ציר בהצהרה ממד יש הצורה הבאה:
להתחיל: סוף: צעד: leading_dimension
התחלה יכולה להיות מושמטת. הסוף והצעד עשוי גם להיות מושמט, אבל אם ערכים אחריהם הם שיפורטו, נקודותיים הנגררים שלהם חייבים להישאר במקום. לדוגמא, מפרט הציר: 5 פשוט מציין צעד של 5. הצעד פשוט פועל כמכפיל על המדד. לא מתקבל על דעת שהיא בדיקה נעשית על הצהרת הממד. ייתכן לירות לעצמך ברגל כל דרך שתרצה.
אם הפריסה היא נתון כמו "ג" או לא ניתן כלל, הדברים הבאים:
- המערך ערוך כדי שורה-גדולה.
- מדד הסוף נלקח להיות בלעדי, אם צוין.
- ברירת המחדל של מדד המתחילה ועד 0.
אם הפריסה היא נתון כמו "Fortran", הדברים הבאים:
- המערך שנקבע בצו טור-גדול.
- מדד הסוף נלקח להיות כוללני, אם צוין.
- ברירת המחדל של מדד המתחילה ועד 1.
(רוב) של הידע הכלול בהצהרת הממד ניתן reobtained תיכנותי ידי פונקציות follwing:
- Rankof (א)
- Nitemsof (א)
- Lboundof (, ציר)
- Uboundof (, ציר) (מחזיר את המשתמש שצוין הגבול עליון)
- Puboundof (, ציר) (מחזיר את המדד רק עברתי את קצה הציר)
- Ldimof (, ציר)
- Strideof (, ציר)
בכל מקרה, ציר חייב להיות מספר קבוע (לא ביטוי קבוע, מספר שלם רגיל).
התקנה / שימוש
תוכל לקבל CND על ידי הורדת tarball ממדד החבילה, או מGitHub:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; CND cd
 init submodule git
& Nbsp; עדכון submodule git
כדי להשתמש בCND, פשוט להוסיף הפצה-dir / bin לנתיב שלך.
כדי להתחיל, פשוט להפעיל (מתוך שורש CND):
& Nbsp; דוגמאות cd
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
a.out ./; & nbsp
אם אתה רוצה יותר שליטה פרטנית על תהליך התרגום, פקודת CND חושפת רק את תרגום מקור למקור. הערה CND שמצפה מקור עיבוד ראשוני. אתה יכול לעבור -e האפשרות לקבל CND לרוץ בעיבוד המוקדם על המקור שלך עבורך. הפעל:
& Nbsp; CND -h
כדי לקבל עזרה מלאה בממשק שורת הפקודה. אתה יכול להגדיר משתנה סביבת CND_CPP לעיבוד המוקדם ברצונך להשתמש.

מה חדש בהודעה זו:

    • שינוי תחביר מ[ i; j] ל[ i, j] .
      תמיכת מנתח ובכל זאת יותר
    • לכותרות בחיים אמיתיים.

    דרישות :

    • Python

  • תוכנות אחרות של יזם Andreas Kloeckner

    PuDB
    PuDB

    20 Feb 15

    PyOpenCL
    PyOpenCL

    28 Sep 15

    תגובות ל CnD

    תגובות לא נמצא
    להוסיף הערה
    הפעל את התמונות!