使用 Flask 时 PyCUDA 上下文错误

2024-02-11

我正在使用 PyCUDA 来实现 smooth_local_affine,如图所示here https://github.com/LouieYang/deep-photo-styletransfer-tf/blob/master/smooth_local_affine.py。当我简单地在Linux上运行该程序时,它运行得很好。但是当我尝试在 Flask 上下文下导入它时:

from smooth_local_affine import smooth_local_affine
from flask import Flask
app = Flask(_name_)
...

出现以下错误:

-------------------------------------------------------------------  
PyCUDA ERROR: The context stack was not empty upon module cleanup.
-------------------------------------------------------------------   
A context was still active when the context stack was being cleaned up.  
At this point in our execution, CUDA may already have been deinitialized, 
so there is no way we can finish cleanly. The program will be aborted now. 
Use Context.pop() to avoid this problem.

然后我尝试添加context.pop(),然后又发生错误;

atexit._run_exitfuncs 中的错误:回溯(最近一次调用最后一次):
文件 “/home/yifang/anaconda3/envs/python3/lib/python3.6/site-packages/pycuda-2017.1-py3.6-linux-x86_64.egg/pycuda/autoinit.py”, 第 14 行,在 _finish_up 中 context.pop() pycuda._driver.LogicError: context::pop failed: 无效的设备上下文 - 无法弹出非当前上下文

有人知道如何在 Flask 环境中运行 PyCuda 吗?或者也许有其他方法可以在不使用 PyCuda 的情况下使用 smooth_local_affine 功能?


让我在这里提出一种解决方案,因为我已经尝试了很多解决方案但仍然不起作用。幸运的是我找到了一个正确的答案。

一些解决方案,例如

import pycuda.autoinit

or

cuda.init 
device = cuda.Device(0) 
ctx = device.make_context() 
inputs, outputs, bindings, stream = allocate_buffer() 
ctx.pop()

如果您将脚本作为简单程序运行,这些可能会起作用,但如果您使用 Flask 或其他 Web 服务器运行,则会引发上下文错误。根据我的搜索,原因可能是 Flask 服务器在收到请求时会生成新线程。

在这种情况下,真正的解决方案非常简单,您应该添加如下代码:

with engine.create_execution_context() as context:
    ctx = cuda.Context.attach()
    inputs, outputs, bindings, stream = allocate_buffer()
    ctx.detach()

这对我有用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask 时 PyCUDA 上下文错误 的相关文章

