gpt4 book ai didi

c - 抛出错误 'std::bad_alloc' ,OpenCL 对于 CPU 而不是 GPU

转载 作者:行者123 更新时间:2023-11-30 19:45:26 31 4
gpt4 key购买 nike

所以我正在运行矩阵乘法 OpenCL 代码,问题是相同的代码,在 GPU 中运行得很好,但在 CPU 中却出现错误。我得到的错误是:

terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Command terminated by signal 6

我正在使用的代码从此链接引用,

http://gpgpu-computing4.blogspot.com/2009/09/matrix-multiplication-2-opencl.html

我根据我的要求做了一些细微的更改,否则代码几乎是相同的。谁能帮我解决为什么会出现错误。

提前致谢

最佳答案

此异常是在内核执行之前、期间还是之后抛出的?您能缩小抛出此异常的范围吗?

您是否在大型阵列上运行此程序?我想到的一件事是,当您在 CPU 上启动时,内存不足。一开始这可能看起来很奇怪,因为你的 CPU 可能比 GPU 拥有更多的可用内存,但请记住,如果你在 CPU 上执行,你会将每个缓冲区存储在 CPU 内存中两次 - 一次用于主机端设置代码和一次用于设备端内核代码。另一方面,如果您在 GPU 上执行,则主 CPU 内存保存缓冲区的一个副本(主机端),而 GPU 内存保存另一个副本(由设备上的内核使用)。基本上,当您的 CPU 运行 OpenCL 内核时,它既是主机又是设备,因此请确保所有缓冲区(主机端和设备端)都适合其内存。

关于c - 抛出错误 'std::bad_alloc' ,OpenCL 对于 CPU 而不是 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26452433/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com