Ну тут решил задаться вопросом – а можно ли использовать библиотеку 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 тематики. Конечно , приведённый пример носит лишь иллюстративный характер. В реальности ,ощутить всю мощь данного метода , можно лишь работая с очень большим числом сайтов, либо статистики . В целом ,как мне кажется, поисковые алкоритмы, связанные с ранжированием так или иначе используют распределённые вычисления. И в целом я сам двигаюсь в схожом направлении по ряду своих задач. Что ж, дальше продолжу исследовать поисковые алгоритмы и возможности применения распределенных вычислений к ним.