Spirals
1.0.0
螺旋腳本的目的是創建計算機生成的圖像。圖像映射到GPU,並提供CUDA支持。
以下是使用Python腳本創建的圖像的示例。他們的配置詳細信息可以在示例文件夾中找到,並附有其他示例。
為了運行Python腳本,需要安裝以下依賴項:
當在Intel I7-9700K上順序運行時,每個圖像大約需要23.5877081秒。
優化CGI算法的第一步是重建在GPU上並行使用的算法。這是通過使用@cuda.jit裝飾器來完成的,該裝飾器需要內核調用。在執行算法之前,代碼確定如何將像素數組映射到GPU硬件上。在算法中,計算每個像素的循環被i, j = cuda.grid(2)替換。如果i和j在圖像的邊界內,則該函數計算索引的像素顏色。沒有循環。並行的加速約為1,072,大約需要22.1124毫秒。
根據nvprof CLI工具(在Optimizations.txt中), [CUDA memcpy HtoD]約佔執行的36.09% 。為了繞過這一點,可以在設備上創建和初始化像素數組,而無需在CPU側內存中添加。 numba.cuda提供了一個函數device_array 。最小化主機到設備轉移的速度約為1.38,大約需要15.9563毫秒。
下一個優化利用了共享內存,一個線程共享的內存。由於內存是特定於塊的,因此讀取速度更快。因此,可以在共享內存上計算內存訪問操作。在操作之後,一個緩慢訪問全局像素陣列將完成並行化計算。共享內存使用的加速約為1.068,大約為14.9425毫秒。
從CPU算法到優化的GPU算法的總速度約為1,578。