ಓಪನ್ಸಿಎಲ್ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗಾಗಿ ಎಫ್ಪಿಜಿಎ ಎಸ್ಡಿಕೆಯಲ್ಲಿ ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು
ಸೂಚನೆಗಳು
OpenCL ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗಾಗಿ Intel® FPGA SDK ನಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು
ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿಯ ಅನುಷ್ಠಾನವು ಹೆಚ್ಚು ಬಾಹ್ಯ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ (EMIF) ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಮತ್ತು ದೊಡ್ಡ ಮತ್ತು ವೇಗವಾದ ಮೆಮೊರಿ ಪ್ರವೇಶಗಳಿಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಆಪ್ಟಿಮೈಸ್ಡ್ ಜೊತೆಗೆ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಪ್ರವೇಶದ ಸಂಯೋಜನೆ
OpenCL ™(1)ಕರ್ನಲ್ ನಿಮ್ಮ OpenCL ಸಿಸ್ಟಮ್ಗೆ ಗಮನಾರ್ಹವಾದ ಕಾರ್ಯಕ್ಷಮತೆ ಸುಧಾರಣೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
ಈ ಅಪ್ಲಿಕೇಶನ್ ಟಿಪ್ಪಣಿ OpenCL(2) ಗಾಗಿ Intel® FPGA SDK ನೊಂದಿಗೆ ಬಳಸಲು ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವ ಮಾರ್ಗದರ್ಶನವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇಂಟೆಲ್ ನೀವು ಅನುಭವಿ FPGA ಡಿಸೈನರ್ ಎಂದು ಊಹಿಸುತ್ತದೆ, ಅವರು ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುತ್ತಿದ್ದಾರೆ.
ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು, ಕೆಳಗೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ OpenCL ಡಾಕ್ಯುಮೆಂಟ್ಗಳಿಗಾಗಿ Intel FPGA SDK ಯೊಂದಿಗೆ ನೀವೇ ಪರಿಚಿತರಾಗಿರಿ.
ಸಂಬಂಧಿತ ಮಾಹಿತಿ
- OpenCL ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಗೈಡ್ಗಾಗಿ Intel FPGA SDK
- OpenCL ಅತ್ಯುತ್ತಮ ಅಭ್ಯಾಸಗಳ ಮಾರ್ಗದರ್ಶಿಗಾಗಿ Intel FPGA SDK
- OpenCL Arria 10 GX FPGA ಡೆವಲಪ್ಮೆಂಟ್ ಕಿಟ್ ರೆಫರೆನ್ಸ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಪೋರ್ಟಿಂಗ್ ಗೈಡ್ಗಾಗಿ Intel FPGA SDK
1.1. FPGA ಬೋರ್ಡ್ ಮತ್ತು EMIF ಇಂಟರ್ಫೇಸ್ಗಳ ಕ್ರಿಯಾತ್ಮಕತೆಯನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ
ಪ್ರತಿ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ನಂತರ ಜಾಗತಿಕ ಮೆಮೊರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ.
- ಪ್ರತಿ ಇಂಟರ್ಫೇಸ್ನ ವೇಗ ಮತ್ತು ಸ್ಥಿರತೆಯನ್ನು ಪರೀಕ್ಷಿಸಬಹುದಾದ ಹಾರ್ಡ್ವೇರ್ ವಿನ್ಯಾಸಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರತಿ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ.
- ಜಾಗತಿಕ ಮೆಮೊರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ತ್ವರಿತಗೊಳಿಸಿ.
- ಉದಾಹರಣೆಗೆampಉದಾಹರಣೆಗೆ, ನೀವು ಮೂರು DDR ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿ ಎಂದು ಮ್ಯಾಪ್ ಮಾಡಬೇಕು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಸ್ವತಂತ್ರವಾಗಿ ಪ್ರತಿ DDR ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ OpenCL ಸ್ಟಾಕ್ನ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಿ.
OpenCL ಮತ್ತು OpenCL ಲೋಗೋ ಕ್ರೋನೋಸ್ ಗ್ರೂಪ್ ™ ಅನುಮತಿಯಿಂದ ಬಳಸಲಾಗುವ Apple Inc. ನ ಟ್ರೇಡ್ಮಾರ್ಕ್ಗಳಾಗಿವೆ. - OpenCL ಗಾಗಿ Intel FPGA SDK ಪ್ರಕಟಿತ ಖ್ರೋನೋಸ್ ಸ್ಪೆಸಿಫಿಕೇಶನ್ ಅನ್ನು ಆಧರಿಸಿದೆ ಮತ್ತು ಕ್ರೋನೋಸ್ ಕನ್ಫಾರ್ಮೆನ್ಸ್ ಟೆಸ್ಟಿಂಗ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಅಂಗೀಕರಿಸಿದೆ. ಪ್ರಸ್ತುತ ಅನುಸರಣೆ ಸ್ಥಿತಿಯನ್ನು ಇಲ್ಲಿ ಕಾಣಬಹುದು www.khronos.org/conformance.
- ಉದಾಹರಣೆಗೆampಉದಾಹರಣೆಗೆ, ನೀವು ಮೂರು DDR ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಅವುಗಳಲ್ಲಿ ಒಂದನ್ನು ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿ ಎಂದು ಮ್ಯಾಪ್ ಮಾಡಬೇಕು. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಸ್ವತಂತ್ರವಾಗಿ ಪ್ರತಿ DDR ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ OpenCL ಸ್ಟಾಕ್ನ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಿ.
ಇಂಟೆಲ್ ಕಾರ್ಪೊರೇಷನ್. ಎಲ್ಲ ಹಕ್ಕುಗಳನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿದೆ. ಇಂಟೆಲ್, ಇಂಟೆಲ್ ಲೋಗೋ ಮತ್ತು ಇತರ ಇಂಟೆಲ್ ಗುರುತುಗಳು ಇಂಟೆಲ್ ಕಾರ್ಪೊರೇಷನ್ ಅಥವಾ ಅದರ ಅಂಗಸಂಸ್ಥೆಗಳ ಟ್ರೇಡ್ಮಾರ್ಕ್ಗಳಾಗಿವೆ. ಇಂಟೆಲ್ ತನ್ನ ಎಫ್ಪಿಜಿಎ ಮತ್ತು ಸೆಮಿಕಂಡಕ್ಟರ್ ಉತ್ಪನ್ನಗಳ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಇಂಟೆಲ್ನ ಪ್ರಮಾಣಿತ ಖಾತರಿಗೆ ಅನುಗುಣವಾಗಿ ಪ್ರಸ್ತುತ ವಿಶೇಷಣಗಳಿಗೆ ಖಾತರಿಪಡಿಸುತ್ತದೆ, ಆದರೆ ಯಾವುದೇ ಸೂಚನೆಯಿಲ್ಲದೆ ಯಾವುದೇ ಉತ್ಪನ್ನಗಳು ಮತ್ತು ಸೇವೆಗಳಿಗೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡುವ ಹಕ್ಕನ್ನು ಕಾಯ್ದಿರಿಸಿದೆ. ಇಂಟೆಲ್ ಲಿಖಿತವಾಗಿ ಒಪ್ಪಿಗೆ ಸೂಚಿಸಿರುವುದನ್ನು ಹೊರತುಪಡಿಸಿ ಇಲ್ಲಿ ವಿವರಿಸಿದ ಯಾವುದೇ ಮಾಹಿತಿ, ಉತ್ಪನ್ನ ಅಥವಾ ಸೇವೆಯ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಬಳಕೆಯಿಂದ ಉಂಟಾಗುವ ಯಾವುದೇ ಜವಾಬ್ದಾರಿ ಅಥವಾ ಹೊಣೆಗಾರಿಕೆಯನ್ನು Intel ಊಹಿಸುವುದಿಲ್ಲ. ಇಂಟೆಲ್ ಗ್ರಾಹಕರು ಯಾವುದೇ ಪ್ರಕಟಿತ ಮಾಹಿತಿಯನ್ನು ಅವಲಂಬಿಸುವ ಮೊದಲು ಮತ್ತು ಉತ್ಪನ್ನಗಳು ಅಥವಾ ಸೇವೆಗಳಿಗೆ ಆರ್ಡರ್ ಮಾಡುವ ಮೊದಲು ಸಾಧನದ ವಿಶೇಷಣಗಳ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಯನ್ನು ಪಡೆದುಕೊಳ್ಳಲು ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ. *ಇತರ ಹೆಸರುಗಳು ಮತ್ತು ಬ್ರ್ಯಾಂಡ್ಗಳನ್ನು ಇತರರ ಆಸ್ತಿ ಎಂದು ಕ್ಲೈಮ್ ಮಾಡಬಹುದು.
ISO 9001:2015 ನೋಂದಾಯಿಸಲಾಗಿದೆ
ಪರ್ಯಾಯವಾಗಿ, ನೀವು ಎರಡು ಡಿಡಿಆರ್ ಇಂಟರ್ಫೇಸ್ಗಳು ಮತ್ತು ಒಂದು ಕ್ವಾಡ್ ಡೇಟಾ ರೇಟ್ (ಕ್ಯೂಡಿಆರ್) ಇಂಟರ್ಫೇಸ್ ಹೊಂದಿದ್ದರೆ, ಎರಡು ಡಿಡಿಆರ್ ಇಂಟರ್ಫೇಸ್ಗಳ ಓಪನ್ಸಿಎಲ್ ಸ್ಟಾಕ್ ಮತ್ತು ಕ್ಯೂಡಿಆರ್ ಇಂಟರ್ಫೇಸ್ನ ಕಾರ್ಯವನ್ನು ಸ್ವತಂತ್ರವಾಗಿ ಪರಿಶೀಲಿಸಿ.
ನಿಮ್ಮ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಪರೀಕ್ಷಿಸಲು ನೀವು PCI Express® – (PCIe® -) ಅಥವಾ EMIF-ವಿಶೇಷ ವಿನ್ಯಾಸಗಳನ್ನು ಬಳಸಬೇಕೆಂದು Intel ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ. ಪ್ರತಿ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಕ್ರಿಯಾತ್ಮಕವಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ OpenCL ವಿನ್ಯಾಸವು ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ಗಳ ಉಪವಿಭಾಗದೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ನೀವು ಪರಿಶೀಲಿಸಿದ ನಂತರ, ಮುಂದುವರಿಯಿರಿ
ಸಂಪೂರ್ಣ ಕ್ರಿಯಾತ್ಮಕ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಯನ್ನು ರಚಿಸಲು.
1.2. board_spec.xml ಅನ್ನು ಮಾರ್ಪಡಿಸಲಾಗುತ್ತಿದೆ File
board_spec.xml ಅನ್ನು ಮಾರ್ಪಡಿಸಿ file OpenCL ಕರ್ನಲ್ಗಳಿಗೆ ಲಭ್ಯವಿರುವ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಗಳ ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು.
ಕರ್ನಲ್ ಸಂಕಲನದ ಸಮಯದಲ್ಲಿ, OpenCL ಆಫ್ಲೈನ್ ಕಂಪೈಲರ್ಗಾಗಿ Intel FPGA SDK ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಬಫರ್ ಸ್ಥಳ ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ಆಧರಿಸಿ ಮೆಮೊರಿಗೆ ಕರ್ನಲ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ನಿಯೋಜಿಸುತ್ತದೆ.
1. board_spec.xml ಗೆ ಬ್ರೌಸ್ ಮಾಡಿ file ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಹಾರ್ಡ್ವೇರ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ.
2. board_spec.xml ತೆರೆಯಿರಿ file ಪಠ್ಯ ಸಂಪಾದಕದಲ್ಲಿ ಮತ್ತು ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ XML ಅನ್ನು ಮಾರ್ಪಡಿಸಿ.
ಉದಾಹರಣೆಗೆampಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಹಾರ್ಡ್ವೇರ್ ಸಿಸ್ಟಮ್ ಎರಡು ಡಿಡಿಆರ್ ಮೆಮೊರಿಗಳನ್ನು ಡೀಫಾಲ್ಟ್ ಗ್ಲೋಬಲ್ಮೆಮೊರಿ ಮತ್ತು ಎರಡು ಕ್ಯೂಡಿಆರ್ ಬ್ಯಾಂಕ್ಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ನೀವು ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿಯಂತೆ ಮಾದರಿಯನ್ನು ಹೊಂದಿದ್ದರೆ, ಬೋರ್ಡ್_ಸ್ಪೆಕ್.xml ನ ಮೆಮೊರಿ ವಿಭಾಗಗಳನ್ನು ಮಾರ್ಪಡಿಸಿ file ಕೆಳಗಿನವುಗಳನ್ನು ಹೋಲುವಂತೆ:
1.3. Qsys ನಲ್ಲಿ ಬಹು ಮೆಮೊರಿ ವಿಭಾಜಕಗಳನ್ನು ಹೊಂದಿಸಲಾಗುತ್ತಿದೆ
ಪ್ರಸ್ತುತ, Qsys ವಿನ್ಯಾಸದಲ್ಲಿರುವ OpenCL ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ ವಿಭಾಜಕವು ನಾನ್-ಪವರ್-ಆಫ್-2 ಸಂಖ್ಯೆಯ ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ, ಇದು ವಿಶಿಷ್ಟವಾದ ಕಾನ್ಫಿಗರೇಶನ್ಗಳಿಗೆ ಮಿತಿಯಾಗಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಪವರ್-ಆಫ್-2 ಸಂಖ್ಯೆಯ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ಗಳು ಅಗತ್ಯವಿರುವ ಸನ್ನಿವೇಶಗಳಿವೆ. ನಾನ್-ಪವರ್-ಆಫ್-2 ಸಂಖ್ಯೆಯ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಸರಿಹೊಂದಿಸಲು, ಬಹುವಿಧದ ಓಪನ್ಸಿಎಲ್ ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ ಡಿವೈಡರ್ಗಳನ್ನು ಬಳಸಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ನಾನ್-ಪವರ್-ಆಫ್-2 ಸಂಖ್ಯೆಯ ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ಗಳೊಂದಿಗೆ ರಚಿಸಲು. ನೀವು ನಿಜವಾದ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಯನ್ನು ಹೊಂದಿರುವಾಗ ನೀವು ಬಹು OpenCL ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ ವಿಭಾಜಕಗಳನ್ನು ರಚಿಸಬೇಕು. ಒಂದು DDR ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಒಂದು QDR ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ನೊಂದಿಗೆ ಸಿಸ್ಟಮ್ ಅನ್ನು ಪರಿಗಣಿಸಿ. ಎರಡು ಬ್ಯಾಂಕ್ಗಳು ವಿಭಿನ್ನ ಮೆಮೊರಿ ಟೋಪೋಲಾಜಿಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ನೀವು ಅವುಗಳನ್ನು ಒಂದೇ ಜಾಗತಿಕ ಮೆಮೊರಿ ಅಡಿಯಲ್ಲಿ ಸಂಯೋಜಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಚಿತ್ರ 1. ಮೂರು-ಬ್ಯಾಂಕ್ ಹೆಟೆರೊಜೆನಿಯಸ್ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ನ ಬ್ಲಾಕ್ ರೇಖಾಚಿತ್ರ
ಈ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಯು ಎರಡು ಡಿಡಿಆರ್ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಮತ್ತು ಒಂದು ಕ್ಯೂಡಿಆರ್ ಮೆಮೊರಿ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಒಳಗೊಂಡಿದೆ.ನೀವು Intel Quartus® Prime ಸಾಫ್ಟ್ವೇರ್ನ ಆವೃತ್ತಿ 16.0, 16.0.1, ಅಥವಾ 16.0.2 ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಮತ್ತು OpenCL ಗಾಗಿ Altera SDK ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, OpenCL ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ ಡಿವೈಡರ್ ವಿಳಾಸದ ಗಡಿಗಳಲ್ಲಿ ಮೆಮೊರಿ ಸ್ಫೋಟಗಳನ್ನು ತಪ್ಪಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ. ತಿಳಿದಿರುವ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು, 1 ರ ಬರ್ಸ್ಟ್ ಗಾತ್ರದೊಂದಿಗೆ ಪೈಪ್ಲೈನ್ ಸೇತುವೆಯನ್ನು ಸೇರಿಸಿ ಮತ್ತು ಅದರ Avalon ®Memory-Mapped (Avalon-MM) ಮಾಸ್ಟರ್ ಅನ್ನು OpenCL ಮೆಮೊರಿ ಬ್ಯಾಂಕ್ ಡಿವೈಡರ್ನ ಸ್ಲೇವ್ ಪೋರ್ಟ್ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ.
ಗಮನಿಸಿ:
ಈ ತಿಳಿದಿರುವ ಸಮಸ್ಯೆಯನ್ನು Intel Quartus Prime ಸಾಫ್ಟ್ವೇರ್ ಮತ್ತು OpenCL ಆವೃತ್ತಿ 16.1 ಗಾಗಿ Intel FPGA SDK ನಲ್ಲಿ ಪರಿಹರಿಸಲಾಗಿದೆ.
ಚಿತ್ರ 2. ಪೈಪ್ಲೈನ್ ಸೇತುವೆಯೊಂದಿಗೆ ಮೂರು-ಬ್ಯಾಂಕ್ ಹೆಟೆರೊಜೆನಿಯಸ್ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ನ ಬ್ಲಾಕ್ ರೇಖಾಚಿತ್ರ 1.4 ನಿಮ್ಮ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಪರಿಹಾರಕ್ಕಾಗಿ ಬೋರ್ಡ್ಟೆಸ್ಟ್ ಪ್ರೋಗ್ರಾಂ ಮತ್ತು ಹೋಸ್ಟ್ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸುವುದು
ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಕ್ರಿಯಾತ್ಮಕತೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಪರೀಕ್ಷಿಸಲು OpenCL ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಟೂಲ್ಕಿಟ್ಗಾಗಿ Intel FPGA SDK ಜೊತೆಗೆ ಬರುವ boardtest.cl ಕರ್ನಲ್ ಅನ್ನು ಬಳಸಿ.
ಬೋರ್ಡ್ಟೆಸ್ಟ್ ಪ್ರೋಗ್ರಾಂ ಓಪನ್ಸಿಎಲ್ ಕರ್ನಲ್ ಆಗಿದ್ದು ಅದು ಹೋಸ್ಟ್-ಟು-ಡಿವೈಸ್ ಬ್ಯಾಂಡ್ವಿಡ್ತ್, ಮೆಮೊರಿ ಬ್ಯಾಂಡ್ವಿಡ್ತ್ ಮತ್ತು ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಸಾಮಾನ್ಯ ಕಾರ್ಯವನ್ನು ಪರೀಕ್ಷಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.
- ಗೆ ಬ್ರೌಸ್ ಮಾಡಿ /board/ custom_platform_toolkit/tests/boardtest ಡೈರೆಕ್ಟರಿ.
- 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 ಮೆಮೊರಿಗೆ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ. ಬೋರ್ಡ್_ಸ್ಪೆಕ್.xml file ಎರಡೂ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಗಳ ಗುಣಲಕ್ಷಣಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. - ನಿಮ್ಮ OpenCL ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ನಿಮ್ಮ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಪರಿಹಾರವನ್ನು ಹತೋಟಿಗೆ ತರಲು, ನಿಮ್ಮ clCreateBuffer ಕರೆಗೆ CL_MEM_HETEROGENEOUS_INTELFPGA ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಹೋಸ್ಟ್ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಿ.
ಉದಾಹರಣೆಗೆampಲೆ:
ddatain = clCreateBuffer(ಸಂದರ್ಭ, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, ಗಾತ್ರದ (ಸಹಿ ಮಾಡದ) * ವೆಕ್ಟರ್ ಗಾತ್ರ, ಶೂನ್ಯ, & ಸ್ಥಿತಿ);
ಬಫರ್ ಬರೆಯುವ ಮೊದಲು ನೀವು ಬಫರ್ ಸ್ಥಳವನ್ನು ಕರ್ನಲ್ ಆರ್ಗ್ಯುಮೆಂಟ್ ಆಗಿ ಹೊಂದಿಸಬೇಕೆಂದು ಇಂಟೆಲ್ ಬಲವಾಗಿ ಶಿಫಾರಸು ಮಾಡುತ್ತದೆ. ಒಂದೇ ಜಾಗತಿಕ ಮೆಮೊರಿಯನ್ನು ಬಳಸುವಾಗ, ನೀವು ಬಫರ್ಗಳನ್ನು ಕರ್ನಲ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗೆ ನಿಯೋಜಿಸುವ ಮೊದಲು ಅಥವಾ ನಂತರ ಬರೆಯಬಹುದು. ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, ಹೋಸ್ಟ್ ಬಫರ್ ಅನ್ನು ಬರೆಯುವ ಮೊದಲು ಬಫರ್ ಸ್ಥಳವನ್ನು ಹೊಂದಿಸುತ್ತದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, clEnqueueWriteBuffer ಕಾರ್ಯವನ್ನು ಕರೆಯುವ ಮೊದಲು ಹೋಸ್ಟ್ clSetKernelArgument ಕಾರ್ಯವನ್ನು ಕರೆಯುತ್ತದೆ.
ನಿಮ್ಮ ಹೋಸ್ಟ್ ಕೋಡ್ನಲ್ಲಿ, ಈ ಕೆಳಗಿನ ಕ್ರಮದಲ್ಲಿ clCreateBuffer, clSetKernelArg ಮತ್ತು clEnqueueWriteBuffer ಕರೆಗಳನ್ನು ಆಹ್ವಾನಿಸಿ:
ddatain = clCreateBuffer(ಸಂದರ್ಭ, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, ಗಾತ್ರದ (ಸಹಿ ಮಾಡದ) * ವೆಕ್ಟರ್ ಗಾತ್ರ, ಶೂನ್ಯ, & ಸ್ಥಿತಿ);
… ಸ್ಥಿತಿ = clSetKernelArg(ಕರ್ನಲ್[k], 0, sizeof(cl_mem), (ಶೂನ್ಯ*)&ddatain);
… ಸ್ಥಿತಿ = cEnqueueWriteBuffer(ಕ್ಯೂ, ddatain, CL_FALSE, 0, sizeof(ಸಹಿ ಮಾಡದ) * vectorSize,hdatain, 0, NULL, NULL);
ALTERAOCLSDKROOT/board/custom_platform_toolkit/tests/boardtest/host/memspeed.cpp file ಈ ಫಂಕ್ಷನ್ ಕರೆಗಳ ಇದೇ ಕ್ರಮವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತದೆ. - ನೀವು boardtest.cl ಅನ್ನು ಮಾರ್ಪಡಿಸಿದ ನಂತರ file ಮತ್ತು ಹೋಸ್ಟ್ ಕೋಡ್, ಹೋಸ್ಟ್ ಮತ್ತು ಕರ್ನಲ್ ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಿ ಮತ್ತು ಅವುಗಳ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಿ.
ನಿಮ್ಮ ಕರ್ನಲ್ ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುವಾಗ, -ನೋ-ಇಂಟರ್ಲೀವಿಂಗ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನೀವು ಎಲ್ಲಾ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳ ಬರ್ಸ್ಟ್-ಇಂಟರ್ಲೀವಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬೇಕು aoc ಆಜ್ಞೆಯಲ್ಲಿನ ಆಯ್ಕೆ.
ಸಂಬಂಧಿತ ಮಾಹಿತಿ
ಗ್ಲೋಬಲ್ ಮೆಮೊರಿಯ ಬರ್ಸ್ಟ್-ಇಂಟರ್ಲೀವಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು (–ಇಂಟರ್ಲೀವಿಂಗ್ ಇಲ್ಲ )
1.5 ನಿಮ್ಮ ವೈವಿಧ್ಯಮಯ ಸ್ಮರಣೆಯ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ ವ್ಯವಸ್ಥೆ
ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು, ನಿಮ್ಮ ಹೋಸ್ಟ್ ಕೋಡ್ನಲ್ಲಿ CL_CONTEXT_COMPILER_MODE_INTELFPGA ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಬೇಡಿ.
ಏಕರೂಪದ ಮೆಮೊರಿಯೊಂದಿಗೆ OpenCL ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, .aocx ನ ಓದುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ನಿಮ್ಮ ಹೋಸ್ಟ್ ಕೋಡ್ನಲ್ಲಿ CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಲು ನೀವು ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿರಬೇಕು file ಮತ್ತು FPGA ಯ ರಿಪ್ರೊಗ್ರಾಮಿಂಗ್. CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸುವುದು ನಿಮ್ಮ ಬೋರ್ಡ್ ಅನ್ನು ಸ್ಥಾಪಿಸುವಾಗ ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಕ್ರಿಯಾತ್ಮಕತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಫ್ಲೋರ್ಪ್ಲಾನ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸದೆ ಮತ್ತು ಲಾಜಿಕ್ಲಾಕ್™ ಪ್ರದೇಶಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು ಉಪಯುಕ್ತವಾಗಿದೆ.
ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ವ್ಯವಸ್ಥೆಗಳೊಂದಿಗೆ, ರನ್ಟೈಮ್ ಪರಿಸರವು ಪ್ರತಿ ಬಫರ್ನ ಬಫರ್ ಸ್ಥಳಗಳನ್ನು ಓದಬೇಕು, ಇದನ್ನು .aocx ನಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ file, ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳ ಕಾರ್ಯವನ್ನು ಪರಿಶೀಲಿಸಲು. ಆದಾಗ್ಯೂ, ಬೋರ್ಡ್ ವಿನ್ಯಾಸದ ಅಂತಿಮ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸದೆಯೇ ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ ಕಾರ್ಯವನ್ನು ನೀವು ಪರಿಶೀಲಿಸಲು ಬಯಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಫ್ಲೋರ್ಪ್ಲಾನ್ ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸುವುದು ಮತ್ತು ಲಾಜಿಕ್ಲಾಕ್ ಪ್ರದೇಶಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದು.
- ನಿಮ್ಮ ಹೋಸ್ಟ್ ಕೋಡ್ನಲ್ಲಿ CL_CONTEXT_COMPILER_MODE_INTELFPGA ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಿ.
- ಬೋರ್ಡ್ಗೆ ಬ್ರೌಸ್ ಮಾಡಿ/ ನಿಮ್ಮ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ನ /source/host/mmd ಡೈರೆಕ್ಟರಿ.
- acl_pcie_device.cpp ಮೆಮೊರಿ-ಮ್ಯಾಪ್ ಮಾಡಿದ ಸಾಧನವನ್ನು ತೆರೆಯಿರಿ (MMD) file ಪಠ್ಯ ಸಂಪಾದಕದಲ್ಲಿ.
- acl_pcie_device.cpp ನಲ್ಲಿ ರಿಪ್ರೋಗ್ರಾಮ್ ಕಾರ್ಯವನ್ನು ಮಾರ್ಪಡಿಸಿ file ರಿಟರ್ನ್ 0 ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ; ಸಾಲು, ಕೆಳಗೆ ತೋರಿಸಿರುವಂತೆ:
int ACL_PCIE_DEVICE::reprogram(ಅನೂರ್ಜಿತ *ಡೇಟಾ, size_t ಡೇಟಾ_ಗಾತ್ರ)
{
ಹಿಂತಿರುಗಿ 0;
// ವೈಫಲ್ಯವನ್ನು ಊಹಿಸಿ
int reprogram_failed = 1;
// fpga.bin ನಲ್ಲಿ ಯಾವುದೇ rbf ಅಥವಾ ಹ್ಯಾಶ್ ಇಲ್ಲ ಎಂದು ಊಹಿಸಿ
ಇಂಟ್ rbf_or_hash_not_provided = 1;
// ಬೇಸ್ ಮತ್ತು ಆಮದು ಪರಿಷ್ಕರಣೆ ಹ್ಯಾಶ್ಗಳು ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ ಎಂದು ಊಹಿಸಿ
ಇಂಟ್ ಹ್ಯಾಶ್_ಮಿಸ್ಮ್ಯಾಚ್ = 1;
…
} - acl_pcie_device.cpp ಅನ್ನು ಮರುಕಂಪೈಲ್ ಮಾಡಿ file.
- CL_CONTEXT_COMPILER_MODE_INTELFPGA ಫ್ಲ್ಯಾಗ್ ಹೊಂದಿಸದೆ ಉಳಿದಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.
ಗಮನ: ನೀವು ರಿಟರ್ನ್ 0 ಅನ್ನು ಸೇರಿಸಿದ ನಂತರ; ರಿಪ್ರೊಗ್ರಾಮ್ ಕಾರ್ಯಕ್ಕೆ ಮತ್ತು MMD ಅನ್ನು ಮರುಸಂಕಲಿಸಿ file, ರನ್ಟೈಮ್ ಪರಿಸರವು .aocx ಅನ್ನು ಓದುತ್ತದೆ file ಮತ್ತು ಬಫರ್ ಸ್ಥಳಗಳನ್ನು ನಿಯೋಜಿಸಿ ಆದರೆ FPGA ಅನ್ನು ರಿಪ್ರೋಗ್ರಾಮ್ ಮಾಡುವುದಿಲ್ಲ. ನೀವು .aocx ನೊಂದಿಗೆ 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 ಗೆ ಮರುಬ್ರಾಂಡ್ ಮಾಡಲಾಗಿದೆ. |
OpenCL ಗಾಗಿ Intel® FPGA SDK ನಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು
ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳು
ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ
ಆನ್ಲೈನ್ ಆವೃತ್ತಿ
ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕಳುಹಿಸಿ
ID: 683654
ಆವೃತ್ತಿ: 2016.12.13
ದಾಖಲೆಗಳು / ಸಂಪನ್ಮೂಲಗಳು
![]() |
ಇಂಟೆಲ್ ಓಪನ್ ಸಿಎಲ್ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗಾಗಿ ಎಫ್ಪಿಜಿಎ ಎಸ್ಡಿಕೆಯಲ್ಲಿ ವೈವಿಧ್ಯಮಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು [ಪಿಡಿಎಫ್] ಸೂಚನೆಗಳು ಓಪನ್ಸಿಎಲ್ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗಾಗಿ ಎಫ್ಪಿಜಿಎ ಎಸ್ಡಿಕೆಯಲ್ಲಿ ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು, ಭಿನ್ನಜಾತಿಯ ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸುವುದು, ಓಪನ್ಸಿಎಲ್ ಕಸ್ಟಮ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗಾಗಿ ಎಫ್ಪಿಜಿಎ ಎಸ್ಡಿಕೆ |