OpenCL library of stream memory components targeting FPGAs

Jasmina Vasiljevic, Ralph Wittig, P. Schumacher, Jeff Fifield, F. Martinez-Vallina, Henry Styles, P. Chow
{"title":"OpenCL library of stream memory components targeting FPGAs","authors":"Jasmina Vasiljevic, Ralph Wittig, P. Schumacher, Jeff Fifield, F. Martinez-Vallina, Henry Styles, P. Chow","doi":"10.1109/FPT.2015.7393134","DOIUrl":null,"url":null,"abstract":"In recent years, high-level languages and compilers, such as OpenCL have improved both productivity and FPGA adoption on a wider scale. One of the challenges in the design of high-performance stream FPGA applications is iterative manual optimization of the numerous application buffers (e.g., arrays, FIFOs and scratch-pads). First, to achieve the desired throughput, the programmer faces the burden of analyzing the memory accesses of each application buffer, and based on observed data locality determines the optimal on-chip buffering, and off-chip read/write data access strategy. Second, to minimize throughput bottlenecks, the programmer has to carefully partition the limited on-chip memory resources among many application buffers. In this work we present an FPGA OpenCL library of pre-optimized stream memory components (SMCs). The library contains three types of SMCs, which implement frequently applied data transformations: 1) stencil, 2) transpose and 3) tiling. The library generates SMCs that are optimized both for the specific data transformation they perform as well as the user specified data set size. Further, to ease the partitioning of on-chip memory resources among many application memories, the library automatically maps application buffers to on-chip and off-chip memory resources. This is achieved by enabling the programmer to specify an on-chip memory budget for each component. In terms of on-chip memory, the SMCs perform data buffering to exploit data locality and maximize reuse. In terms of off-chip memory accesses, the SMCs optimize read/write memory operations by performing data coalescing, bursting and prefetching. We show that using the SMC library, the programmer can quickly generate scalable, pre-optimized stream application memory components, thus reaching throughput targets without time consuming manual memory optimization.","PeriodicalId":261246,"journal":{"name":"2015 International Conference on Field Programmable Technology (FPT)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2015-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"11","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2015 International Conference on Field Programmable Technology (FPT)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/FPT.2015.7393134","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 11

Abstract

In recent years, high-level languages and compilers, such as OpenCL have improved both productivity and FPGA adoption on a wider scale. One of the challenges in the design of high-performance stream FPGA applications is iterative manual optimization of the numerous application buffers (e.g., arrays, FIFOs and scratch-pads). First, to achieve the desired throughput, the programmer faces the burden of analyzing the memory accesses of each application buffer, and based on observed data locality determines the optimal on-chip buffering, and off-chip read/write data access strategy. Second, to minimize throughput bottlenecks, the programmer has to carefully partition the limited on-chip memory resources among many application buffers. In this work we present an FPGA OpenCL library of pre-optimized stream memory components (SMCs). The library contains three types of SMCs, which implement frequently applied data transformations: 1) stencil, 2) transpose and 3) tiling. The library generates SMCs that are optimized both for the specific data transformation they perform as well as the user specified data set size. Further, to ease the partitioning of on-chip memory resources among many application memories, the library automatically maps application buffers to on-chip and off-chip memory resources. This is achieved by enabling the programmer to specify an on-chip memory budget for each component. In terms of on-chip memory, the SMCs perform data buffering to exploit data locality and maximize reuse. In terms of off-chip memory accesses, the SMCs optimize read/write memory operations by performing data coalescing, bursting and prefetching. We show that using the SMC library, the programmer can quickly generate scalable, pre-optimized stream application memory components, thus reaching throughput targets without time consuming manual memory optimization.
针对fpga的流存储器组件的OpenCL库
近年来,高级语言和编译器,如OpenCL,在更大范围内提高了生产力和FPGA的采用。设计高性能流FPGA应用程序的挑战之一是对众多应用程序缓冲区(例如,阵列,fifo和刮擦板)的迭代手动优化。首先,为了达到期望的吞吐量,程序员面临着分析每个应用程序缓冲区的内存访问的负担,并根据观察到的数据位置确定最佳的片上缓冲和片外读/写数据访问策略。其次,为了最小化吞吐量瓶颈,程序员必须在许多应用程序缓冲区中仔细地划分有限的片上内存资源。在这项工作中,我们提出了一个预先优化的流存储器组件(SMCs)的FPGA OpenCL库。该库包含三种类型的smc,它们实现了经常应用的数据转换:1)模板,2)转置和3)平铺。该库生成的smc针对它们执行的特定数据转换以及用户指定的数据集大小进行了优化。此外,为了在许多应用程序内存中简化片上内存资源的分区,该库自动将应用程序缓冲区映射到片上和片外内存资源。这是通过使程序员能够为每个组件指定片上内存预算来实现的。就片上存储器而言,smc执行数据缓冲以利用数据局部性并最大化重用。在片外存储器访问方面,smc通过执行数据合并、爆破和预取来优化读/写存储器操作。我们表明,使用SMC库,程序员可以快速生成可扩展的,预优化的流应用程序内存组件,从而达到吞吐量目标,而无需耗时的手动内存优化。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信
小红书