求助,kernel函数很长,编译时出现out of memory该怎么办???

lc19890326 2012-03-29 08:05:43
环境:9800GT VS2008 CUDA4.1 XP32
kernel函数用于计算三维空间中各个点的值。
由于计算比较繁琐,写了大概600多行各种各样的计算函数,然后层层封装,到kernel函数中进行计算最后的值。
kernel函数使用的数组才64*64*64*sizeof(float),我算了下才1MB,应该不是分配的时候显存不够。

编译的时候出现了out of memory问题,具体编译信息如下:

C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/tmpxft_000005e8_00000000-9_ITM.cpp3.i(0): Warning: Optimizing huge function _Z13ComputeKernelPf because Olimit has been overridden;
compiler may run out of memory or run very slowly
C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/tmpxft_000005e8_00000000-9_ITM.cpp3.i(0): ### Compiler Error (user routine '_Z13ComputeKernelPf') during Code_Expansion phase:
### Out of memory in MEM_POOL_Realloc
nvopencc ERROR: D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\bin/../open64/lib//be.exe returned non-zero status 1
Project : error PRJ0019: 某个工具从以下位置返回了错误代码: "Compiling..."


请问各位该怎么解决,谢谢指点。
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
y-lei 2012-04-01
  • 打赏
  • 举报
回复
可能是计算中间过程,需要的memory超标了。
先写一个空函数,然后一步步增加代码,然后看看问题的位置,再解决。
lc19890326 2012-03-29
  • 打赏
  • 举报
回复
对了,我在Opencc Options加了-OPT:Olimit=0
之前没加这个就出现function scope无法优化的提示,会中断编译报错。

581

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