Polaris Project
|
Polaris是一个基于FPGA的深度学习计算库,提供了高性能的计算接口, 能够帮助开发者开发高效的深度神经网络系统。
使用Polaris接口必须首先通过polaris_create_context()
接口创建一个 上下文对象 (Context), 所有的Polaris接口在调用时都必须显式地指定该对象。 创建上下文对象时,用户必须指定一个 设备号 (Polaris给每一个FPGA设备分配了一个惟一的设备id,从0开始,依次递增), 用户可以通过polaris_get_devices()
接口来获取满足自己需求的设备id列表,并选择一个来创建Context。
FPGA内存与CPU内存相互独立,Polaris计算接口中所输入和输出的数据均要求是FPGA内存上的数据。
Polaris提供polaris_malloc()
和polaris_free()
接口来进行FPGA内存的分配与释放, 同时提供polaris_memcpy()
接口用来进行CPU与FPGA之间、FPGA内存之间的数据拷贝。
开发者可以选用标准GLIBC malloc()
接口来分配CPU内存,但是为了获得更好的数据拷贝性能, 我们推荐使用Polaris提供的polaris_malloc_host()
接口来进行CPU内存的分配。 应当注意的是,polaris_malloc_host()
接口分配的内存不如标准库分配的内存灵活、便于系统管理, 因此对于不需同步的CPU内存,应当避免使用该接口。
当前提供基础DNN模型计算的支持,具体如下:
后续计划12月份开放CNN模型计算的支持,功能如下:
设备计算函数的返回值均为PolarisStatus,正常情况下会返回POLARIS_OK。
简单的矩阵计算
INF ISA Team isa@b aidu .com
Copyright (C) 2017 Baidu, Inc.