多线程编程中线程数量的选择与UPC语言扩展
1. 多线程编程背景与循环分类
随着多核处理器的普及,如英特尔的Core i7处理器,以及AMD推出的多核心处理器,利用多核系统的硬件并行性变得至关重要。由于循环在程序运行时间中占比较大,因此本文聚焦于循环线程化。循环线程化空间可分为以下三类:
- 并行循环(DOALL循环) :循环中不存在任何循环携带依赖。不同迭代可以在并发线程上执行,无需显式线程同步。例如:
for (i = 0; i < (1 << bmp->bitmap.bmBitsPixel); i++) {
if (core_header) {
rgbTriples[i].rgbtRed = palEntry[i].peRed;
rgbTriples[i].rgbtGreen = palEntry[i].peGreen;
rgbTriples[i].rgbtBlue = palEntry[i].peBlue;
}
else {
rgbQuads[i].rgbRed = palEntry[i].peRed;
rgbQuads[i].rgbGreen = palEntry[i].peGreen;
rgbQuads[i].rgbBlue = palEntry[i].peBlue;
rgbQuads[i].rgbReserved = 0;
}
}
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



