栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

《因特尔 oneAPI—开发工具,让开发更简单》

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《因特尔 oneAPI—开发工具,让开发更简单》

什么是英特尔oneAPI,以及我们如何去使用它


英特尔 oneAPI 是大量并且非常高质量的开发人员工具,而且,它还是免费使用的,OneAPI 是英特尔新的开发人员生态系统。英特尔 oneAPI 数据分析库(oneDAL)库旨在为批处理、在线和分布式计算模式中数据分析的所有阶段(预处理、转换、分析、建模、验证和决策制定)提供高度优化的算法构建模块,从而加快大数据分析速度。


英特尔oneAPI,是一个旨在简化CPU和CPU编程的框架。加速器使用现代C++功能来表达并行性,专注于研究该框架的性能。

Intel oneAPI对于程序员是极其的友好,作为一个统一的跨架构编程模型,可以有效地减少开发者因为要在CPU里做虚拟机,在FPGA中做各种压缩,还要在GPU中各种操作。如果CPU、FPGA和GPU等,仍然是各自为政,当应用需要扩容、硬件要升级时,成本都非常高。如果架构再发生变化,之前的付出,就全部白费了。


oneAPI是一个统一和简化的编程模型,它的诞生使命,在于简化跨多架构的开发过程(如CPU、GPU、FPGA、加速器)。

总的来说Intel oneAPI 只是一个编程模型、一个行业规范。


Intel API 有一系列的相关产品像Intel oneAPI base Toolkit、Intel oneAPI HPC Toolkit 以及Intel AI Analytics Toolkits是基于Intel oneAPI编程模型开发的产品。

这一系列的oneAPI 可以在Intel® oneAPI Toolkits中下载。


OneAPI的开发规范

oneAPI的开发规范包括一种跨架构的编程语言Date Parallel C++(简写为DPC++)。


DPC++

DPC++是基于大众熟悉的C和C++语言,而专门为oneAPI设计的主要的编程语言。融合了SYCL,从而可以支持在不同的CPU和加速器上进行数据的同步并行和异构编程,简化编程提高速度以及在不同硬件上的可重用性。


OneAPI的工具包

目前oneAPI的官网中有六个工具包,涵盖了高性能计算,物联网,渲染,人工智能,大数据分析这几个领域。

Intel® AI Analytic Toolkits这个工具包提供深度学习框架和高性能Python库,加速端到端机器学习和数据科学库。


串行程序
使用一个简单的fortran串行程序 main.f90 :
 

program test
integer i;
write(*,*) 'test-hello'
do i=1,6
print *,'i=',i
end do
end program


mpi并行程序
使用一个简单的mpi并行程序 testmpi.F90(这是intel 提供的示例):

program main
use mpi
implicit none
integer i, size, rank, namelen, ierr
character (len=MPI_MAX_PROCESSOR_NAME) :: name
integer stat(MPI_STATUS_SIZE)
all MPI_INIT (ierr)
call MPI_COMM_SIZE (MPI_COMM_WORLD, size, ierr)
call MPI_COMM_RANK (MPI_COMM_WORLD, rank, ierr)
call MPI_GET_PROCESSOR_NAME (name, namelen, ierr)
if (rank.eq.0) then
print *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name
do i = 1, size - 1
call MPI_RECV (rank, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (size, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
call MPI_RECV (namelen, 1, MPI_INTEGER, i, 1, MPI_COMM_WORLD, stat, ierr)
name = ''
call MPI_RECV (name, namelen, MPI_CHARACTER, i, 1, MPI_COMM_WORLD, stat, ierr)
print  *, 'Hello world: rank ', rank, ' of ', size, ' running on ', name
enddo  

else
call MPI_SEND (rank, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr)
call MPI_SEND (size, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD, ierr)
call MPI_SEND (namelen, 1, MPI_INTEGER, 0, 1, MPI_COMM_WORLD,ierr)
call MPI_SEND (name, namelen, MPI_CHARACTER, 0, 1, MPI_COMM_WRLD, ierr)
endif
call MPI_FINALIZE (ierr)
end

先从开始菜单的程序中选择intel oneAPI 2022下的intel oneapi command promopt,进入命令行,如此所有的编译环境就已经设置好了
编译串行程序:
ifort main.f90
可以加上 -O3 等等选项。
执行用:main.EXE


编译mpi并行程序:
ifort testmpi.f90 impi.lib
或者mpiifort testmpi.f90
可以加上 -O3 等等选项。
执行用:mpiexec -n 3 testmpi.exe
c++程序编译用命令:icl,mpicxx,方法是类似的,只是把源程序换成c++的。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号