首页 > 编程语言 >异构编程框架对比

异构编程框架对比

时间:2022-08-19 17:24:40浏览次数:59  
标签:异构 框架 编程 c++ cuda openmp

为了提高算法速度,基于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

相关文章

  • python基础-函数式编程
    概念:电脑运算视作数学上的函数计算高阶函数:map,reduce,filter无副作用,相同的参数调用时钟产生同样的结果闭包Closure例子:defcache(func):store={}#外部自由......
  • 第7章 面向对象编程(基础部分)
    ​7.1 类与对象oop     问题:编写一个程序,输入猫名字,显示该猫的名字,年龄,颜色     现有技术:单独定义变量、数组;缺点:不利于数据管理,效率低   ......
  • [Spring框架]IOC容器
    一、IOC容器1.什么是IOC?把对象创建和对象之间的调用过程,交给Spring进行管理使用目的:降低耦合度2.IOC底层?xml解析工厂模式反射IOC是一个容器,本质上就是一个对......
  • 阅读《计算机图形学编程(使用OpenGL和C++)》6
    同一个场景渲染不同的对象,一种简单的方法是为每个模型使用单独的缓冲区。每个模型都需要自己的模型矩阵,这样我们就需要为我们渲染的每个模型生成一个新的模型-视图矩阵。还......
  • 集合框架5-----Map体系
    Map体系集合参考视频:13.33Map集合概述哔哩哔哩bilibili  HashMap(),代码如下:importjava.util.HashMap;importjava.util.Map;​​publicclassHashDemo2{ ......
  • 集合框架6-----Collection工具类
    Collection工具类:packagecom.mokuiran.collection;​importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Collections;importjava.util.List;​/**......
  • 在线编程常见输入输出
    在线编程常见输入输出题目链接1.输入包括两个正整数a,b(1<=a,b<=1000),输入数据包括多组,输出a+b的结果#include<iostream>usingnamespacestd;intmain(){......
  • umi框架配置loader加载glb模型
    项目需要,第一次使用umi框架,加载glb模型一直失败,创建新的react项目测试加载模型,完全没问题。那问题就出在umi的配置上了,翻遍网络只有一位博主写到过如何配置loader加载glb......
  • JavaSE:第十七章:编程测试题
    练习:求1+2!+3!+…+20!的和longsum=0;for(inti=1;i<=20;i++){longtemp=1;for(intj=1;j<=i;j++){temp*=j;}sum+=......
  • 编程初体验
    HelloWorld编程初体验  具体步骤新建文件夹存放代码新建Java文件(文件后缀名.Java)编写代码publicclassHello{publicstaticvoidmain(string【】......