从一个简单的实际例子看并行处理
在不使用并行处理之前
假如我有一个很大的tif图片
我想算一下这张图片中有多少的像素点是黑色的,我可能会这么做:
def cnt_black(filename):
img = tf.imread(filename)
width, height, channels = img.shape
cnt = 0
for i in range(width):
for j in range(height):
r, g, b = img[i, j, 0], img[i, j, 1], img[i, j, 2]
if r == 0 and g == 0 and b == 0:
c_num += 1
return cnt
这么遍历耗时很久,等待程序出结果的时间中我的耐心要消耗光了!
现在我们了解到,并行处理或许可以减少我们等待的时间。
什么是并行处理,它的底层硬件依赖什么?所有人的电脑都可以上这个方法吗?
并行处理的定义介绍见另一篇博客(待更新)
底层硬件:CPU or GPU?
并行处理依赖于硬件的多核。一般我们说并行处理都是指的在cpu上进行并行,因为cpu一般是单核运算,需要你指明多核进行并行处理。
而GPU本身是针对并行计算优化的硬件,它可以同时处理大量数据,因此天然支持并