노드 그래프 개선

위치를 최대한 빨리 정리

그만큼 Prune 노드는 장면에서 오브젝트를 제거하는 데 사용됩니다. Geolib3-MT가 사용하는 처리 모델을 고려할 때 불필요한 장면 그래프 위치 / 객체가 장면에서 더 빨리 제거되므로 다운 스트림 Ops 및 Geolib3-MT 자체에서 필요한 작업이 줄어 듭니다. 이와 관련하여 Prune은 필터링 작업을 제공하여 다운 스트림 Ops에서 처리해야하는 장면 그래프의 크기를 줄이는 것으로 생각할 수 있습니다.

다음 예에서 자산은 AssetsIn 노드는 100 개의 위치의 장면 그래프를 생성합니다. 경계 상자는 ProcessBounds 100 개의 모든 위치에서 Op를 누른 다음이 장면에서 필요없는 장면 그래프 위치를 장면에서 잘라냅니다. 그러나 Prune 노드가 AssetsIn 노드, 처리 된 장면 그래프 ProcessBounds 절반 크기입니다. 이는 메모리와 처리 비용 절감 모두를 직접적으로 의미합니다.

장면 그래프 객체 / 위치를 가능한 빨리 정리하십시오. 그렇게하면 다운 스트림 Ops가 처리해야하는 위치 수가 감소하여 메모리 및 장면 처리 시간이 줄어 듭니다.

병렬 장면 처리 차원 이해

Geolib3-MT의 장면 그래프 처리 시스템은 병렬로 평가할 수있는 계산적으로 독립적 인 작업을 검색합니다. 대체로 Geolib3-MT는 두 가지 차원의 병렬 처리가 있습니다.

  • Scene Graph Parallelism -지연 / 지연 적으로 평가 된 장면 그래프 (예 : Katana장면 그래프에는 잠재적 인 작업이 포함됩니다. 장면 그래프 위치와 그 자식이 확장을 통해 알려진 후에 만 계산되므로 잠재적 일 수 있습니다.
    장면 그래프 위치의 각 자식은 부모 위치에만 의존하여 계산적으로 독립적 인 작업을 나타냅니다. 장면 그래프 위치가 계산되면 모든 하위 항목을 병렬로 계산할 수 있습니다.
  • Op Tree Parallelism -Op 트리의 하위 섹션을 병렬로 처리 할 수 있습니다. 이렇게하면 Geolib3-MT는 처리중인 Op 트리의 하위 섹션에서 장면을 완전히 확장합니다. 소스 연산과 같은 일부 연산은 자연적으로 병렬화 가능입력이없는 Ops). 각 Op 트리 분기가 독립적으로 계산 가능한 Merge Ops와 같은 일부 구문도 자연스럽게 병렬화 할 수 있습니다.

Geolib3-MT에 처리에 대해 알려진 계산 독립적 작업의 최대 백 로그를 제공하기 위해 두 차원 모두에서 병렬 처리를 이용하십시오.

계산에 독립적 인 장면 그래프에 병합 분기 사용

의 각 지점 Katana 노드 그래프는 병합 노드를 사용하여 결합 된 독립적 인 장면 그래프를 생성하는 것으로 생각할 수 있습니다.

Merge 노드의 각 분기는 계산에 독립적 인 장면 그래프를 나타내므로 Geolib3-MT는이 사실을 이용하여 각 분기를 병렬로 확장합니다. 이 동작이 바람직하지 않은 경우 RenderSettings 마디. 이와 같이 Op 트리 분기를 병렬로 확장하면 다음과 같은 여러 가지 사항을 고려해야합니다.

  • 하나의 큰 장면 그래프가 아니라 각각 하나 이상의 연결된 Ops에 의해 생성 된 여러 개의 작은 장면 그래프로 장면 그래프를 고려하십시오.
  • 장면 그래프에 존재하는 데이터 종속성과이를 생성하는 책임이있는 노드를 고려하십시오. 여러 독립 브랜치에서 사용 가능한 병렬 처리를 활용하기 위해 노드 그래프를 리팩토링 할 기회가 있습니까?
  • 여러 위치에서 작동해야하는 CPU 바운드 작업을 식별하십시오. Geolib3-MT는 독립적 인 위치를 병렬로 처리하여 장면 그래프 자체에서 사용할 수있는 병렬 처리를 활용하지만 CPU 바인딩 된 작업은 CPU 바인딩 된 노드와 ops를 복제하여 병렬로 평가할 수도 있습니다.

이 예제에서는 3 개의 씬 그래프가 Alembic_In 노드는 병렬로 생성되며 CPUBoundOperation 노드는 장면 그래프로만 제한됩니다.

리팩토링 된 노드 그래프 버전의 예 CPUBoundOperation 는 각 분기 내에 배치되므로 병렬 처리를 두 차원 (장면 그래프 및 Op 트리)에서 모두 활용할 수 있습니다.

접을 수있는 노드 / 작업 체인을 함께 배치

특정 Op에서 씬 그래프 위치를 처리하려면 Geolib3-MT는 다음을 포함하여 여러 단계를 수행해야합니다.

  • 위치의 종속성 (상위 위치 및 해당 속성을 상속하는 위치)도 평가되었습니다.
  • 장면 그래프 위치 처리 결과를 저장하기 위해 메모리가 할당되었습니다.
  • 위치를 쿠킹하기 전에 상속 된 장면 그래프 속성이 적용되었습니다.
  • Op 's cook 기능을 사용하여 실제 위치를 평가하십시오.

이 프로세스는 효율적이지만 비용이 들지 않습니다. 종속성을 확인하려면 중앙 쿡 결과 저장소를 확인해야하며, 메모리 할당에는 (잠재적) 시스템 호출이 필요하며 쿡 호출은 함수를 호출하기 위해 약간의 오버 헤드가 발생합니다 ( cook() 호출은 장면 그래프를 변경하지 않습니다).

이를 염두에두고, 쿡 수를 줄이기 위해 수행 할 수있는 모든 것은 장면 그래프 처리 시간을 개선하고 메모리 사용을 줄일 수 있습니다.

Geolib3-MT의 새로운 Op 트리 최적화 기능은 전처리 단계를 수행하여 Op 트리의 토폴로지를 분석합니다. 그러한 최적화 중 하나는 동일한 유형의 Ops 체인이 무너지는 것입니다. 예를 들어, 일련의 4 AttributeSet 동일한 위치 세트에서 활동하는 작전은 하나로 축소 될 수 있습니다. AttributeSet 해당 위치 세트에서 작동합니다. 이는 캐싱 서브 시스템의 쿡 결과 수를 줄여서 장면 순회의 메모리 풋 프린트를 줄입니다.