mpi并行朴素贝叶斯

本文介绍如何使用MPI进行并行计算来优化朴素贝叶斯分类器的性能,通过并行化处理提高大数据集的处理效率。
摘要由CSDN通过智能技术生成

mpi并行朴素贝叶斯

并行朴素贝叶斯

代码如下(示例):

#include <iostream>
#include <vector>
#include <cstdlib>
#include <time.h>
#include <mpi.h>
#include <cassert>
#include <cstring>
#include <cmath>

#define PI 3.1415926535898

//单条数据的长度
#define MAX_LINE 20
//数据集的长度(从1开始计算)
#define DATA_LEN 11000000

#define EIGEN_NUM 4

//float dataSet[DATA_LEN * EIGEN_NUM];	//数据集
float (*dataSet)=(float(*))malloc(sizeof(float)*DATA_LEN*EIGEN_NUM);  

int dataLen;//数据集的行数
double maleNum=0;//男性总数
double femaleNum=0;//女性总数

int main(int argc, char** argv) {
   

int i=0;
int j=0;
int my_rank;       //当前进程id
int comm_sz;       //进程的数目

    MPI_Init(&argc, &argv); 
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
    MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);

	double start, end,readTime;
	MPI_Barrier(MPI_COMM_WORLD); /* IMPORTANT */
	start = MPI_Wtime();

 //read data from process 0 
	if(my_rank==0)
	{
   
		char buf[MAX_LINE];		//buffer
		FILE *fp;				//file 
		int len;				//行字符个数

		//读取文件
		const char* fileLocation="//home//500.csv";
		fp = fopen(fileLocation,"r");
		if(fp  == NULL)
		{
   
			perror("fp  == NULL");
			exit (1) ;
		}

		//逐行读取及写入数组
		char *token;
		const char s[2] = ",";
		while(fgets(buf,MAX_LINE,fp) != NULL && i< DATA_LEN)
		{
   
			len = strlen(buf);
			//删去换行符
			buf[len-1] = '\0';
			//分割字符串
			token = strtok(buf, s);
			//继续分割字符串
			j = 0;
			while( token != NULL ) 
			{
   
				dataSet[i*EIGEN_NUM + j]=atof(token);
				token = strtok(NULL, s);
				j = j+1;
			 }
			i = i + 1;
		}
		dataLen=i;
		printf("%d行4列的数据读取完毕\n",dataLen);
		fclose(fp);

		//计算男女个数
		for(i=0;i<dataLen;i++){
   
			if(dataSet[i*4]==1){
   maleNum=maleNum+1;}
			if(dataSet[i*4]==2){
   femaleNum=femaleNum+1;}
                                 //printf("%d个男性\n",maleNum);
                                 //printf("%d个女性\n",femaleNum);
		
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
中文版mpi编程手册 写得很详细 都志辉编著 李三立审阅 陈渝刘鹏 校对 本书介绍目前最常见的并行程序—MPI并行程序的设计方法它适合高校三四年级本科 生非计算机专业研究生作为教材和教学自学参考书也适合于广大的并行计算高性能计 算用户作为自学参考书使用对于有FORTRAN和C编程经验的人员都可以阅读并掌握 本书的内容 首先介绍了并行程序设计的基础提供给读者进行并行程序设计所需要的基本知识然 后介绍了MPI的基本功能从简单的例子入手告诉读者MPI程序设计的基本过程和框架 这一部分是具有C或/FORTRAN串行程序设计经验的人员很容易理解和接受的接下来介绍 MPI程序设计的高级特征是已经掌握了MPI基本程序设计的人员进一步编写简洁高效的 MPI程序使用各种高级和复杂的MPI功能所需要的最后一部分介绍了MPI的最新发展和 扩充MPI-2 主要包括三个部分动态进程管理远程存储访问和并行文件读写 本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用并附以大量的图表和示 例性程序对程序的关键部分给出了讲解或注释读者若能将例子和对MPI调用的讲解结合 起来学习会取得更好的效果 本书的目的不仅是教给读者如何去编写从简单到复杂的MPI并行程序更重要的是 希望在学习本书之后在读者以后解决问题的过程中能够树立并行求解的概念使并行方 法真正成为广大应用人员和程序开发员手中的重要工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值