Geolib3-MT 구성

Geolib3-MT는 RenderSettings 마디. 모든 Geolib3-MT 옵션은 sceneTraversal 표제.

sceneTraversal 매개 변수

maxCores

텍스트 필드

기본값 : 0

장면 탐색 단계에서 Geolib3-MT가 사용하는 논리 코어 수를 결정합니다.

이전 버전과 달리 Geolib3-MT는 내부 스레드 풀을 사용하여 장면 탐색 시간을 향상시킵니다. 다음 다이어그램은 Geolib3-MT와 이전 버전의 차이점을 보여줍니다. Katana.

기본값 0은 Geolib3-MT가 호스트 컴퓨터에서 사용 가능한 모든 논리 코어를 사용하게합니다.

노트 :  코어 수가 증가함에 따라 코어 Geolib3-MT 프로세싱 엔진이 확장되는 반면, Op 트리 내의 개별 Op는 동일한 스케일링 특성을 보이지 않을 수 있습니다. 스레드가 증가하면 장면 이동 시간이 증가 할 수 있습니다. 이 경우 새로운 프로파일 링 도구는 Katana 3.5를 사용하여 이러한 Op를 식별하고 해당 동작을 최적화 할 수 있습니다. Ops 표시도 마찬가지입니다. thread unsafe이것들은 Global Execution Lock (GEL) : 장면 순회 확장 성을 더욱 제한합니다.

opTreeOptimizations

확인란

기본값 : 꺼짐

켜면 Geolib3-MT는 사전 처리 단계를 수행하여 Op 트리의 토폴로지를 검사하여 잠재적으로 최적화 될 수있는 구문을 식별합니다. 한 가지 최적화는 동일한 유형의 Op 시퀀스를 해당 Op의 단일 인스턴스로 축소하는 것입니다. 여기에는 여러 가지 이점이 있습니다.

  • 함수 호출 오버 헤드 감소-장면 그래프 위치를 요리하기 위해 Op를 예약하는 데 드는 비용이 적습니다. 유사한 Ops 체인을 결합하여이 함수 호출 오버 헤드를 줄일 수 있습니다.
  • 메모리 풋 프린트 감소-10 Ops 체인이 10 개의 개별 쿡 결과를 차지하면 캐싱 서브 시스템이 생성되며, 성공적으로 축소 된 Op 체인은 위치 당 1 개의 쿡 결과 만 차지합니다.

가장 다운 스트림 Op에서 관찰 될 때 접힌 Ops 체인을 평가 한 결과는 Ops 체인이 평가 된 것과 같아야합니다.

노트 :  다음과 같은 업스트림 장면 그래프 결과를 쿼리하기위한 Op API 호출 getAttr()체인 내의 해당 Op 중 하나가 해당 속성을 설정 한 경우 접힌 체인 내에서 호출 될 때 예상 결과를 반환하지 않습니다. 이 경우 Op는 getOutputAttr() 대신에.

Op 트리 최적화 프로그램은 호출 할 경우 동일한 유형의 Op 체인을 축소하려고 시도합니다. GeolibSetupInterface::setOpsCollapsible()setup() 요구. 이 함수의 호출자는 Geolib3이 Op에 전달하는 속성의 이름을 지정해야합니다 cook() Op 인수로 호출하십시오. 이 속성에는 축소 된 Ops의 인수를 포함하는 정렬 된 속성 배열 (업스트림 Op에서 다운 스트림 Op로 정렬 됨)이 포함됩니다. 그러면 Op는이 배치 Op 인수를 적절하게 처리 할 수 있습니다.

verboseLogging

확인란

기본값 : 꺼짐

설정하면 Geolib3-MT 런타임 내에서 자세한 로깅이 활성화됩니다. 여기에는 장면 탐색 중 자세한 로깅 및 활성화 된 경우 Op 트리 최적화가 포함됩니다.

sceneTraversal.cache 매개 변수

Geolib3-MT에는 캐싱 하위 시스템의 동작을 제어하기위한 여러 설정이 포함되어 있습니다. 캐싱 하위 시스템은 이전에 요리 한 장면 그래프 위치를 저장하고 검색합니다. cook results. 이 설정은 RenderSettings 프로젝트별로 노드.

캐싱 및 메모리 사용 시간과 첫 번째 픽셀 간 시간의 균형은 장면 통과 시간 및 렌더링 성능에 큰 영향을 줄 수 있습니다. Geolib3-MT에서 제공 한 설정을 사용하여 렌더링의 장면 순회 단계에서 메모리 풋 프린트를 조정할 수 있습니다.

cacheEviction

확인란

기본값 : 켜기

끄면 쿡 결과가 캐시에서 제거되지 않습니다.

