同步功能:
<code>void __syncthreads()</code>
一直等待,直到線程塊中的所有線程都已達到此點為止,并且<code>__syncthreads()</code>之前的這些線程所做的全局和共享記憶體通路對塊中的所有線程均可見。
<code>__syncthreads()</code>用于協調同一個塊的線程之間的通信。 當一個塊中的某些線程通路共享或全局記憶體中的相同位址時,對于這些記憶體通路中的一些存在潛在的read-after-write, write-after-read, or write-after-write危險。 通過同步這些通路之間的線程可以避免這些資料危害。
<code>__syncthreads()</code>在條件代碼中是允許的,但前提條件是整個線程塊的條件相同,否則代碼執行可能會挂起或産生意想不到的副作用。
計算能力2.x及更高版本的裝置支援下面描述的<code>__syncthreads()</code>的三種變體:
<code>int __syncthreads_count(int predicate);</code>
與<code>__syncthreads()</code>具有相同的附加功能,它可以評估塊的所有線程的形參并傳回形參求值為非零的線程數。
<code>int __syncthreads_and(int predicate);</code>
與<code>__syncthreads()</code>具有相同的附加特性,它可以評估塊的所有線程的形參并傳回非零當且僅當形參對所有線程計算為非零值時才傳回非零值。
<code>int __syncthreads_or(int predicate);</code>
與<code>__syncthreads()</code>相同,額外的功能是它為塊的所有線程評估x形參并傳回非零當且僅當形參對其中任何線程計算為非零值時才傳回非零值。
<code>void __syncwarp(unsigned mask=0xffffffff);</code>
将導緻正在執行的線程等待,直到在掩碼中命名的所有warp通道在恢複執行之前執行<code>__syncwarp()</code>(具有相同的掩碼)。 在掩碼中命名的所有未指定的線程都必須使用相同的掩碼執行相應的<code>__syncwarp()</code>,否則結果未定義。
執行<code>__syncwarp()</code>可確定參與障礙的線程之間的記憶體排序。 是以,希望通過記憶體進行通信的warp中的線程可以存儲到記憶體中,執行<code>__syncwarp()</code>,然後安全地讀取其他線程存儲在warp中的值。
對于.target sm_6x或更低版本,掩碼中的所有線程必須在收斂中執行相同的<code>__syncwarp()</code>,且掩碼中所有值的并集必須與活動掩碼相等。 否則,行為是不确定的。
數學函數:
參考手冊列出了裝置代碼中支援的所有C / C ++标準庫數學函數以及僅在裝置代碼中支援的所有固有函數。
數學函數在相關時為這些函數提供準确性資訊。
紋理對象API:
tex1Dfetch():
使用整數紋理坐标x從由一維紋理對象texObj指定的線性存儲器區域取回。 tex1Dfetch()僅适用于非标準化坐标,是以隻支援邊界和鉗位尋址模式。 它不執行任何紋理過濾。 對于整數類型,它可以選擇将整數提升為單精度浮點。
