14.6_多GPU及其扩展性

14.6 多GPU及其扩展性

因为具有高计算密度,使用多个GPU,N-体计算将获得很好的扩展性。使用可分享锁页内存来储存个体数据,可以被系统中的多个GPU轻松引用。对于一个包含k个GPU的系统,每个GPU将被分配N/k个作用力的计算。[1]我们使用多GPU实现N-体应用的详情在第9章已经描述。计算中,数据行被平均分配到每一个GPU,输入的数据通过可分享锁页内存广播到所有GPU并且每一个GPU独立的计算自己的输出。在使用多GPU的CUDA应用中,CPU端可以是多线程,也可以是单线程。第9章给出了优化的N-体实现,使用了这两种优化策略。

对于N-体计算,CPU端使用单线程和多线程性能相当,因为需要CPU做的工作很少。表14-3总结了采用多达4个GPU,CPU端使用多线程解决问题规模为96k个个体时的扩展性。计算效率是通过单个GPU展现的性能与最好性能比较得到的。从这个结果可知,计算性能仍然有提升的空间,因为这里报告的性能结果中包括了所有时间步长中GPU对于内存分配与释放的操作时间。

表14-3 N-体的可扩展性评价

[1] 我们的实现要求N能被k整除。