多核程序设计

一. 实验目的:
1.掌握Microsoft Visual Studio 2012配置OpenMP的方法;
2.掌握Microsoft Visual Studio 编写编译简单OpenMP程序的方法。
二. 实验内容:
1.配置visual studio 2012使支持openMP;配置环境变量,确定线程的数目为4(有3种配置工作线程的方法,分别掌握)。P26—30
2.使用parallel指令多线程并行程序实现如下文字的输出:51
Hello, openMP!当前工作线程号为?,当前工作总线程数为2
Hello, openMP!当前工作线程号为?,当前工作总线程数为2
I’m XXX.当前工作线程号为0,当前工作总线程数为1
We will become friends. 当前工作线程号为?,当前工作总线程数为3
We will become friends. 当前工作线程号为?,当前工作总线程数为3
We will become friends. 当前工作线程号为?,当前工作总线程数为3
3.使用parallel for指令求z[i] = x[i]+y[i],输出z[i]。P72
4. 比较运行时间差别;对比输出结果。 P4,P5
5. 使用sections和section,及parallel for两种方式多线程输出100以内的所有素数。p79

2.源代码
#include
#include
int main() {
#pragma omp parallel num_threads(2) //4个工作线程
{
printf(“Hello, openMP!当前工作线程号为 = %d”,omp_get_thread_num());
printf(“当前工作总线程数为 = %d\n”, omp_get_num_threads());
}
return 0;}

结果截图:

2-2源代码:
#include"stdafx.h"
#include
#include
int main() {

printf("I'm RenHui当前工作线程号为 = %d",omp_get_thread_num()); 
printf("当前工作总线程数为= %d\n", omp_get_num_threads()); 

printf(“并行区开始\n”);
return 0;}

截图:

2-3
源代码:
#include"stdafx.h"
#include
#include
int main() {
#pragma omp parallel num_threads(3)
{printf(“We will become friends. 当前工作线程号为 = %d\t,”,omp_get_thread_num());
printf(“当前工作总线程数为= %d\n”, omp_get_num_threads());

}
return 0;}
结果解图

3.0
源代码:
#include"stdafx.h"
#include
#include
int main() {
int z[3];
int x[3]={1,2,3};
int y[3]={8,5.2};
#pragma omp parallel for
for(int i=0;i<3;i++){
z[i]=x[i]+y[i];
printf("%d",z[i]);
}
return 0;
}
结果截图:

你可能感兴趣的:(多核程序设计)