Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过WAMP执行GPGPU程序_Php_Opengl_Exec_Wamp_Gpgpu - Fatal编程技术网

Php 通过WAMP执行GPGPU程序

Php 通过WAMP执行GPGPU程序,php,opengl,exec,wamp,gpgpu,Php,Opengl,Exec,Wamp,Gpgpu,我有一个程序,使用GPU执行某些计算。我可以使用命令行使程序正确运行。但是当我试图通过PHP执行相同的语句时,我遇到了麻烦 我使用的是wamp 2.0,我尝试了exec和proc_open函数,试图让程序运行,但即使进程正确启动,当涉及到GPU部分时,程序本身也会引发错误,“硬件不支持着色器”。该程序最初也会检测正在使用的图形卡的类型,但这种情况也不会发生 说清楚,我还没有写GPU程序。我可以直接从命令行运行相同的语句,但不能通过php。从php执行命令与直接执行命令有什么区别 我使用的是NVI

我有一个程序,使用GPU执行某些计算。我可以使用命令行使程序正确运行。但是当我试图通过PHP执行相同的语句时,我遇到了麻烦

我使用的是wamp 2.0,我尝试了exec和proc_open函数,试图让程序运行,但即使进程正确启动,当涉及到GPU部分时,程序本身也会引发错误,“硬件不支持着色器”。该程序最初也会检测正在使用的图形卡的类型,但这种情况也不会发生

说清楚,我还没有写GPU程序。我可以直接从命令行运行相同的语句,但不能通过php。从php执行命令与直接执行命令有什么区别

我使用的是NVIDIA GT8600图形卡。任何帮助都会很好

在程序中,当它使用glGetString(GLU供应商)检查图形卡供应商时,它将获得Microsoft Corporation而不是NVIDIA。这导致了所有的问题,尽管我仍然不知道为什么只有在我从php运行它时才会这样做


我还尝试从命令行独立运行php脚本,在这种情况下,我的图形卡被正确检测到,一切正常,只有当我浏览我的浏览器时,它才工作。

经过深入研究后,我发现问题是由于windows 7中的会话0隔离引起的(我很抱歉在问题中没有提到windows 7)

要点是,驻留在会话0中的wampapache服务启动的任何进程都无法访问显示设备(这要求我的服务成为会话1的一部分)。因此,调用GPU进程时,我的代码无法检测我的图形卡

一个绕过这个的方法是在会话1中生成一个服务,然后让它执行这个过程。英伟达论坛上有一个很好的线索,还有一些示例代码,说明如何做到这一点。


这很可能是GPU程序的错误。您是否尝试在PHP中设置工作目录(执行时)与您在命令行中使用的相同?是的,我在所有地方都提供了绝对路径,正如我所说,程序确实启动了,但它无法运行GPU部件。它在GPU上执行检查并返回一个错误,说我不能支持着色器。是否是执行PHP代码的用户缺乏正确的权限我对Windows几乎一无所知,但在Linux上,当用户无法打开/dev/nvidiactl时就会发生这种情况。这里有一些关于这类问题的信息:可能是一个起点。