为了提高算法速度,基于openmp的多核编程已无法满足要求,最近调研了异构的方法。调研的目标是选择在windows平台上visual studio上使用,采用c和c++语言。调研的框架有openmp,openacc,cuda,thrust,amp c++,dpc++,sycl,opencl,arrayfire。尽管不情愿,但最终选择了cuda。
因为(1)openmp的gpu编程对openmp的版本要求很高,visual studio只支持openmp3.0,不支持gpu
(2)openacc的思路和openmp类似,可以在原来cpu编程的基础上添加指令来支持gpu,但是openaac不支持windows平台。
(3) cuda的资料很多,但采用了C语言的方式,而不是c++,看起来很丑,尽量不选,最后没有更好的,还是选择了它。
(4)thrust是c++版的cuda,使用起来很方便,但是在Windows平台上不行。
(5)amp c++是微软提出的异构编程框架,基本被淘汰了,在visual studio2022中已经被标记为过时。
(6)dpc++是intel提出的异构编程框架,集成在了oneapi上,满足sycl的标准,又增加了新的东西,成了sycl2020的标准,可以很好地在Windows上用,与visual studio 整合很好,但是不支持cuda,支持Intel gpu和amd
(7)sycl最早由codeplay公司实现,他们开发的computecpp是最早开发符合sycl标准的编译器。看到2022年6月的报道,这个公司很快要被intel收购了。
(8)opencl是低层次的异构框架,使用起来很复杂,相关的资料少,对cuda的支持也不好。
(9)arrayfire是高层次首相的异构框架,做了更多的封装,不够灵活。
最终无奈的选择了cuda。
标签:异构,框架,编程,c++,cuda,openmp From: https://www.cnblogs.com/oliver2022/p/16602714.html