随机推荐

  • 如何获取循环发送的每条短信的发送报告android?

    我正在开发短信应用程序 我需要循环发送短信 注册了 SENT 和 DELIVERED 状态的广播接收器 但问题是如何区分哪个送达通知是针对我发送的哪条短信 我正在使用 SMSMANAGER 类发送短信 我的问题与这里讨论的类似 如何监控每条
  • Python 在 Windows 7 上启动非常慢

    在我的 Windows 7 计算机上加载 Python 所需的时间比在虚拟机 在 Windows 内部相同硬件上 上运行的 Ubuntu 14 04 长 17 倍 Anaconda3发行版在Windows和Ubuntu上使用默认的pytho
  • 将图像添加到项目(旋转器)

    您好 我是 Android 爱好者 我想将图像添加到我的微调项目中 不幸的是 我不知道该怎么做 下面是我的 xml 文件和 MainActivity 谢谢阅读 XML FILE
  • 如何确定UIBarButtonItem在UIToolbar中的位置?

    确定 UIToolbar 中 UIBarButtonItem 的 x y 位置的最简单方法是什么 我找到的唯一答案是有什么方法可以知道 uibarbuttonitem 被绘制在哪里 http www cocoabuilder com arc
  • 如何在 jQuery 中编辑 CSS 规则?

    目的是动态地将行添加到表中 并且稍后手动应用规则不太好 而且更慢 具体的例子是我正在创建一个树表来表示文件夹目录 每个文件夹都是一个div 每一个div 有一个ul与li对于每列的信息 这些li有一个与列名相同的类名 这提供了列宽 但是我想
  • 在 bash 中解析 mobileprovision 文件?

    我正在构建一个 php bash mysql 系统 用于自动分配 iPhone 应用程序 但我想读取项目的 mobileprovision 文件中的应用程序标识符密钥 并据此更改它的 info plist 文件 如果 cfbundleide
  • C语言中printf函数是如何工作的?

    我在测试printf函数时遇到了一个问题 首先我写这样的代码 int main void char a a printf a f n a return 0 输出是 然后我写代码 int main void float b a printf
  • PHP 大括号,这段代码的含义是什么

    我有这段代码 用于从数据库获取查询 在MyBB http www mybb com来源 query SELECT fields FROM this gt table prefix table 我的问题是 什么意思 table table 和
  • 如何使用管道运行命令?

    我正在尝试使用 execvp 运行 ls wc 所以我创建了一个管道 然后创建了一个子管道 我关闭父 子中适当的 读 写 端 然后将另一端映射到标准输出 标准输入 然后我在父级中使用 execvp 运行 ls 在子级中使用 wc 当我运行程
  • Visual Studio Code 不使用池映射将调试器附加到 python 中的多进程

    你好 我正在尝试在 python 中调试多进程 下面是我使用 Pool 运行多进程的一部分 pool Pool num half logical cpus pool result dict pool starmap process batc
  • 将 NSArray 转换为 NSMutableArray Swift

    我正在尝试转换self assets NSArray to NSMutableArray并将其添加到picker selectedAssets这是一个NSMutableArray 这段代码在 swift 中会是什么样子 Objective
  • 如何强制用户下载图像(如下载 pdf)?

    因此 我编写了一个图像库 其中包含下载原始图像的选项 默认情况下 它显示图像的调整大小版本 我很想知道如何 下面的代码将强制用户保存 pdf 而不是使用浏览器查看它 我希望通过将单击操作与 jQuery 绑定来实现图像 jpg gif pn
  • Material-UI [v0.x] 悬停样式上的 RaisingButton

    我想更改悬停时 Material UI RaisingButton 的样式 但似乎没有特定的选项可以做到这一点 因为悬停时发生的情况是由材料设计指南定义的 然而 当鼠标悬停在按钮上时 有什么方法可以更改按钮的样式 主要是颜色和背景颜色 吗
  • C# 中 itextsharp 中的文本格式设置

    我正在尝试使用我的 C 软件创建 pdf 文件 我在用itextsharp库来创建客户账单收据 但是我无法格式化文本 我们如何格式化pdf文件中的文本 仅新行字符 n似乎正在工作 我们如何使用制表符格式化文本 附件是 pdf 文件中文本的屏
  • 如何在 Unity 中创建一个可以显示由许多小图像组成的纹理的着色器

    所以我想做的是从 SQL 表加载卫星图像并将它们包裹在一个球体周围以创建一个地球仪 我知道我已经加载了所涵盖的图像 我只是不确定如何使我的着色器以正确的方向显示图像 我去了 Unity 论坛并查看了这段代码 https docs unity
  • 从Python中的函数返回错误字符串

    我在 Python 中有一个类函数 它要么返回成功 要么返回失败 但如果失败 我希望它发回特定的错误字符串 我想到了 3 种方法 将变量 error msg 传递给最初设置为 None 的函数 如果出现错误 它将设置为错误字符串 例如 if
  • 如何使用 C# Windows 应用程序将图像从 byte[] 写入 MS WORD

    我尝试从以下位置写入数据FileStream StreamWriter到一个word文件 当数据是文本格式时它工作正常 使用StreamWriter 但是当我尝试同样的方法时Binarywriter 用于将图像写入Word文档 它错误地写入
  • 读取表变量的查询可以在 SQL Server 2008 中生成并行执行计划吗?

    首先 从BOL http msdn microsoft com en us library ms175010 aspx 修改的查询table变量不生成并行查询执行计划 当非常大时 性能可能会受到影响table变量或复杂查询中的表变量被修改
  • 使用 VM 参数导出 jar

    我已经使用 Eclipse 编写了一个 Java 应用程序 该应用程序使用 SWT 作为 UI 看运行 jar 时出现 SWT 异常 线程 main 中出现异常 org eclipse swt SWTException 线程访问无效 htt
  • 使用 Flask 时 PyCUDA 上下文错误

    我正在使用 PyCUDA 来实现 smooth local affine 如图所示here https github com LouieYang deep photo styletransfer tf blob master smooth