Я новичок в области вычислений с распределенной памятью, и в прошлом я реализовывал статистический алгоритм на 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
. Но я не уверен, что есть лучшее решение.