OpenCL ਕਸਟਮ ਪਲੇਟਫਾਰਮਾਂ ਲਈ FPGA SDK ਵਿੱਚ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣਾ
ਹਦਾਇਤਾਂ
OpenCL ਕਸਟਮ ਪਲੇਟਫਾਰਮਾਂ ਲਈ Intel® FPGA SDK ਵਿੱਚ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣਾ
ਇੱਕ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਵਿੱਚ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਵਧੇਰੇ ਬਾਹਰੀ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ (EMIF) ਬੈਂਡਵਿਡਥ ਦੇ ਨਾਲ ਨਾਲ ਵੱਡੀ ਅਤੇ ਤੇਜ਼ ਮੈਮੋਰੀ ਐਕਸੈਸ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਅਨੁਕੂਲਿਤ ਨਾਲ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਪਹੁੰਚ ਦਾ ਸੁਮੇਲ
OpenCL ™(1)ਕਰਨਲ ਤੁਹਾਡੇ OpenCL ਸਿਸਟਮ ਲਈ ਮਹੱਤਵਪੂਰਨ ਕਾਰਗੁਜ਼ਾਰੀ ਸੁਧਾਰਾਂ ਦੇ ਨਤੀਜੇ ਵਜੋਂ ਹੋ ਸਕਦਾ ਹੈ।
ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਨੋਟ OpenCL(2) ਲਈ Intel® FPGA SDK ਨਾਲ ਵਰਤਣ ਲਈ ਇੱਕ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਵਿੱਚ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣ ਲਈ ਮਾਰਗਦਰਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। Intel ਇਹ ਮੰਨਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਇੱਕ ਤਜਰਬੇਕਾਰ FPGA ਡਿਜ਼ਾਈਨਰ ਹੋ ਜੋ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਵਿਕਸਿਤ ਕਰ ਰਿਹਾ ਹੈ ਜਿਸ ਵਿੱਚ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਸ਼ਾਮਲ ਹਨ।
ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਹੇਠਾਂ ਦਿੱਤੇ ਓਪਨਸੀਐਲ ਦਸਤਾਵੇਜ਼ਾਂ ਲਈ ਆਪਣੇ ਆਪ ਨੂੰ Intel FPGA SDK ਨਾਲ ਜਾਣੂ ਕਰੋ।
ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ
- OpenCL ਪ੍ਰੋਗਰਾਮਿੰਗ ਗਾਈਡ ਲਈ Intel FPGA SDK
- ਓਪਨਸੀਐਲ ਸਰਵੋਤਮ ਅਭਿਆਸ ਗਾਈਡ ਲਈ Intel FPGA SDK
- OpenCL Arria 10 GX FPGA ਵਿਕਾਸ ਕਿੱਟ ਸੰਦਰਭ ਪਲੇਟਫਾਰਮ ਪੋਰਟਿੰਗ ਗਾਈਡ ਲਈ Intel FPGA SDK
1.1 FPGA ਬੋਰਡ ਅਤੇ EMIF ਇੰਟਰਫੇਸ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨਾ
ਹਰੇਕ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਦੀ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਪੁਸ਼ਟੀ ਕਰੋ ਅਤੇ ਫਿਰ ਗਲੋਬਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਨੂੰ ਚਾਲੂ ਕਰੋ।
- ਹਾਰਡਵੇਅਰ ਡਿਜ਼ਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹਰੇਕ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ ਜੋ ਹਰੇਕ ਇੰਟਰਫੇਸ ਦੀ ਗਤੀ ਅਤੇ ਸਥਿਰਤਾ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹੈ।
- ਗਲੋਬਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਪਣੇ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਨੂੰ ਸਥਾਪਿਤ ਕਰੋ।
- ਸਾਬਕਾ ਲਈample, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਤਿੰਨ DDR ਇੰਟਰਫੇਸ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਵਜੋਂ ਮੈਪ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਹਰੇਕ DDR ਇੰਟਰਫੇਸ ਨਾਲ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ OpenCL ਸਟੈਕ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।
OpenCL ਅਤੇ OpenCL ਲੋਗੋ Apple Inc. ਦੇ ਟ੍ਰੇਡਮਾਰਕ ਹਨ ਜੋ Khronos Group™ ਦੀ ਇਜਾਜ਼ਤ ਦੁਆਰਾ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। - OpenCL ਲਈ Intel FPGA SDK ਇੱਕ ਪ੍ਰਕਾਸ਼ਿਤ Khronos ਨਿਰਧਾਰਨ 'ਤੇ ਅਧਾਰਤ ਹੈ, ਅਤੇ Khronos Conformance ਟੈਸਟਿੰਗ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਪਾਸ ਕੀਤਾ ਹੈ। ਮੌਜੂਦਾ ਅਨੁਕੂਲਤਾ ਸਥਿਤੀ 'ਤੇ ਲੱਭੀ ਜਾ ਸਕਦੀ ਹੈ www.khronos.org/conformance।
- ਸਾਬਕਾ ਲਈample, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਤਿੰਨ DDR ਇੰਟਰਫੇਸ ਹਨ, ਤਾਂ ਉਹਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਨੂੰ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਵਜੋਂ ਮੈਪ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਹਰੇਕ DDR ਇੰਟਰਫੇਸ ਨਾਲ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ OpenCL ਸਟੈਕ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।
ਇੰਟੇਲ ਕਾਰਪੋਰੇਸ਼ਨ. ਸਾਰੇ ਹੱਕ ਰਾਖਵੇਂ ਹਨ. Intel, Intel ਲੋਗੋ, ਅਤੇ ਹੋਰ Intel ਚਿੰਨ੍ਹ Intel ਕਾਰਪੋਰੇਸ਼ਨ ਜਾਂ ਇਸਦੀਆਂ ਸਹਾਇਕ ਕੰਪਨੀਆਂ ਦੇ ਟ੍ਰੇਡਮਾਰਕ ਹਨ। Intel ਆਪਣੇ FPGA ਅਤੇ ਸੈਮੀਕੰਡਕਟਰ ਉਤਪਾਦਾਂ ਦੇ ਪ੍ਰਦਰਸ਼ਨ ਨੂੰ Intel ਦੀ ਸਟੈਂਡਰਡ ਵਾਰੰਟੀ ਦੇ ਅਨੁਸਾਰ ਮੌਜੂਦਾ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲਈ ਵਾਰੰਟ ਦਿੰਦਾ ਹੈ, ਪਰ ਬਿਨਾਂ ਨੋਟਿਸ ਦੇ ਕਿਸੇ ਵੀ ਸਮੇਂ ਕਿਸੇ ਵੀ ਉਤਪਾਦ ਅਤੇ ਸੇਵਾਵਾਂ ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਕਰਨ ਦਾ ਅਧਿਕਾਰ ਰਾਖਵਾਂ ਰੱਖਦਾ ਹੈ। ਇੰਟੇਲ ਇੱਥੇ ਵਰਣਿਤ ਕਿਸੇ ਵੀ ਜਾਣਕਾਰੀ, ਉਤਪਾਦ, ਜਾਂ ਸੇਵਾ ਦੀ ਅਰਜ਼ੀ ਜਾਂ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੀ ਕੋਈ ਜ਼ਿੰਮੇਵਾਰੀ ਜਾਂ ਜ਼ਿੰਮੇਵਾਰੀ ਨਹੀਂ ਲੈਂਦਾ, ਸਿਵਾਏ ਇੰਟੇਲ ਦੁਆਰਾ ਲਿਖਤੀ ਤੌਰ 'ਤੇ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਸਹਿਮਤ ਹੋਏ। Intel ਗਾਹਕਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਪ੍ਰਕਾਸ਼ਿਤ ਜਾਣਕਾਰੀ 'ਤੇ ਭਰੋਸਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਅਤੇ ਉਤਪਾਦਾਂ ਜਾਂ ਸੇਵਾਵਾਂ ਲਈ ਆਰਡਰ ਦੇਣ ਤੋਂ ਪਹਿਲਾਂ ਡਿਵਾਈਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਨਵੀਨਤਮ ਸੰਸਕਰਣ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਸਲਾਹ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ। *ਹੋਰ ਨਾਵਾਂ ਅਤੇ ਬ੍ਰਾਂਡਾਂ 'ਤੇ ਦੂਜਿਆਂ ਦੀ ਸੰਪਤੀ ਵਜੋਂ ਦਾਅਵਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ISO 9001:2015 ਰਜਿਸਟਰਡ
ਵਿਕਲਪਕ ਤੌਰ 'ਤੇ, ਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਦੋ DDR ਇੰਟਰਫੇਸ ਅਤੇ ਇੱਕ ਕਵਾਡ ਡਾਟਾ ਰੇਟ (QDR) ਇੰਟਰਫੇਸ ਹੈ, ਤਾਂ ਦੋ DDR ਇੰਟਰਫੇਸ ਅਤੇ QDR ਇੰਟਰਫੇਸ ਦੇ ਓਪਨਸੀਐਲ ਸਟੈਕ ਦੀ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਸੁਤੰਤਰ ਤੌਰ 'ਤੇ ਪੁਸ਼ਟੀ ਕਰੋ।
Intel ਸਿਫ਼ਾਰਿਸ਼ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਆਪਣੇ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ PCI Express® – (PCIe® -) ਜਾਂ EMIF-ਨਿਵੇਕਲੇ ਡਿਜ਼ਾਈਨ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਤੁਹਾਡੇ ਦੁਆਰਾ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਤੋਂ ਬਾਅਦ ਕਿ ਹਰੇਕ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਕਾਰਜਸ਼ੀਲ ਹੈ ਅਤੇ ਇਹ ਕਿ ਤੁਹਾਡਾ 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ਲੇ, ਜੇਕਰ ਤੁਹਾਡੇ ਹਾਰਡਵੇਅਰ ਸਿਸਟਮ ਵਿੱਚ ਡਿਫੌਲਟ ਗਲੋਬਲ ਮੈਮੋਰੀ ਦੇ ਤੌਰ 'ਤੇ ਦੋ DDR ਮੈਮੋਰੀ ਅਤੇ ਦੋ QDR ਬੈਂਕ ਹਨ ਜੋ ਤੁਸੀਂ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਦੇ ਰੂਪ ਵਿੱਚ ਮਾਡਲ ਕਰਦੇ ਹੋ, ਤਾਂ board_spec.xml ਦੇ ਮੈਮੋਰੀ ਭਾਗਾਂ ਨੂੰ ਸੋਧੋ। file ਹੇਠ ਦਿੱਤੇ ਸਮਾਨ ਕਰਨ ਲਈ:
1.3 Qsys ਵਿੱਚ ਮਲਟੀਪਲ ਮੈਮੋਰੀ ਡਿਵਾਈਡਰ ਸਥਾਪਤ ਕਰਨਾ
ਵਰਤਮਾਨ ਵਿੱਚ, Qsys ਡਿਜ਼ਾਇਨ ਵਿੱਚ OpenCL ਮੈਮੋਰੀ ਬੈਂਕ ਡਿਵਾਈਡਰ ਮੈਮੋਰੀ ਬੈਂਕਾਂ ਦੇ ਨਾਨ-ਪਾਵਰ-ਆਫ-2 ਨੰਬਰ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਆਮ ਸੰਰਚਨਾਵਾਂ ਲਈ ਸੀਮਾ ਨਹੀਂ ਹੈ। ਹਾਲਾਂਕਿ, ਅਜਿਹੇ ਹਾਲਾਤ ਹਨ ਜਿੱਥੇ ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਦੀ 2 ਨੰਬਰ ਦੀ ਪਾਵਰ-ਆਫ਼-2 ਜ਼ਰੂਰੀ ਹੈ। ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਦੇ ਨਾਨ-ਪਾਵਰ-ਆਫ-2 ਨੰਬਰ ਦੇ ਅਨੁਕੂਲਣ ਲਈ, ਮੈਮੋਰੀ ਬੈਂਕਾਂ ਦੇ ਗੈਰ-ਪਾਵਰ-ਆਫ-XNUMX ਨੰਬਰ ਦੇ ਨਾਲ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣ ਲਈ ਮਲਟੀਪਲ OpenCL ਮੈਮੋਰੀ ਬੈਂਕ ਡਿਵਾਈਡਰ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਜਦੋਂ ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਅਸਲੀ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਹੋਵੇ ਤਾਂ ਤੁਹਾਨੂੰ ਮਲਟੀਪਲ OpenCL ਮੈਮੋਰੀ ਬੈਂਕ ਡਿਵਾਈਡਰ ਬਣਾਉਣੇ ਚਾਹੀਦੇ ਹਨ। ਇੱਕ DDR ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਅਤੇ ਇੱਕ QDR ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਵਾਲੇ ਸਿਸਟਮ 'ਤੇ ਵਿਚਾਰ ਕਰੋ। ਕਿਉਂਕਿ ਦੋ ਬੈਂਕਾਂ ਦੇ ਵੱਖੋ-ਵੱਖਰੇ ਮੈਮੋਰੀ ਟੋਪੋਲੋਜੀ ਹਨ, ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਇੱਕ ਸਿੰਗਲ ਗਲੋਬਲ ਮੈਮੋਰੀ ਦੇ ਤਹਿਤ ਜੋੜ ਨਹੀਂ ਸਕਦੇ ਹੋ।
ਚਿੱਤਰ 1. ਥ੍ਰੀ-ਬੈਂਕ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਦਾ ਬਲਾਕ ਡਾਇਗ੍ਰਾਮ
ਇਸ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਵਿੱਚ ਦੋ DDR ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਅਤੇ ਇੱਕ QDR ਮੈਮੋਰੀ ਇੰਟਰਫੇਸ ਸ਼ਾਮਲ ਹਨ।ਜੇਕਰ ਤੁਸੀਂ OpenCL ਲਈ Intel Quartus® Prime ਸਾਫਟਵੇਅਰ ਅਤੇ Altera SDK ਦਾ ਵਰਜਨ 16.0, 16.0.1, ਜਾਂ 16.0.2 ਵਰਤ ਰਹੇ ਹੋ, ਤਾਂ 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 ਕਰਨਲ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਬੋਰਡਟੈਸਟ ਪ੍ਰੋਗਰਾਮ ਇੱਕ OpenCL ਕਰਨਲ ਹੈ ਜੋ ਤੁਹਾਨੂੰ ਹੋਸਟ-ਟੂ-ਡਿਵਾਈਸ ਬੈਂਡਵਿਡਥ, ਮੈਮੋਰੀ ਬੈਂਡਵਿਡਥ, ਅਤੇ ਤੁਹਾਡੇ ਕਸਟਮ ਪਲੇਟਫਾਰਮ ਦੀ ਆਮ ਕਾਰਜਕੁਸ਼ਲਤਾ ਦੀ ਜਾਂਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
- ਨੂੰ ਬ੍ਰਾਊਜ਼ ਕਰੋ /board/ custom_platform_toolkit/tests/boardtest ਡਾਇਰੈਕਟਰੀ।
- boardtest.cl ਖੋਲ੍ਹੋ file ਇੱਕ ਟੈਕਸਟ ਐਡੀਟਰ ਵਿੱਚ ਅਤੇ ਹਰੇਕ ਗਲੋਬਲ ਮੈਮੋਰੀ ਆਰਗੂਮੈਂਟ ਲਈ ਇੱਕ ਬਫਰ ਟਿਕਾਣਾ ਨਿਰਧਾਰਤ ਕਰੋ।
ਸਾਬਕਾ ਲਈampLe:
__ਕਰਨਲ ਖਾਲੀ
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 ਸਿਸਟਮ ਵਿੱਚ ਆਪਣੇ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਹੱਲ ਦਾ ਲਾਭ ਉਠਾਉਣ ਲਈ, ਆਪਣੀ clCreateBuffer ਕਾਲ ਵਿੱਚ CL_MEM_HETEROGENEOUS_INTELFPGA ਫਲੈਗ ਸ਼ਾਮਲ ਕਰਕੇ ਆਪਣੇ ਹੋਸਟ ਕੋਡ ਨੂੰ ਸੋਧੋ।
ਸਾਬਕਾ ਲਈampLe:
ddatain = clCreateBuffer(ਪ੍ਰਸੰਗ, CL_MEM_READ_WRITE | memflags
CL_MEM_HETEROGENEOUS_INTELFPGA, ਆਕਾਰ ਦਾ(ਅਨ-ਹਸਤਾਖਰਿਤ) * ਵੈਕਟਰ ਆਕਾਰ, NULL, &status);
Intel ਜ਼ੋਰਦਾਰ ਸਿਫਾਰਸ਼ ਕਰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਬਫਰ ਨੂੰ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਕਰਨਲ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਬਫਰ ਟਿਕਾਣਾ ਸੈੱਟ ਕਰੋ। ਇੱਕ ਸਿੰਗਲ ਗਲੋਬਲ ਮੈਮੋਰੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਤੁਸੀਂ ਬਫਰਾਂ ਨੂੰ ਕਰਨਲ ਆਰਗੂਮੈਂਟ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂ ਬਾਅਦ ਵਿੱਚ ਲਿਖ ਸਕਦੇ ਹੋ। ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮਾਂ ਵਿੱਚ, ਹੋਸਟ ਬਫਰ ਨੂੰ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਬਫਰ ਟਿਕਾਣਾ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ। ਦੂਜੇ ਸ਼ਬਦਾਂ ਵਿੱਚ, ਹੋਸਟ clEnqueueWriteBuffer ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ clSetKernelArgument ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰੇਗਾ।
ਆਪਣੇ ਹੋਸਟ ਕੋਡ ਵਿੱਚ, ਹੇਠਾਂ ਦਿੱਤੇ ਕ੍ਰਮ ਵਿੱਚ clCreateBuffer, clSetKernelArg, ਅਤੇ clEnqueueWriteBuffer ਕਾਲਾਂ ਨੂੰ ਬੁਲਾਓ:
ddatain = clCreateBuffer(ਪ੍ਰਸੰਗ, CL_MEM_READ_WRITE | memflags |
CL_MEM_HETEROGENEOUS_INTELFPGA, ਆਕਾਰ ਦਾ(ਅਨ-ਹਸਤਾਖਰਿਤ) * ਵੈਕਟਰ ਆਕਾਰ, NULL, &status);
… ਸਥਿਤੀ = clSetKernelArg(kernel[k], 0, sizeof(cl_mem), (void*)&ddatain);
… ਸਥਿਤੀ = clEnqueueWriteBuffer(ਕਤਾਰ, ddatain, CL_FALSE, 0, sizeof(unsigned) * 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 ਫਲੈਗ ਸੈੱਟ ਕਰਨਾ ਉਦੋਂ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਫਲੋਰਪਲਾਨ ਨੂੰ ਡਿਜ਼ਾਈਨ ਕੀਤੇ ਬਿਨਾਂ ਅਤੇ 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::reprogram(void *data, size_t data_size)
{
ਵਾਪਸੀ 0;
// ਅਸਫਲਤਾ ਦਾ ਅੰਦਾਜ਼ਾ ਲਗਾਓ
int reprogram_failed = 1;
// ਮੰਨ ਲਓ ਕਿ fpga.bin ਵਿੱਚ ਕੋਈ rbf ਜਾਂ ਹੈਸ਼ ਨਹੀਂ ਹੈ
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 ਨੂੰ ਮੁੜ-ਪ੍ਰੋਗਰਾਮ ਨਹੀਂ ਕਰੇਗਾ। ਤੁਹਾਨੂੰ ਹੱਥੀਂ FPGA ਚਿੱਤਰ ਨੂੰ .aocx ਨਾਲ ਮੇਲ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ 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
ਦਸਤਾਵੇਜ਼ / ਸਰੋਤ
![]() |
Intel OpenCL ਕਸਟਮ ਪਲੇਟਫਾਰਮਾਂ ਲਈ FPGA SDK ਵਿੱਚ ਵਿਪਰੀਤ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾ ਰਿਹਾ ਹੈ [pdf] ਹਦਾਇਤਾਂ ਓਪਨਸੀਐਲ ਕਸਟਮ ਪਲੇਟਫਾਰਮਾਂ ਲਈ ਐਫਪੀਜੀਏ SDK ਵਿੱਚ ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣਾ, ਵਿਭਿੰਨ ਮੈਮੋਰੀ ਸਿਸਟਮ ਬਣਾਉਣਾ, ਓਪਨਸੀਐਲ ਕਸਟਮ ਪਲੇਟਫਾਰਮਾਂ ਲਈ ਐਫਪੀਜੀਏ ਐਸਡੀਕੇ |