Как я могу использовать интерфейс MPI C ++ для отправки параметров класса, таких как Boost :: program_options? - PullRequest
0 голосов
/ 08 января 2020

Я новичок в области вычислений с распределенной памятью, и в прошлом я реализовывал статистический алгоритм на C ++ на основе Intel Math Kernel Library. Теперь я хочу провести дальнейшее исследование, чтобы посмотреть, смогу ли я реализовать этот алгоритм на кластере. С точки зрения моей первой реализации на одном компьютере, я использую библиотеку boost::program_opionts для работы с пользовательскими входными аргументами следующим образом:

namespace LMMNET {
class Params {

 public:

  // for genotype input
  std::string famFile, predfamFile, auxfamFile;
  std::vector<std::string> bimFiles, bedFiles; // allows to input multiple files
  std::vector<std::string> predbimFiles, predbedFiles;
  std::vector<std::string> auxbimFiles, auxbedFiles;

  std::vector<std::string> removeIndivsFiles; // indivs to remove
  std::vector<std::string> auxremoveIndivsFiles;
  std::vector<std::string> predremoveIndivsFiles;
  std::vector<std::string> removeSnpsFiles, auxremoveSnpsFiles; // SNPs to remove
  std::vector<std::string> predremoveSnpsFiles; // Todo: implement the remove function in prediction files

  // for phenotype input
  std::string phenoFile; // allow only one phenotype file
  std::string auxphenoFile; // store aux phenotype data
  std::vector<std::string> phenoCols; // selected phenotype to analysis (Todo: allow multiple phenotype analysis)
  std::vector<std::string> auxphenoCols; // selected auxiliary phenotype to analysis
  bool phenoUseFam; // use Fam 6th col as phenotype

  // for covariate input
  std::string covarFile; // allow only one covariate file
  std::string predcovarFile;
  std::string auxcovarFile;
  std::vector<std::string> covarCols, auxcovarCols,
      precovarCols; // selected covariates to analysis (allow multiple Cols)

  ......
}}

В версии с распределенной памятью я хочу использовать несколько процессов для делать вычисления отдельно. В таком случае я должен позволить каждому процессу совместно использовать класс параметров. Я проверяю официальную документацию и думаю, что одним из решений является то, что я могу создать MPI_Type_create_struct. Но я не уверен, что есть лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...