我想知道这是否可能吗?有人可以指出我在任何地方错了吗?我是CUDA的新手。
__global__ void run_multiple_cpp(int *n, int *result){
int i = blockDim.x*blockIdx.x + threadIdx.x;
if (i < n){
result[i] = system("//path to a.out" -parameters[i])
}
}
int main(void){
// Get input here,
// kernel call which splits the input as shown above
return 0;
}
我的问题是是否可以实现而无需编写CUDA友好的CPP文件。我尝试使用 __ device __ 和 __ host __ 标志但是我的应用程序太大,无法修改以支持CUDA。
以上操作始终基于不同的输入集-我尝试过CPU多线程,但需要为大量输入运行此应用程序。因此我问。
答案 0 :(得分:1)
GPU快速的主要原因是它们包含许多小型和简单的处理器,因此可以并行执行许多简单的任务。
像调用system
这样的高级操作在GPU上是完全不可用的。为了利用GPU的功能,您将需要为CUDA / OpenCL / Metal等重写代码。
如果您不能修改程序以在GPU上运行,则可能可以利用CPU的SIMD功能,并且仍然可以实现(较小)加速,这也可能是GPU的垫脚石处理,使您的代码对CPU SIMD友好,也可能使向GPU的移植更加容易。