2015-10-01 113 views
1

我想了解optix中存儲在堆棧中的內容。什麼在堆棧中?

據我所知,我們設置每個上下文的堆棧大小,和一個堆疊被附接到在射線生成程序的每個線程。 當光線啓動時,線程攜帶堆棧,存儲光線的有效載荷。

我認爲,當我們做遞歸光線跟蹤器,例如,會發生堆棧溢出,因爲會有太多的有效載荷,以保持在內存中。但現在,我有一個帶有浮動+ 3單位有效載荷的輻射射線的程序,以及只有浮動的陰影射線,並且只有一個反彈。但是,我的堆棧需要更大,以避免堆棧溢出。當然,這僅僅是我的兩個有效載荷。

所以我想,在棧中還有什麼? (我的意思是在一般情況下,不會在我的具體情況。什麼是存儲在堆棧中除射線(S)的有效載荷(S)(如果是)?例如,我們還存儲有關點擊信息?有關現場樹嗎?我們跟蹤哪些程序調用當前射線?)

感謝您的幫助!

回答

1

回答了NVIDIA的主板here

德特勒夫Roettger寫道

「堆棧也被用來保存和恢復各地 函數調用(如rtTrace或可調用程序)生存變量。這就是 背景爲OptiX編程中的一個性能建議 指南開始於儘量減少通話期間的實時狀態 程序中的rtTrace

更多信息請參見§3.1.3 - Global State的OptiX Programming guide

記住Optix的程序是完全成熟的CUDA內核結合在一起。因此堆棧內存也用於普通執行需求(即使在CUDA版本之間,數量可能也會有所不同)。