1

当我调用函数 cuLaunchKernel() 时,我的程序因错误 CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES 而崩溃。这是因为我将 29 个参数传递给我的内核吗?如果是这样,是否有任何解决方法?我很确定我需要这些参数进行计算。

Pointer kernelParams = Pointer.to(
                Pointer.to(new int[] {n}), 
                Pointer.to(new int[] {xRes}), 
                Pointer.to(new int[] {yRes}),
                Pointer.to(new double[] {camX}),
                Pointer.to(new double[] {camY}),
                Pointer.to(new double[] {camZ}),
                Pointer.to(new double[] {camforX}),
                Pointer.to(new double[] {camforY}),
                Pointer.to(new double[] {camforZ}),
                Pointer.to(new double[] {camupX}),
                Pointer.to(new double[] {camupY}),
                Pointer.to(new double[] {camupZ}),
                Pointer.to(new double[] {fov}),
                Pointer.to(new double[] {aspectRatio}),
                Pointer.to(in14),
                Pointer.to(in15),
                Pointer.to(in16),
                Pointer.to(in17),
                Pointer.to(in18),
                Pointer.to(in19),
                Pointer.to(in20),
                Pointer.to(in21),
                Pointer.to(in22),
                Pointer.to(new double[] {meshposX}),
                Pointer.to(new double[] {meshposY}),
                Pointer.to(new double[] {meshposZ}),
                Pointer.to(out0),
                Pointer.to(out1),
                Pointer.to(out2)
            );
cuLaunchKernel(function,
                    32,32,1,
                    32,32,1,
                    0,null,
                    kernelParams,null
                    );
4

1 回答 1

1

这是我天真的答案:

正如评论中所建议的,问题与块大小有关。减小块大小修复了错误。减小块大小后,我收到错误:CUDA_ERROR_ILLEGAL_ADDRESS。减小网格大小解决了这个问题。

于 2020-05-19T12:29:50.420 回答