例程描述
测试Kernel与Global Memory之间的带宽 multi bank(4块DDR独立数据传输)clEnqueueMapBuffer 与 clEnqueueUnmapMemobject 在 host 到 Global Memory 的数据优化
主要学习知识点
- Key Concepts
- Concurrent execution (并发执行)
- Out of Order Command Queues (命令队列的执行顺序)
- Multiple Command Queues (多个命令队列)
- Keywords
- cl_mem_ext_ptr_t
- clEnqueueMapBuffer()
- clEnqueueUnmapMemobject()
主机端代码分析
1 |
|
内核代码分析
内核源码
1 |
|
- GUI Setting:
- Makefile Setting:
综合报表
Performence图
关键理解概念描述
实验结果
1 | $ ./test_memaccess.exe binary_container_1.xclbin |
实验结果分析:
时钟频率为300Mhz
4块DDR独立进行使用,DDR0 –> input0 (1GB) ; DDR1 <– output0 (1GB) ; DDR2 –> input1 (1GB) ; DDR3 <– output1 (1GB)
共传输4GB的数据,用时0.070036s 总带宽:4096/0.070036 = 58484.212297 (MB/sec)
每个通道的带宽为 1024/0.070036 = 14621.052030 (MB/sec)
DDR3数据吞吐率为:300MHZ * 512bit / 8 = 19200 (MB/sec)
接口位宽利用率: 14621.052030 / 19200 = 76.1513%