我有一个使用GPU执行某些计算的程序。我可以使用命令行使程序正常运行。但是当我尝试通过PHP执行相同的语句时,我遇到了麻烦。
我正在使用wamp 2.0,我尝试了exec和proc_open函数来尝试让程序运行,但即使进程正确启动,当涉及GPU部分时,程序本身也会提升错误,“您的硬件不支持着色器”。该程序最初还会检测所使用的显卡类型,但这种情况也不会发生。
要清楚,我还没有编写GPU程序。我可以直接从命令行运行相同的语句,但不能通过php。从php而不是直接执行命令有什么区别?
我正在使用NVIDIA GT8600显卡。任何帮助都会很棒。
在使用glGetString(GL_VENDOR)检查显卡供应商的程序中,它获得Microsoft Corporation而不是NVIDIA。这引起了所有问题,但我仍然不知道为什么只有当我从php运行它时才会这样做。
我也试过从命令行独立运行php脚本,在这种情况下,我的显卡被正确检测到,一切正常,只有当我浏览浏览器时才能正常工作。
答案 0 :(得分:0)
经过一番挖掘后,我发现问题是由于Windows 7中的会话0隔离引起的(我谦虚道歉,因为在问题中没有提到Windows 7)
它的要点是,由位于会话0的wampapache服务启动的任何进程都无法访问显示设备(这需要我的服务成为会话1的一部分)。因此,调用GPU进程时我的代码无法检测到我的显卡。
解决此问题的一种方法是在会话1中生成服务,然后让它执行该过程。 NVIDIA论坛中有一个很好的主题,还有一些示例代码可以说明如何做到这一点。
http://forums.nvidia.com/index.php?showtopic=93450&pid=1047458&mode=threaded&start=#entry1047458