想用CUDA做并行计算?如何评价CUDA、OpenCL、OpenMP、OpenACC等主流并行运算框架
除了换电脑,不知道可不可以用云计算
你都知道cuda了,那么为何不换个显卡呢
长期用的话不如换显卡上算。
拆了A卡换N卡啊
同问!
这个学期在学习高性能计算的课程中接触到这些,所以不是很懂,只能发个浅见,主要还是谈各个库的优点(我才不会说,因为我不太懂,所以还不知道什么缺点),如有错误,欢迎指正。
CUDA: 貌似上面的前辈们都已经总结了优缺点了,再叙述①遍吧。N家的多线程计算平台和API,支持GPU。关键词: 既有平台又是API语言支持: C/C++, Fortran优点:版本更行快,社区活跃, 支持GPU缺点:只支持N卡OpenCL: 不是很了解,搬运下wiki的内容吧。看这wiki的内容,感觉不明觉厉啊。异构平台,支持CPU,GPU, DSPs, FPGAs 等。在多进程方面使用 task-based 和 data-based parallelism。关键词: 平台 + API语言支持: C/C++优点: 跨好多平台啊缺点:版本更新慢OpenMP: 这是directive-based parallelism。在写完①般的代码后,转成多线程需要改动的地方不是很大,但只能支持shared memory(共享存储?),是①个管理线程级别的库。关键词: API语言支持: C/C++, Fortran优点:移植改动少,支持普遍(普通的gcc都支持)缺点:只支持shared memoryOpenACC: 支持CPU/GPU工作,从名字Accelerator就可以推断出,主要用于CPU代码向GPU的移植(?有待考证,我在课程中主要是这么用的。。。),更新方面其实也不快,需要注意编程技巧,否则代码会变慢。关键词: API语言支持: C/C++, Fortran优点: 移植简单缺点: 编译器啊,支持PGI,看计划有支持GCC,但还不知道什么时候才能发布OpenMPI: 消息传递接口库。支持分布式存储,适合大规模集群服务器。另外,需要手动管理数据的分布和消息的传递,需要重新修改代码。关键词: API语言支持: C/C++优点: 支持共享存储和分布式存储缺点: 模型复杂,需要重构代码。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息