【发布时间】:2010-07-16 03:23:56
【问题描述】:
我有一个使用 GPU 执行某些计算的程序。我可以使用命令行让程序正确运行。但是当我尝试通过 PHP 执行相同的语句时,我遇到了麻烦。
我使用的是 wamp 2.0,我尝试了 exec 和 proc_open 函数来尝试让程序运行,但是即使进程正确启动,当涉及到 GPU 部分时,程序本身也会提高错误,“您的硬件不支持着色器”。该程序最初还会检测正在使用的显卡类型,但也没有发生这种情况。
需要说明的是,我还没有编写 GPU 程序。而且我可以直接从命令行运行相同的语句,但不能通过 php。从php执行命令而不是直接执行命令有什么区别?
我使用的是 NVIDIA GT8600 显卡。任何帮助都会很棒。
在程序中,当它使用 glGetString(GL_VENDOR) 检查显卡供应商时,它会获取 Microsoft Corporation 而不是 NVIDIA。这导致了所有问题,尽管我仍然不知道为什么只有当我从 php 运行它时才会这样做。
我也尝试过从命令行独立运行 php 脚本,在这种情况下,我的显卡被正确检测到并且一切正常,只有当我通过浏览器时它才不起作用。
【问题讨论】:
-
这很可能是 GPU 程序的错误。您是否尝试将 PHP 中的工作目录(执行时)设置为与您在命令行中使用的相同?
-
是的,我做到了,我还在各处给出了绝对路径,就像我说的,程序确实启动了,但它只是无法运行 GPU 部分。它在 GPU 上执行检查并返回一个错误,说我不能支持着色器。
-
会不会是执行PHP代码的用户缺少正确的权限?我对 Windows 几乎一无所知,但在 Linux 上,当您的用户无法打开 /dev/nvidiactl 时,就会发生这种情况。这里有一些关于这类问题的信息:nvnews.net/vbulletin/showthread.php?t=89965 可能是一个起点。
标签: php opengl exec wamp gpgpu