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。