קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען אין FPGA SDK פֿאַר OpenCL מנהג פּלאַטפאָרמס
אינסטרוקציעס
קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען אין Intel® FPGA SDK פֿאַר OpenCL מנהג פּלאַטפאָרמס
די ימפּלאַמענטיישאַן פון כעטעראַדזשיניאַס זכּרון אין אַ מנהג פּלאַטפאָרם אַלאַוז מער באַנדווידט פון פונדרויסנדיק זכּרון צובינד (EMIF) און גרעסערע און פאַסטער זכּרון אַקסעס. די קאָמבינאַציע פון העטעראָגעניק זכּרון אַקסעס מיט אַ אָפּטימיזעד
OpenCL ™ (1) קערנעל קענען רעזולטאַט אין באַטייטיק פאָרשטעלונג ימפּרווומאַנץ פֿאַר דיין OpenCL סיסטעם.
די אַפּלאַקיישאַן טאָן גיט גיידאַנס פֿאַר קריייטינג כעטעראַדזשיניאַס זכּרון סיסטעמען אין אַ מנהג פּלאַטפאָרמע פֿאַר נוצן מיט די Intel® FPGA SDK פֿאַר OpenCL (2). ינטעל אַסומז אַז איר זענט אַ יקספּיריאַנסט FPGA דיזיינער וואָס איז דעוועלאָפּינג מנהג פּלאַטפאָרמס וואָס כּולל כעטעראַדזשיניאַס זכּרון סיסטעמען.
איידער איר שאַפֿן די כעטעראַדזשיניאַס זכּרון סיסטעמען, באַקענען זיך מיט די Intel FPGA SDK פֿאַר OpenCL דאָקומענטן ספּעסיפיעד אונטן.
פֿאַרבונדענע אינפֿאָרמאַציע
- Intel FPGA SDK פֿאַר OpenCL פּראָגראַממינג גייד
- Intel FPGA SDK פֿאַר OpenCL בעסטער פּראַקטיסיז גייד
- Intel FPGA SDK פֿאַר OpenCL Arria 10 GX FPGA אנטוויקלונג קיט רעפערענץ פּלאַטפאָרמע פּאָרטינג גייד
1.1. באַשטעטיקן די פאַנגקשאַנאַליטי פון די FPGA באָרד און די EMIF ינטערפייסיז
באַשטעטיקן יעדער זיקאָרן צובינד ינדיפּענדאַנטלי און דאַן ינסטאַנטייט דיין מנהג פּלאַטפאָרם מיט גלאבאלע זיקאָרן.
- באַשטעטיקן יעדער זכּרון צובינד מיט ייַזנוואַרג דיזיינז וואָס קענען פּרובירן די גיכקייַט און פעסטקייַט פון יעדער צובינד.
- ינסטאַנטייט דיין מנהג פּלאַטפאָרם מיט גלאבאלע זכּרון.
- פֿאַר עקסampאויב איר האָבן דריי DDR ינטערפייסיז, איינער פון זיי מוזן זיין מאַפּט ווי כעטעראַדזשיניאַס זכּרון. אין דעם פאַל, באַשטעטיקן די פאַנגקשאַנאַליטי פון די OpenCL אָנלייגן מיט יעדער DDR צובינד ינדיפּענדאַנטלי.
OpenCL און די OpenCL לאָגאָ זענען טריידמאַרקס פון עפּל ינק. געניצט דורך דערלויבעניש פון די Khronos Group™. - די Intel FPGA SDK פֿאַר OpenCL איז באזירט אויף אַ ארויס Khronos ספּעסיפיקאַטיאָן און האט דורכגעגאנגען די Khronos קאָנפאָרמאַנסע טעסטינג פּראָצעס. קראַנט קאַנפאָרמאַנסע סטאַטוס קענען זיין געפֿונען אין www.khronos.org/conformance.
- פֿאַר עקסampאויב איר האָבן דריי DDR ינטערפייסיז, איינער פון זיי מוזן זיין מאַפּט ווי כעטעראַדזשיניאַס זכּרון. אין דעם פאַל, באַשטעטיקן די פאַנגקשאַנאַליטי פון די OpenCL אָנלייגן מיט יעדער DDR צובינד ינדיפּענדאַנטלי.
Intel Corporation. אלע רעכטן רעזערווירט. ינטעל, די ינטעל לאָגאָ און אנדערע ינטעל מאַרקס זענען טריידמאַרקס פון ינטעל קאָרפּאָראַטיאָן אָדער זייַן סאַבסידיעריז. ינטעל וואָראַנטיז פאָרשטעלונג פון זייַן FPGA און סעמיקאַנדאַקטער פּראָדוקטן צו קראַנט ספּעסאַפאַקיישאַנז אין לויט מיט ינטעל ס נאָרמאַל וואָראַנטי, אָבער ריזערווז די רעכט צו מאַכן ענדערונגען צו קיין פּראָדוקטן און באַדינונגס אין קיין צייט אָן באַמערקן. ינטעל אַסומז קיין פֿאַראַנטוואָרטלעכקייט אָדער אַכרייַעס וואָס איז שטייענדיק פֿון די אַפּלאַקיישאַן אָדער נוצן פון קיין אינפֿאָרמאַציע, פּראָדוקט אָדער דינסט דיסקרייבד דאָ, אַחוץ ווי ינטעל איז עקספּרעסלי מסכים צו שרייבן. ינטעל קאַסטאַמערז זענען אַדווייזד צו קריגן די לעצטע ווערסיע פון די מיטל ספּעסאַפאַקיישאַנז איידער זיי פאַרלאָזנ אויף קיין ארויס אינפֿאָרמאַציע און איידער פּלייסינג אָרדערס פֿאַר פּראָדוקטן אָדער באַדינונגס. * אנדערע נעמען און בראַנדז קען זיין קליימד ווי די פאַרמאָג פון אנדערע.
ISO 9001:2015 רעגיסטרירט
אַלטערנאַטיוועלי, אויב איר האָבן צוויי דדר ינטערפייסיז און איין קוואַד דאַטן קורס (QDR) צובינד, באַשטעטיקן די פאַנגקשאַנאַליטי פון די OpenCL אָנלייגן פון די צוויי דדר ינטערפייסיז און די QDR צובינד ינדיפּענדאַנטלי.
Intel רעקאַמענדז אַז איר נוצן PCI Express® - (PCIe® -) אָדער EMIF-ויסשליסיק דיזיינז צו פּרובירן דיין זכּרון ינטערפייסיז. נאָך איר באַשטעטיקן אַז יעדער זכּרון צובינד איז פאַנגקשאַנאַל און אַז דיין OpenCL פּלאַן אַרבעט מיט אַ סאַבסעט פון זכּרון ינטערפייסיז, פאָרזעצן
צו שאַפֿן אַ גאָר פאַנגקשאַנאַל כעטעראַדזשיניאַס זכּרון סיסטעם.
1.2. מאָדיפיצירן די board_spec.xml File
מאָדיפיצירן די board_spec.xml file צו ספּעציפיצירן די טייפּס פון כעטעראַדזשיניאַס זכּרון סיסטעמען וואָס זענען בארעכטיגט פֿאַר די OpenCL קערנאַלז.
בעשאַס קערן זאַמלונג, די Intel FPGA SDK פֿאַר OpenCL Offline קאַמפּיילער אַסיינז קערן אַרגומענטן צו אַ זכּרון באזירט אויף די באַפער אָרט אַרגומענט וואָס איר ספּעציפיצירן.
1. בלעטער צו די board_spec.xml file אין די ייַזנוואַרג וועגווייַזער פון דיין מנהג פּלאַטפאָרמע.
2. עפֿענען די board_spec.xml file אין אַ טעקסט רעדאַקטאָר און מאָדיפיצירן די XML אַקאָרדינגלי.
פֿאַר עקסampאויב דיין ייַזנוואַרג סיסטעם האט צוויי DDR מעמעריז ווי פעליקייַט גלאבאלע זכּרון און צוויי QDR באַנקס וואָס איר מאָדעל ווי כעטעראַדזשיניאַס זכּרון, מאָדיפיצירן די זכּרון סעקשאַנז פון די board_spec.xml file צו זיין ענלעך צו די פאלגענדע:
1.3. באַשטעטיקן קייפל זכּרון דיווידערס אין Qsys
דערווייַל, די OpenCL זכּרון באַנק דיוויידער אין די Qsys פּלאַן שטיצט נישט אַ ניט-מאַכט-פון-2 נומער פון זכּרון באַנקס, וואָס איז נישט אַ באַגרענעצונג פֿאַר טיפּיש קאַנפיגיעריישאַנז. אָבער, עס זענען סינעריאָוז ווו ניט-מאַכט-פון-2 נומער פון זכּרון ינטערפייסיז זענען נייטיק. צו אַקאַמאַדייט ניט-מאַכט-פון-2 נומער פון זכּרון ינטערפייסיז, נוצן קייפל OpenCL זכּרון באַנק דיווידערס צו שאַפֿן כעטעראַדזשיניאַס זכּרון סיסטעמען מיט ניט-מאַכט-פון-2 נומער פון זכּרון באַנקס. איר מוזן שאַפֿן קייפל אָפּענקל זכּרון באַנק דיווידערס ווען איר האָבן אַ אמת כעטעראַדזשיניאַס זכּרון סיסטעם. באַטראַכטן אַ סיסטעם מיט איין DDR זכּרון צובינד און איין QDR זכּרון צובינד. ווייַל די צוויי באַנקס האָבן פאַרשידענע זכּרון טאַפּאַלאַדזשיז, איר קענען נישט פאַרבינדן זיי אונטער אַ איין גלאבאלע זכּרון.
פיגורע 1. בלאָק דיאַגראַמע פון אַ דריי-באַנק העטעראָגענעאָוס זכּרון סיסטעם
די כעטעראַדזשיניאַס זכּרון סיסטעם כּולל צוויי DDR זכּרון ינטערפייסיז און איין QDR זכּרון צובינד.אויב איר נוצן ווערסיע 16.0, 16.0.1 אָדער 16.0.2 פון די Intel Quartus® Prime ווייכווארג און די Altera SDK פֿאַר OpenCL, די OpenCL זכּרון באַנק דיוויידער ינקערעקטלי כאַנדאַלז זכּרון פּלאַצן אַריבער אַדרעס באַונדריז. צו אַרבעטן אַרום דעם באַוווסט אַרויסגעבן, לייגן אַ רערנ - ליניע בריק מיט אַ פּלאַצן גרייס פון 1 און פאַרבינדן זיין Avalon ® מעמאָרי-מאַפּט (Avalon-MM) בעל צו די אָפּענקל זכּרון באַנק דיווידער ס שקלאַף פּאָרט.
באַמערקונג:
דעם באַוווסט אַרויסגעבן איז פאַרפעסטיקט אין די Intel Quartus Prime ווייכווארג און די Intel FPGA SDK פֿאַר OpenCL ווערסיע 16.1.
פיגורע 2. בלאָק דיאַגראַמע פון אַ דריי-באַנק העטעראָגענעאָוס זכּרון סיסטעם מיט אַ רערנ - ליניע בריק 1.4. מאָדיפיצירן די באָאַרדטעסט פּראָגראַם און די האָסט קאָד פֿאַר דיין העטעראָגענעאָוס זכּרון לייזונג
ניצן די boardtest.cl קערן וואָס קומט מיט די Intel FPGA SDK פֿאַר OpenCL Custom Platform Toolkit צו פּרובירן די פאַנגקשאַנאַליטי און פאָרשטעלונג פון דיין Custom Platform.
די באָרדטעסט פּראָגראַם איז אַן OpenCL קערן וואָס אַלאַוז איר צו פּרובירן די באַנדווידט פון באַלעבאָס צו מיטל, זיקאָרן באַנדווידט און אַלגעמיין פאַנגקשאַנאַליטי פון דיין מנהג פּלאַטפאָרמע.
- גיין צו די /board/ custom_platform_toolkit/tests/boardtest Directory.
- עפענען די boardtest.cl file אין אַ טעקסט רעדאַקטאָר און באַשטימען אַ באַפער אָרט צו יעדער גלאבאלע זכּרון אַרגומענט.
פֿאַר עקסampלאַ:
__קערנעל פּאָסל
mem_stream (__global__attribute__((buffer_location(“DDR”))) uint *src, __global __attribute__((buffer_location(“QDR”))) uint *dst, uint arg, uint arg2)
דאָ, uint *src איז אַסיינד צו DDR זכּרון, און uint *dst איז אַסיינד צו QDR זכּרון. די board_spec.xml file ספּעציפיצירט די קעראַקטעריסטיקס פון ביידע זכּרון סיסטעמען. - צו לעווערידזש דיין כעטעראַדזשיניאַס זכּרון לייזונג אין דיין OpenCL סיסטעם, מאָדיפיצירן דיין באַלעבאָס קאָד דורך אַדינג די CL_MEM_HETEROGENEOUS_INTELFPGA פאָן צו דיין clCreateBuffer רופן.
פֿאַר עקסampלאַ:
ddatain = clCreateBuffer(קאָנטעקסט, CL_MEM_READ_WRITE | מעמפלאַגס
CL_MEM_HETEROGENEOUS_INTELFPGA, גרייס פון (אַנסייגנייטיד) * וועקטאָר גרייס, NULL, & סטאַטוס);
ינטעל רעקאַמענדז שטארק אַז איר שטעלן די באַפער אָרט ווי אַ קערן אַרגומענט איידער איר שרייַבן דעם באַפער. ווען איר נוצן אַ איין גלאבאלע זכּרון, איר קענען שרייַבן די באַפערז איידער אָדער נאָך אַסיינינג זיי צו אַ קערן אַרגומענט. אין כעטעראַדזשיניאַס זכּרון סיסטעמען, דער באַלעבאָס שטעלט די באַפער אָרט איידער שרייבן די באַפער. אין אנדערע ווערטער, דער באַלעבאָס וועט רופן די clSetKernelArgument פונקציע איידער רופן די clEnqueueWriteBuffer פונקציע.
אין דיין באַלעבאָס קאָד, רופן די clCreateBuffer, clSetKernelArg און clEnqueueWriteBuffer קאַללס אין די פאלגענדע סדר:
ddatain = clCreateBuffer(קאָנטעקסט, CL_MEM_READ_WRITE | מעמפלאַגס |
CL_MEM_HETEROGENEOUS_INTELFPGA, גרייס פון (אַנסייגנייטיד) * וועקטאָר גרייס, NULL, & סטאַטוס);
... סטאַטוס = clSetKernelArg (קערנעל [ק], 0, גרייס פון (קל_מעם), (פּאָסל *) & דאַטאַיין);
... סטאַטוס = clEnqueueWriteBuffer (ריי, דדאַטאַין, CL_FALSE, 0, גרייס פון (אַנסייגנייטיד) * וועקטאָר גרייס, הדאַטאַין, 0, NULL, NULL);
די ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file גיט אַ ענלעך סדר פון די פֿונקציע קאַללס. - נאָך איר מאָדיפיצירן די boardtest.cl file און דער באַלעבאָס קאָד, צונויפנעמען די באַלעבאָס און קערן קאָד און באַשטעטיקן זייער פאַנגקשאַנאַליטי.
ווען איר קאַמפּיילינג דיין קערן קאָד, איר מוזן דיסייבאַל פּלאַצן ינטערליווינג פון אַלע זכּרון סיסטעמען דורך אַרייַנגערעכנט די -no-interleaving אָפּציע אין די aoc באַפֿעל.
פֿאַרבונדענע אינפֿאָרמאַציע
דיסייבלינג פּלאַצן-ינטערלעאַווינג פון גלאבאלע זכּרון (-ניט-ינטערלעאַווינג )
1.5. באַשטעטיקן די פאַנגקשאַנאַליטי פון דיין העטעראָגענעאָוס זכּרון סיסטעם
צו ענשור אַז די כעטעראַדזשיניאַס זכּרון סיסטעם פאַנגקשאַנז רעכט, ומקערן די CL_CONTEXT_COMPILER_MODE_INTELFPGA פאָן אין דיין באַלעבאָס קאָד.
אין OpenCL סיסטעמען מיט כאָומאַדזשיניאַס זכּרון, איר האָבן צו שטעלן די CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 פאָן אין דיין באַלעבאָס קאָד צו דיסייבאַל די לייענען פון די .aocx. file און די ריפּראָגראַממינג פון די FPGA. באַשטעטיקן די CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 פאָן איז נוציק ווען ינסטאַנטיאַטינג דיין ברעט צו באַשטעטיקן די פאַנגקשאַנאַליטי פון דיין מנהג פּלאַטפאָרם אָן דיזיינינג די פלאָרפּלאַן און ספּעציפיצירן די LogicLock ™ מקומות.
מיט כעטעראַדזשיניאַס זכּרון סיסטעמען, די רונטימע סוויווע מוזן לייענען די באַפער לאָוקיישאַנז פון יעדער באַפער, דיסקרייבד אין די .aocx. file, צו באַשטעטיקן די פאַנגקשאַנאַליטי פון די זכּרון סיסטעמען. אָבער, איר זאל וועלן צו באַשטעטיקן די פאַנגקשאַנאַליטי פון דיין קאַסטאַם פּלאַטפאָרמע אָן ימפּלאַמענינג די לעצט פֿעיִקייטן פון די ברעט פּלאַן, אַזאַ ווי דיזיינינג די פלאָרפּלאַן און ספּעציפיצירן די LogicLock מקומות.
- באַשטעטיקן אַז די CL_CONTEXT_COMPILER_MODE_INTELFPGA פאָן איז נישט באַשטימט אין דיין באַלעבאָס קאָד.
- בלעטער צו די ברעט / /source/host/mmd וועגווייַזער פון דיין מנהג פּלאַטפאָרמע.
- עפֿענען די acl_pcie_device.cpp זכּרון-מאַפּט מיטל (MMD) file אין אַ טעקסט רעדאַקטאָר.
- מאָדיפיצירן די רעפּראָגראַם פֿונקציע אין די acl_pcie_device.cpp file דורך אַדינג אַ צוריקקער 0; שורה, ווי געוויזן אונטן:
int ACL_PCIE_DEVICE :: רעפּראָגראַם (פּאָסל * דאַטן, גרייס_ט דאַטן_ גרייס)
{
צוריקקומען 0;
// יבערנעמען דורכפאַל
int reprogram_failed = 1;
// יבערנעמען קיין רבף אָדער האַש אין fpga.bin
int rbf_or_hash_not_provided = 1;
// יבערנעמען די באַזע און אַרייַנפיר רעוויזיע האַשעס טאָן ניט גלייַכן
int hash_mismatch = 1;
…
} - רעקאָמפּילע די acl_pcie_device.cpp file.
- באַשטעטיקן אַז די CL_CONTEXT_COMPILER_MODE_INTELFPGA פאָן איז נישט באַשטימט.
אכטונג: נאָך איר לייגן צוריקקומען 0; צו די רעפּראָגראַם פֿונקציע און רעקאָמפּייל די MMD file, די רונטימע סוויווע וועט לייענען די .aocx file און באַשטימען די באַפער לאָוקיישאַנז אָבער וועט נישט ריפּראָוגראַם די FPGA. איר מוזן מאַניואַלי גלייַכן די פפּגאַ בילד מיט די .אַאָקקס file. צו פאַרקערט דעם נאַטור, אַראָפּנעמען צוריקקומען 0; פֿון די רעפּראָגראַם פֿונקציע און רעקאָמפּייל די MMD file.
1.6. דאָקומענט רעוויזיע געשיכטע
טאָג | ווערסיע | ענדערונגען |
דעצעמבער-17 | 2017.12.01 | • ריבראַנדיד CL_MEM_HETEROGENEOUS_ALTERA צו CL_MEM_HETEROGENEOUS_INTELFPGA. |
דעצעמבער-16 | 2016.12.13 | • ריבראַנדיד CL_CONTEXT_COMPILER_MODE_ALTERA צו CL_CONTEXT_COMPILER_MODE_INTELFPGA. |
קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען אין Intel® FPGA SDK פֿאַר OpenCL
מנהג פּלאַטפאָרמס
שיקן באַמערקונגען
אָנליין ווערסיע
שיקן באַמערקונגען
שייַן: 683654
ווערסיע: 2016.12.13
דאָקומענטן / רעסאָורסעס
![]() |
ינטעל קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען אין FPGA SDK פֿאַר OpenCL מנהג פּלאַטפאָרמס [pdf] אינסטרוקציעס קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען אין FPGA SDK פֿאַר OpenCL מנהג פּלאַטפאָרמס, קריייטינג העטעראָגענעאָוס זכּרון סיסטעמען, FPGA SDK פֿאַר OpenCL מנהג פּלאַטפאָרמס |