小编Sag*_*Ziv的帖子

多线程会降低 GPU 性能

在我的 Python 应用程序中,我使用 Detectron2 对图像进行预测并检测图像中所有人物的关键点。

\n

我想对实时流式传输到我的应用程序的帧(使用 aiortc)运行预测,但我发现预测时间要糟糕得多,因为它现在在新线程上运行(主线程被服务器占用)。

\n

在线程上运行预测需要 1.5 到 4秒之间的时间之间的时间,这是一个很长的时间。

\n

在主线程上运行预测时(没有视频流部分),我得到的预测时间不到一秒

\n

我的问题是为什么会发生这种情况以及如何修复它\xc2\xbf 为什么从新线程使用它时 GPU 性能会急剧下降\xc2\xbf

\n

笔记:

\n
    \n
  1. 该代码在 Google Colab 中使用 Tesla P100 GPU 进行了测试,并通过从视频文件中读取帧来模拟视频流。

    \n
  2. \n
  3. 我使用这个问题中的代码计算在帧上运行预测所需的时间

    \n
  4. \n
\n

我尝试切换到多处理,但无法使其与 cuda 一起工作(我尝试了两者import multiprocessing以及import torch.multiprocessingset_stratup_method(\'spawn\')),它只是在调用时卡住了start ,它只是在调用进程

\n

示例代码:

\n
from detectron2 import model_zoo\nfrom detectron2.engine import DefaultPredictor\nfrom detectron2.config import get_cfg\n\nimport threading\nfrom typing import List\nimport numpy as np\nimport timeit\nimport cv2\n\n# Prepare …
Run Code Online (Sandbox Code Playgroud)

python performance multithreading gpu

11
推荐指数
1
解决办法
3603
查看次数

无法在 Visual Studio 2019 中添加引用

我最近升级到 Visual Studio 2019,遇到了一个奇怪的问题。

\n\n

当我尝试添加对项目的引用时,收到一条错误消息,显示“序列不包含元素”。

\n\n

你知道如何修复它吗?我尝试过重新安装,但没有效果\xe2\x80\xa6

\n

visual-studio

3
推荐指数
1
解决办法
3万
查看次数

访问C#类中的变量是否从内存中读取整个类?

我对C#相当陌生,我有一个问题困扰了我一段时间。

当我学习C#时,我被告知一个类不应包含很多变量,因为那样一来,读取变量(或从中调用方法)会很慢。

有人告诉我,当我访问C#类中的变量时,它将从内存中读取整个类以读取变量数据,但这对我来说听起来很奇怪和错误。

例如,如果我有这个课:

public class Test
{
    public int toAccess; // 32 bit
    private byte someValue; // 8 bit
    private short anotherValue; // 16 bit
} 
Run Code Online (Sandbox Code Playgroud)

然后从main访问它:

public class MainClass
{
    private Test test;
    public MainClass(Test test)
    {
        this.test = test;
    }
    public static void Main(string[] args)
    {
        var main = new MainClass(new Test());
        Console.WriteLine(main.test.toAccess); // Would read all 56 bit of the class
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:确实如此吗?访问变量时是否读取了整个类?

c# memory oop class memory-address

2
推荐指数
2
解决办法
184
查看次数