openmp

OpenMP fortran 学习

女生的网名这么多〃 提交于 2020-11-20 08:01:32
参考自TAMU的PPThttps://people.math.umass.edu/~johnston/PHI_WG_2014/OpenMPSlides_tamu_sc.pdf 什么是OpenMP 在C、C++和FORTRAN中用于编写共享内存并行程序的事实上的标准API OpenMP API 由以下组成: 编译器指令 Compiler Directives 运行时 子程序/函数 Runtime subroutines/functions 环境变量 Environment variables 例子: 代码 PROGRAM HELLO !$OMP PARALLEL PRINT *,”Hello World” !$ OMP END PARALLEL STOP END 编译指令 intel: ifort -openmp -o hi.x hello.f pgi: pgfortran -mp -o hi.x hello.f gnu: gfortran -fopenmp -o hi.x hello.f 运行指令 Export OMP_NUM_THREADS=4 ./hi.x FORTRAN指令格式: !$ OMP PARALLEL [clauses] : !$OMP END PARALLEL OpenMP 遵循Fork/Join模型 OpenMP程序从一个线程开始;主线程(线程0)

OpenMP初探

纵饮孤独 提交于 2020-11-19 05:43:31
OpenMP支持c、cpp、fortran,本文对比使用openmp和未使用openmp的效率差距和外在表现,然后讲解基础知识。 一、举例 1、使用OpenMP与未使用OpenMP的比较。 OpenMP是使用多线程的接口。 以c语言程序举例,即ba.c文件如下: #include <omp.h> #include <stdio.h> #include <stdlib.h> #include <windows.h> void Test( int n) { int j; for ( int i = 0 ; i < 100000000 ; ++ i) { // do nothing, just waste time j++ ; } printf( " %d, " , n); } int main( int argc, char * argv[]) { int i; #pragma omp parallel for for (i = 0 ; i < 100 ; ++ i) Test(i); system( " pause " ); return 1 ; } 在编译时,参数如下: 编译结果如下: 耗时:9s 注意 :我的电脑为双核,所以开启了4个线程分别运行 。 接下来,我通过window + R,输入msconfig,并进入boot中的高级设置,将我电脑的设置为单核,然后再运行同样的程序

通过 GCC 学习 OpenMP 框架

本秂侑毒 提交于 2020-11-19 05:20:43
OpenMP 框架是使用 C、C++ 和 Fortran 进行并发编程的一种强大方法。GNU Compiler Collection (GCC) V4.4.7 支持 OpenMP 3.0 标准,而 GCC 4.9.3 支持 OpenMP 4 标准。包括 VS 在内的其他编译器也支持 OpenMP。你可以学习使用 OpenMP 编译指示 (pragma),寻找对 OpenMP 提供的一些应用程序编程接口 (API) 的支持,并使用一些并行算法对 OpenMP 进行测试。本文将使用 GCC 5.4.0 作为首选编译器。 第一个 OpenMP 程序 入门:OpenMP 的一大特点就是您只需完成标准的 GCC 安装即可。支持 OpenMP 的程序必须使用 -fopenmp 选项进行编译。(也可以参考 在VS中使用OpenMP ) 让我们先从一个 Hello, World! 打印应用程序开始,它包括一个额外的编译指示. 清单1:使用了 OpenMP 的 Hello World 程序 1 #include <iostream> 2 #include<omp.h> 3 int main() 4 { 5 #pragma omp parallel 6 { 7 std::cout << " Hello World!\n " ; 8 } 9 } 在使用 g++ 编译和运行清单 1 中的代码时

MNN默认优化

前提是你 提交于 2020-10-27 11:14:08
MNN是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN已经在阿里巴巴的手机淘宝、手机天猫、优酷等20多个App中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT等场景下也有若干应用。 整体特点 轻量性 • 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。 • iOS平台:armv7+arm64静态库大小5MB左右,链接生成可执行文件增加大小620KB左右,metallib文件600KB左右。 • Android平台:so大小500KB左右,OpenCL库300KB左右,Vulkan库300KB左右。 通用性 • 支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用网络。 • 支持 149 个TensorflowOp、47 个CaffeOp、74 个 ONNX Op;各计算设备支持的MNN Op数:CPU 110个,Metal 55个,OpenCL 29个,Vulkan 31个。 • 支持iOS 8.0+、Android 4.3+和具有POSIX接口的嵌入式设备。 • 支持异构设备混合计算,目前支持CPU和GPU,可以动态导入GPU Op插件,替代CPU Op的实现。 高性能 • 不依赖任何第三方计算库