我想在flask
服务器上运行pyCUDA代码。该文件直接使用python3
正确运行,但当使用flask
调用相应的函数时,该文件将失败。在
以下是相关代码:
在库达夫拉斯克.py以下内容:
import pycuda.autoinit
import pycuda.driver as drv
import numpy
from pycuda.compiler import SourceModule
def cudaTest():
mod = SourceModule("""
int x = 4;
""")
print ("done")
return
if __name__ == "__main__":
cudaTest()
在服务器.py(仅调用函数的部分):
^{pr2}$在运行python cudaFlask.py
时,我得到了预期的输出done
,但是在启动服务器并在^{POST
请求时,我在烧瓶控制台上得到以下错误:
pycuda._driver.LogicError: cuModuleLoadDataEx failed: invalid device context -
在mod = SourceModule...
线上
我哪里出错了? 外面有一个similar question,但还没有人回答。在
PyCUDA可能与WSGI web服务器上下文不兼容。 如果使用某种类型的消息队列(如celeri),HTTP请求在队列上放置一个作业,队列另一端的工作人员运行CUDA程序,那么就可以让它正常工作。在
编辑:一个简单快捷的方法是使用Python Subprocess check_output function
在web请求中:
subprocess.check_output(['python', 'cudaFlask.py'])
解决了}的问题(即在}。在
flask
中延迟加载和手动生成{PyCUDA
中没有{请参考this中的延迟加载
flask
。在我的
views.py
文件:相关问题 更多 >
编程相关推荐