由于最近新买了4个GPU而开始接触学习GPU编程,因为我原来的程序使用的是C++语言,故在仅仅看完Nvidia官网Mark Harris写的一篇简短的An Even Easier Introduction to CUDA后开始琢磨如何使用多个GPU同时计算来进一步加速程序。
在查找有关资料和官方手册后,了解到Nvidia有专门的SLI Multi-GPU技术来实现这个过程,N卡的多卡互联要求有两块或以上完全相同的显卡,并且其显示核心的工作主频也相同,才能使用这项技术。正好我这儿是4块完全相同的GeForce GTX 1080ti,满足互联的要求。于是我在参考了CUDA自带的Samples里的simpleMultiGPU后对Mark Harris给出的简单数组求和程序进行了改写:
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <cuda_runtime.h>
// This application demonstrates how to use CUDA API to use mutiple GPUs(4 Nvidia Geforce GTX 1080 ti)
// Function to add the elements of two arrays
//Mutiple-GPU Plan Structure
typedef struct
{
//Host-side input data
float *h_x, *h_y;
//Result copied back from GPU
float *h_yp;
//Device buffers
float *d_x, *d_y;