『壹』 MATLAB绘制曼德勃罗Mandelbrot集,并利用GPU加速
本文主要阐述了如何利用 MATLAB 绘制曼德勃罗集(Mandelbrot set),并结合 GPU 加速技术进行效率优化。在进行代码编写时,参考了 MATLAB 帮助文件和网页资源,以实现不同计算策略的对比分析。
在硬件配置方面,本机装备 AMD Ryzen5 3600 CPU 和 RTX 3060 GPU,通过调整 maxIterations、gridSize、xlim、ylim 参数,生成了曼德勃罗集图像。在一系列实验中,计算耗时从 9.89s 下降至 0.068s,性能提升达到了惊人的 144.6 倍。
为了进一步增强图像的视觉效果,我们使用了 colormap 函数,提供了包括 parula、jet、hsv 等在内的多种颜色方案供选择。在特定情况下,应用对数运算(count = log(count))可以提高图像对比度,不过未采用时的图像效果显示,周围小分支的清晰度有所下降。
与 GPU 相关的代码文件,如 pctdemo_processMandelbrotElement.cu、.m、.ptx 等,位于 MATLAB 安装路径内。在使用 GPU 进行计算时,可能会遇到有关库重编译的警告和错误信息,例如:“The CUDA driver must recompile the GPU libraries because your device is more recent than the libraries. Recompiling can take several minutes. Learn more.”
官方解答指出,该问题与 CUDA 9.1 和新 Turing 代 GPU 相关,通常无需采取任何行动,只需忽略初始的警告或错误信息即可。在某些情况下,可能会遇到与 cublas 和 cuDNN 相关的一次性错误。一个永久性的解决办法是在启动脚本中加入以下内容:
将如下语句加入到 MATLAB 启动脚本中,例如 Startup.m 文件内:
这将帮助屏蔽“DeviceLibsNeedsRecompiling”警告。然而,即便如此,在部分场景中,警告信息仍然可能出现。
除了上述内容,实验还探索了使用不同迭代公式的曼德勃罗集生成,展示了多样化结果。