팁:  처음에는 캐시 제거를 비활성화하는 것이 반 직관적 인 것처럼 보일 수 있지만 적절한 장면이있을 수 있습니다. 렌더러에 필요한 장면과 데이터 구조가 메모리에 편안하게 들어 맞는 경우가 이에 해당합니다. 렌더링의 장면 생성 단계가 완료되면 Geolib3-MT의 쿠킹 결과가 차지하는 메모리 페이지에 더 이상 액세스 할 수 없으므로 디스크에 페이징 할 수 없으므로 더 큰 장면이라도 어느 정도 도움이 될 수 있습니다. 이러한 페이지는 렌더링하는 동안 주 메모리로 다시 페이징되지 않으므로 성능 저하가 최소화됩니다.

cacheSoftLimit

텍스트 필드

기본값 : 1,048,576

만약 cacheEviction 켜져 있습니다 cacheSoftLimit 가장 최근에 사용 된 제거 정책을 사용하여 항목을 제거하기 전에 로컬 캐시에 저장되는 쿡 결과 수를 제어합니다.

노트 :  이러한 항목은 로컬 캐시에서 제거 될 수 있지만 여러 다른 로컬 캐시 또는 중앙 (공유 캐시)간에 공유 될 수 있습니다. 이 경우 항목의 메모리가 즉시 회수되지 않습니다.

장면 그래프와 Op 트리의 최대 깊이를 고려하십시오. 그만큼 cacheSoftLimit 스레드별로 최근에 사용한 쿡 결과 캐시의 크기를 제어합니다. 이는 특정 스레드에서 요리 된 모든 위치 또는 요리 과정에서 액세스 한 모든 위치 (예 : getAttr())은 로컬 캐시에 저장되며 cacheSoftLimit.

collectionFrequency

텍스트 필드

기본 : 10,000

만약 cacheEviction 켜져 있습니다 collectionFrequency 수집주기 사이의 시간 (밀리 초)을 제어합니다. 수집주기 동안 Geolib3-MT는 이전 수집주기 이후에 제거 된 모든 캐시 항목을 수집하고 조리 결과가 더 이상 사용되지 않으면 조리 결과에 대한 메모리를 제거하고 회수합니다.

노트 :  감소 collectionFrequency 인터벌은 쿠킹 결과를보다 적극적으로 제거하여 메모리 풋 프린트를 줄이지 만 씬 통과 시간이 발생할 수 있습니다.

useCachePrepopulation

확인란

기본값 : 켜기

켜져있는 경우 Geolib3-MT는 내부 캐시를 채우는 장면 그래프 탐색을 수행합니다.

이 순회의 범위는 아래 설정으로 제어 할 수 있습니다. sceneTraversal.cachePrepopulation.

sceneTraversal.cachePrepopulation 매개 변수

preCookSourceOps

확인란

기본값 : 꺼짐

켜져 있으면 Geolib3-MT는 먼저 Op 트리에서 찾은 소스 Op (입력이없는 Op)에서 생성 된 장면을 완전히 트래버스합니다. 이 설정은 지오메트리 캐시 또는 기타 자산 유형으로로드 할 때 이점을 제공 할 수 있습니다.

노트 :  경험적 테스트에 따르면 소스 운영에는 일반적으로 일종의 정리 작업이 뒤 따릅니다. 결과적으로 이러한 경우 preCookSourceOps 필요한 것보다 더 많은 장면 그래프 위치를 생성하여 메모리 소비와 통과 시간을 늘릴 수 있습니다.

preCookKeyOps

확인란

기본값 : 켜기

켜져 있으면 Geolib3-MT는 Op 트리 내에서 병렬로 평가할 수있는 Op를 식별합니다.

이것의 예는 Merge Op :

Geolib3-MT는 각 분기를 병렬로 평가하므로 장면 이동 시간을 줄일 수 있습니다.

preCookAllLocations

확인란

기본값 : 켜기

켜면 Geolib3-MT는 나머지 모든 장면 그래프 위치를 쿠킹하여 장면을 완전히 확장합니다.

위 설정 값을 기반으로하여 cachePrepopulation 단계에서 Geolib3-MT 캐시는 전체 장면 그래프 또는 그 하위 섹션으로 미리 채워집니다. Geolib3-MT는 기존을 통해 렌더러 플러그인에 효율적으로 액세스 할 수 있도록 최적화되었습니다 FnScenegraphIterator 이 캐시에 대한 API. 이 캐시는 확장 가능한 스레드 안전 캐시이므로 렌더러 플러그인이이 캐시에 동시에 액세스하여 장면 빌드 단계의 성능을 향상시키는 것이 좋습니다.

경고:  Geolib3-MT 캐시가 완전히 채워지지 않은 경우 캐시 액세스 FnScenegraphIterator)로 인해 캐시 누락이 발생합니다. 이 경우 요청 된 위치는 호출 스레드를 사용하여 쿠킹됩니다.