Memory Leak in Zivid Application

Problem

메모리 누수로 인해 프로그램이 중지됩니다.

오류

Error: An OpenCL error occurred: Failed to enqueue kernel

Your OpenCL device (GPU or CPU) does not have enough resources to execute the current task.
Verify that there are no other programs running that consume memory from this OpenCL device.
Also check that your OpenCL device meets the minimum requirements, and if necessary upgrade it to a more capable model.

[CL_MEM_OBJECT_ALLOCATION_FAILURE]

Task ManagerPerformance 를 열고 메모리 용량을 확인하여 이를 확인할 수 있습니다. 프로그램을 실행하는 동안 사용됩니다.

동일한 프로세스 내에서 많은 Zivid 애플리케이션을 순차적으로 만들 때 메모리 누수

Possible cause

Zivid SDK 2.6 및 이전 버전의 경우 Zivid::Application destructor의 메모리 누수로 인해 동일한 프로세스 내에서 많은 애플리케이션을 순차적으로 만들 때 메모리 부족 오류가 발생할 수 있습니다. 아래 예제 코드는 메모리 누수를 일으킵니다.

while(true)
{
    Zivid::Application zivid;

    const auto settings = Zivid::Settings{ Zivid::Settings::Acquisitions{ Zivid::Settings::Acquisition{} } };
    zivid.connectCamera().capture(settings);
}

Solutions

Zivid SDK를 2.7 이상으로 업그레이드합니다. 또는 동일한 프로세스 내에서 여러 Zivid 응용프로그램을 순차적으로 만들지 않도록 코드를 수정합니다. 종종, 이것은 Zivid 애플리케이션을 루프 밖으로 이동시키는 것으로 요약됩니다.

Zivid::Application zivid;

while(true)
{
    const auto settings = Zivid::Settings{ Zivid::Settings::Acquisitions{ Zivid::Settings::Acquisition{} } };
    zivid.connectCamera().capture(settings);
}