linux下为什么没有jit编译缓存

最近把程序从win vs2008移植到linux下,发现每次运行程序都要额外等待5-10秒钟,貌似jit在做编译工作。
在vs2008下,第一次运行有延迟,但第二次运行同样的代码,就没有延迟。
而在linux下,不管运行多少次,都有延迟,好像 编译缓存完全没有工作。该怎么解决呢?

另外,windows下的编译缓存目录我找到了,删除了里面的东西,但运行我的cuda程序的时候,发现这个目录下还是空的,而程序运行没有延迟。难道编译缓存目录又改位置了?

我用的是cuda5.0 c2050的卡。
windows是win2008r2 x64
linux是redhat 6.0

LZ您好,我不是linux的用户,无法为您建议linux下的做法,请其他人补充。以及并不确定您的额外等待时间是否为jit所用。

不过,我觉得您可以直接编译为合适计算能力版本的二进制文件,从而避免jit,您的显卡的计算能力为SM 2.0。

祝您好运~

-arch=compute_20 -code=sm_20 就没有jit了?

jit的过程几乎是瞬间,所以您的猜测不成立。

您的5-10秒种是因为每次都在加载驱动导致的。
您可以使用nvidia-smi -pm 1来取消这个每次的5-10秒钟。

感谢横扫斑竹指出此问题的确切原因~

谢谢横扫版主
linux下cuda加载慢的原因就是你说的那个,而且在有多卡的平台上表现会更明显一些。
nvidia-smi -pm 1
需要root权限,这对使用者而不是管理者来说,无法操作。而且reboot以后还需要重新设置。
经过向高手请教,有一个比较“土”的办法。
就是启动一个简单的cuda程序,只需要挨个把机器上的device set以后再cuda thread exit。然后程序不要退出,比如用一个带while(1)的sleep,使程序在后台运行,一样可以达到驱动和卡持续加载的效果。
这时运行cuda基本没有延迟:P