对于串流输入和输出接口,如果性能受到串流接口的限制,那么可以并行使用双串流输入或双串流输出。要使用双并行串流,建议使用以下成对宏,其中 idx1
和 idx2
表示两条串流。将 restrict
关键字添加到串流端口中,对其进行最优化以便于并行处理。
READINCR(SS_rsrc1, idx1) and READINCR(SS_rsrc2, idx2)
READINCRW(WSS_rsrc1, idx1) and READINCRW(WSS_rsrc2, idx2)
WRITEINCR(MS_rsrc1, idx1, val) and WRITEINCR(MS_rsrc2, idx2, val)
WRITEINCRW(WMS_rsrc1, idx1, val) and WRITEINCRW(WMS_rsrc2, idx2, val)
以下代码示例显示了两条使用流水打拍的并行输入串流,间隔为 1。
void simple( input_stream_int32 * restrict data0, input_stream_int32 * restrict data1,
output_stream_int32 * restrict out) {
for(int i=0; i<1024; i++)
chess_prepare_for_pipelining
{
int32_t d = READINCR(SS_rsrc1, data0) ;
int32_t e = READINCR(SS_rsrc2, data1) ;
WRITEINCR(MS_rsrc1,out,d+e);
}
}