【发布时间】:2014-12-19 09:40:12
【问题描述】:
我需要执行一个函数大约 10^11 次。该函数是自包含的,需要一个整数作为输入,我们称之为 f(n)。 n 的范围实际上是 0
我想使用 CUDA 运行这个函数,但我在概念上遇到了麻烦。也就是说,我知道如何使用块和线程索引来模拟上面提到的 n。如幻灯片 40 所示,nVidia Tutorial 但是,当 n>TotalNumberOfThreadsPer_CUDA_Call 时会发生什么。
基本上,每次调用我在 CUDA 上运行函数时,线程数和块数是否都会重置?如果是这样,是否有一种简单的方法来模拟 n,如前所述,用于任意大的 n?
谢谢。
【问题讨论】:
-
进行几个内核调用并传递一个偏移量作为参数?
myKernel(size_t startOffset) { size_t idx = startOffset + blockIdx.x * blockDim.x + threadIdx.x; ... }或者在你的内核中做一个循环。for (size_t idx = blockDim.x * ...; idx < 10^11; idx += blockDim.x * gridDim.x) { ... } -
@ParkYoung-Bae 你真的应该写更多的答案来清除未回答的标签上的问题。为您的评论 +1
-
@MichaelHaidl 抱歉,我确实有这个坏习惯。
标签: c++ cuda parallel-processing