所以我找到了这个wikipedia resource
每台设备的最大驻留网格数 (并发内核执行)
并且对于每个计算能力,它表示许多并发内核,我认为这是并发内核的最大数量。
现在我得到的是根据this nvidia CUDA resource提供的GTX 1060,其计算能力为6.1。从我到目前为止学到的关于CUDA的知识,您可以在NVCC编译时指定代码的虚拟计算能力,但标记为private static ArrayList<ArrayList<Integer>> unique(ArrayList<Integer> a, ArrayList<Integer> b) {
ArrayList<ArrayList<Integer>> unique = new ArrayList<>();
unique.add(new ArrayList<>());
unique.add(new ArrayList<>());
for (Integer i: a) {
if (!b.contains(i)) {
unique.get(0).add(i);
}else{
b.remove(i);
}
}
for (Integer i: b) {
if (!a.contains(i)) {
unique.get(1).add(i);
}else{
b.remove(i);
}
}
return unique;
}
。
那么我的GPU是硬件限制为32个并发内核还是能够带有-arch=compute_XX
标志的128个?
答案 0 :(得分:2)
根据NVIDIA CUDA programming guide计算能力中的表13,6.1设备最多有32个驻留网格= 32个并发内核。
即使您使用-arch=compute_60
标志,您也将受限于32个并发内核的硬件限制。选择要编译的特定体系结构不允许超出机器的硬件限制。