前兩天在寫**的時候,想到這個問題,我的程式gpu要把結果輸出到深度緩衝區,然後交給cpu查詢,
gpu不是通用處理器,通常的**p是不合適的。又仔細讀了opengl ext spec,發現nvidia的occlusion query考慮到了這個問題,是我一直沒有讀到,還是把這些天的一些簡單筆記寫一下。
標準opengl
的只提供了兩種同步的機制:
glflush, glfinish.
flush,
只是向user
保證可以在有限的時間裡完成命令,但是這個時間無法確定,它只是乙個適度的工具;
finish,
會stall cpu
的執行,直到所有
pending
的圖形命令執行完成。
而nv_fence
擴充套件則提供了乙個中間的尺度,既能夠保證
finish
一部分的命令,又提供了判斷已給圖形命令是否完成的能力。
乙個有用的應用就是檢測
gpu完成
gl命令的效能,如下示例:
start = getcurrenttime();
updatetextures();
glsetfencenv(texture_load_fence, gl_all_***pleted_nv);
drawbackground();
glsetfencenv(draw_background_fence, gl_all_***pleted_nv);
drawcharacters();
glsetfencenv(draw_characters_fence, gl_all_***pleted_nv);
glfinishfencenv(texture_load_fence);
textureloadend = getcurrenttime();
glfinishfencenv(draw_background_fence);
drawbackgroundend = getcurrenttime();
glfinishfencenv(draw_characters_fence);
drawcharactersend = getcurrenttime();
printf("texture load time = %d/n", textureloadend - start);
printf("draw background time = %d/n", drawbackgroundend - textureloadend);
printf("draw characters time = %d/n", drawcharacters - drawbackgroundend);
組成 GPU與CPU的比較
不管是cpu還是gpu都是很高速的裝置,然而從主存中取資料會很慢很慢,為了充分利用高速裝置,二者都使用了快取,程式設計一定要考慮的是電腦程式的區域性性 locality 的基本屬性 時間區域性性與空間區域性性。多核時代和gpu並行運算時代來臨,另外乙個影響程式執行的速度的關鍵因素 快取一致性 cac...
GPU與CPU簡單區別
gpu的運算速度取決於僱了多少小學生,cpu的運算速度取決於請了多麼厲害的教授。教授處理複雜任務的能力是碾壓小學生的,但是對於沒那麼複雜的任務,還是頂不住人多。當然現在的gpu也能做一些稍微複雜的工作了,相當於公升級成初中生高中生的水平。但還需要cpu來把資料喂到嘴邊才能開始幹活,究竟還是靠cpu來...
CPU與GPU效能的比較報告
在一塊p100gpu 視訊記憶體16276mib 效能如下 由上圖可見,隨著程序數目的增大耗時會線性增加。當然,如果rt滿足要求,卡上可以同時部署其他任務。intel r xeon r cpu e5 2620 v3 2.40ghz 24核伺服器下。tf預設為盡可能的占用所有的核,真正的neuron服...