RSS
 

Паралелльное программирование и подсчёт числа ссылок

19 Ноя

Ну тут решил задаться вопросом – а можно ли использовать библиотеку mpi в пределах языка Си++ для осуществления какой -либо задачи, связанной с обработкой кода сайтов , либо запросов с этих сайтов, непосредственно с использованием распределённых вычислений.
Так как занимаюсь ещё между делом распаралелливанием своих программ, то вот решил применить свои знания непосредственно к интернету и задачам, которые могут появляться при непосредственном взаимодействии. Для наибольшей идеологической близости предположим , что linksoutboundarrays[200] является массивом, который содержит число ссылок с какого то ресурса. Например для их получения можно воспользоваться скриптом под питон. Скрипт ,конечно, должен обмениваться информацией непосредственно с кодом. Это конечно тоже – отдельная задача.Но в целом , ниже будет проиллюстрирована возможность использовать паралелльные вычисления для решения задач, связанных с сайтами. И в целом, на видео расположенном ниже, я постарался продемонстрировать всю специфику написания этой программы.

Ну а сам листинг программы приведён ниже.

#include "mpi.h"
#include "stdio.h"
#include "stdlib.h"
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc,char *argv[]){
 int n,numprocs,myid,sum=0;
 int RESULT,RES;
 int linksoutboundarrays[200];
 int i;	
	for(n=0;n<200;n++)
           linksoutboundarrays[n]=rand()%10;
 
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
 
   if(myid==0)
     {
        cout<<"\nenter number of considered";
	cout<<"\n site (less than 200)";
	cin>>n;
 
     }
MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);
  for(i=myid;i<n;i+=numprocs)
     {
 
      sum+=linksoutboundarrays[i];
 
     }
      RESULT=sum;
MPI_Reduce(&RESULT,&RES,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);
 
   if(myid==0)
     {
      cout<<"\nThe whole amount of all outbound links";
      cout<<"\nTo be equal to  ";
      cout<<RES;
 
     }
MPI_Finalize();
//cout<<"Thanks for your attention http://lifeisfine.ru";
}

Дальше остаётся все это дело скопировать в программу под названием seopar.cpp

откомпилировать всё , что получилось можно последовательностью комманд:

mpiCC -o name seopar.cpp

Дальше запускаем (для этого конечно надо настроить ssh между мастером и нодами в кластере) . Но в целом, если у вас установлена система Линукс на одноядерном компьютере, то можно всё равно счиать в параллельных потоках. В любом случае дальше следует ввести комманду (будем считать в четырёх потоках) :

mpirun -np 4 name

Ну и результат может быть например таким:

Естественно, что если вы захотите запустить программу на VStudio с подключённой mpi библиотекой, то код от этого менять не стоит. Конечно последовательность запуска будет другой. Но в целом всё остальное останется верно и в этом случае.В пределах этого поста я хотел продемонстрировать, как можно использовать паралелльные вычисления для решения задач для seo тематики. Конечно , приведённый пример носит лишь иллюстративный характер. В реальности ,ощутить всю мощь данного метода , можно лишь работая с очень большим числом сайтов, либо статистики . В целом ,как мне кажется, поисковые алкоритмы, связанные с ранжированием так или иначе используют распределённые вычисления. И в целом я сам двигаюсь в схожом направлении по ряду своих задач. Что ж, дальше продолжу исследовать поисковые алгоритмы и возможности применения распределенных вычислений к ним.

Google Bookmarks Reddit Technorati Yahoo My Web БобрДобр.ru Memori.ru МоёМесто.ru
 

Прокомментировать

 
 
 
Система Orphus

Enter your email address:

Delivered by FeedBurner

.