|
|
1
6
如何并行计算?GPU能够进行很多并行计算。比CPU能做的要多得多。 看看这个例子,向量相加或矩阵相加的更简单的例子,比如说1百万个元素。 使用CPU,假设您最多可以运行100个线程: (100多了,不过我们假设一下) 在一个典型的多线程示例中,假设您对所有线程进行并行添加。 我的意思是:
我们之所以能够这样做,是因为C[0]的值不依赖于除A[0]和B[0]以外的任何其他值。所以每一个添加都是独立的。因此,我们能够轻松地将任务并行化。 正如您在上面的示例中看到的,同时添加100个不同元素可以节省您的时间。这样,添加所有元素需要1米/100=10000步。 GPU并行化的效率如何?现在考虑一下今天的GPU大约有2048个线程,所有线程都可以在恒定时间内独立地执行2048个不同的操作。所以给了我一个鼓励。 在矩阵乘法的例子中。您可以对计算进行并行处理,因为GPU有更多的线程,并且在每个线程中都有多个块。因此,许多计算都是并行的,因此计算速度很快。
实际上,几乎所有机器学习框架都使用所有可能操作的并行实现。这是通过CUDA编程实现的,NVIDIA API在NVIDIA GPU上进行并行计算。因此,您不需要显式地编写它,它都是在低级别完成的,而且您甚至不知道这一点。 是的,这并不意味着你写的C++程序会自动并行化,仅仅因为你有一个GPU。 不需要,您需要使用CUDA编写它,然后只有它将被并行化,但是大多数编程框架都有它,所以从您的端部不需要它。 |