我在Windows 7 64位计算机上安装了两个GPU:NVIDIA GeForce GTX 750 Ti和GeForce GTX 570.前者的计算能力为5,后者的计算能力为2。
对于我的一个项目,我想利用MatConvNet,一个用于在MATLAB中以类似于Caffe或TensorFlow的方式拟合卷积神经网络(CNN)的库。该软件包支持使用两种显卡,但是用于深度学习的NVIDIA工具包cuDNN仅与具有3或更高计算能力的显卡兼容。如果我决定只使用750 Ti,我可以使用enableCudnn
设置为true
的选项编译MatConvNet,如果我决定只使用570,我必须使用选项集编译它到false
。
在一个简单的CNN上,我创建了三个卷积层,三个汇集层,一个完全连接层和一个softmax层对手写数字进行分类,我注意到训练时间最短仅为750 Ti,其次是两张卡的组合,然后是570。这是因为当我使用这两种卡时,我必须使用enableCudnn
编译MatConvNet包到false
,这会阻止MatConvNet使用作为cuDNN一部分的快速卷积代码。但是,拥有两个GPU仍然比单独使用570更好。
我想知道是否有一种方法可以为每个显卡分别编译MatConvNet,因此750使用cuDNN,而570则没有。不考虑在图形卡之间分配工作负载的开销,与单独使用750相比,这理论上应该加速代码。有人可以告诉我他们是否做过这样的事情,如果有可能的话,和/或如果这样做怎么办?