我使用C ++和OpenGL开发了一个Hand-tracking应用程序。 (和QT,Eigen,OpenCV)
OpenGL用于渲染3D模型(对于跟踪循环的每次迭代)。
应用程序仅在1个线程中运行。
我有兴趣做一些非常耗时的实验,所以我想知道是否有可能并行化事物,从启动同一个可执行文件的许多实例,并使用不同的参数运行它们。
只是尝试这样做,似乎它可以工作,但我不确定不同的实例是否会在GPU上相互干扰。为了更具描述性,我想知道以下内容: 如果我每次只运行一个实例进行一些实验,然后通过同时运行多个实例重复相同的实验,结果是否会在数字上相同?
当然我会尝试通过实验验证它,但我想知道是否有人可以指出我适当的阅读(我没有找到真正相关的东西)。
关于此事的任何想法?
实验的细节实际上是数学的,会在主题中引起“噪音”。
这个想法是你有一个跟踪算法,试图找到前一帧和当前帧之间的对应关系。通过使用这些对应关系,算法从前一帧(已知)的姿势中获取3D模型,并以这种方式对其进行变换,使其适合当前帧。有一些(数学)参数影响这一点,实验是关于拥有大量测试框架,并在这些参数上运行许多不同的参数,以便您可以找到最佳参数(值或值范围)
在实验过程中,您使用OpenGL投影3D模型,以使其适合当前的帧图像。您看到的内容照常渲染,但实际工作是通过在GPU中使用屏幕外缓冲区完成的。
到目前为止,我使用多处理(同时运行多个实例)运行实验,但是当我当时只运行一个实例时,我无法重现完全相同的数字,因为我发现了一个错误。 (现在正在进行相同的测试 - 但非常耗时)
但是我想知道当你同时运行多个实例时你是否真的可以信任GPU,或者GPU内存中的东西可能搞砸了
要简短地重新定义问题,我不想分享内容,但要确保不同的实例(在多处理的情况下,你提到的)不会相互影响(根本就不共享)< / p>