Nilesh Patra
2022-08-01 06:40:01 UTC
Dear arm porters,
I was trying to port bolt-lmm package, which currently builds only on
amd64, i386
and ppc to more archs - particularly arm. I am trying to workaround
amd64-specific
SIMD intrinsics with the libsimde-dev (SIMDEverywhere package) - debian
wiki here[1]
I've committed the patch I used here[2]. Along with this, I had
added in "-DSIMDE_ENABLE_OPENMP -fopenmp-simd" to CFLAGS and CXXFLAGS in
the box I built this in.
I am able to get it building on arm64 box, but it does
not seem to run the right way. It seems to trigger the bolt command
again while trying to
make initial guess - don't know why.
I used the same command as used in autopkgtest to test it out. You can
find the sample correct
output for this here[3]
Log pasted at the end of the e-mail. I'd appreciate any help.
[1]: https://wiki.debian.org/SIMDEverywhere
[2]:
https://salsa.debian.org/med-team/bolt-lmm/-/commit/50badf3338741e739b2bb591a8930d177fa6de6c
[3]:
https://ci.debian.net/data/autopkgtest/unstable/amd64/b/bolt-lmm/24156452/log.gz
--
Best,
Nilesh
On arm64 box:-
$ ./bolt \
--bfile=EUR_subset \
--phenoFile=EUR_subset.pheno2.covars \
--exclude=EUR_subset.exclude2 \
--phenoCol=PHENO \
--phenoCol=QCOV1 \
--modelSnps=EUR_subset.modelSnps2 \
--reml \
--numThreads=2
+-----------------------------+
| ___ |
| BOLT-LMM, v2.3.6 /_ / |
| October 29, 2021 /_/ |
| Po-Ru Loh // |
| / |
+-----------------------------+
Copyright (C) 2014-2021 Harvard University.
Distributed under the GNU GPLv3 open source license.
Boost version: 1_74
Command line options:
./bolt \
--bfile=EUR_subset \
--phenoFile=EUR_subset.pheno2.covars \
--exclude=EUR_subset.exclude2 \
--phenoCol=PHENO \
--phenoCol=QCOV1 \
--modelSnps=EUR_subset.modelSnps2 \
--reml \
--numThreads=2
Setting number of threads to 2
fam: EUR_subset.fam
bim(s): EUR_subset.bim
bed(s): EUR_subset.bed
=== Reading genotype data ===
Total indivs in PLINK data: Nbed = 379
Total indivs stored in memory: N = 379
Reading bim file #1: EUR_subset.bim
Read 54051 snps
Total snps in PLINK data: Mbed = 54051
Reading exclude file (SNPs to exclude): EUR_subset.exclude2
Excluded 47959 SNP(s)
Reading list of SNPs to include in model (i.e., GRM):
EUR_subset.modelSnps2
WARNING: SNP has been excluded: rs2176153
WARNING: SNP has been excluded: rs77036651
WARNING: SNP has been excluded: rs189917831
WARNING: SNP has been excluded: rs76452819
WARNING: SNP has been excluded: rs77203822
Included 1331 SNP(s) in model in 2 variance component(s)
WARNING: 10420 SNP(s) had been excluded
Breakdown of SNP pre-filtering results:
1331 SNPs to include in model (i.e., GRM)
0 additional non-GRM SNPs loaded
52720 excluded SNPs
Allocating 1331 x 380/4 bytes to store genotypes
Reading genotypes and performing QC filtering on snps and indivs...
Reading bed file #1: EUR_subset.bed
Expecting 5134845 (+3) bytes for 379 indivs, 54051 snps
Total indivs after QC: 379
Total post-QC SNPs: M = 1331
Variance component 1: 660 post-QC SNPs (name: 'chr21')
Variance component 2: 671 post-QC SNPs (name: 'chr22')
Time for SnpData setup = 0.630153 sec
=== Reading phenotype and covariate data ===
Read data for 373 indivs (ignored 0 without genotypes) from:
EUR_subset.pheno2.covars
Number of indivs with no missing phenotype(s) to use: 369
NOTE: Using all-1s vector (constant term) in addition to specified
covariates
Using quantitative covariate: CONST_ALL_ONES
Number of individuals used in analysis: Nused = 369
Singular values of covariate matrix:
S[0] = 19.2094
Total covariate vectors: C = 1
Total independent covariate vectors: Cindep = 1
=== Initializing Bolt object: projecting and normalizing SNPs ===
Number of chroms with >= 1 good SNP: 2
Average norm of projected SNPs: 368.000000
Dimension of all-1s proj space (Nused-1): 368
Time for covariate data setup + Bolt initialization = 0.0125201 sec
Phenotype 1: N = 369 mean = -0.000706532 std = 1.02606
Phenotype 2: N = 369 mean = 1.53117 std = 0.499705
=== Estimating variance parameters ===
=== Making initial guesses for phenotype 1 ===
Using 3 random trials
+-----------------------------+
| ___ |
| BOLT-LMM, v2.3.6 /_ / |
| October 29, 2021 /_/ |
| Po-Ru Loh // |
| / |
+-----------------------------+
Copyright (C) 2014-2021 Harvard University.
Distributed under the GNU GPLv3 open source license.
Boost version: 1_74
Command line options:
(null)
ERROR: Use exactly one of the --bfile, --bfilegz, or --fam,bim,bed input
formats
Aborting due to error processing command line arguments
For list of arguments, run with -h (--help) option
I was trying to port bolt-lmm package, which currently builds only on
amd64, i386
and ppc to more archs - particularly arm. I am trying to workaround
amd64-specific
SIMD intrinsics with the libsimde-dev (SIMDEverywhere package) - debian
wiki here[1]
I've committed the patch I used here[2]. Along with this, I had
added in "-DSIMDE_ENABLE_OPENMP -fopenmp-simd" to CFLAGS and CXXFLAGS in
the box I built this in.
I am able to get it building on arm64 box, but it does
not seem to run the right way. It seems to trigger the bolt command
again while trying to
make initial guess - don't know why.
I used the same command as used in autopkgtest to test it out. You can
find the sample correct
output for this here[3]
Log pasted at the end of the e-mail. I'd appreciate any help.
[1]: https://wiki.debian.org/SIMDEverywhere
[2]:
https://salsa.debian.org/med-team/bolt-lmm/-/commit/50badf3338741e739b2bb591a8930d177fa6de6c
[3]:
https://ci.debian.net/data/autopkgtest/unstable/amd64/b/bolt-lmm/24156452/log.gz
--
Best,
Nilesh
On arm64 box:-
$ ./bolt \
--bfile=EUR_subset \
--phenoFile=EUR_subset.pheno2.covars \
--exclude=EUR_subset.exclude2 \
--phenoCol=PHENO \
--phenoCol=QCOV1 \
--modelSnps=EUR_subset.modelSnps2 \
--reml \
--numThreads=2
+-----------------------------+
| ___ |
| BOLT-LMM, v2.3.6 /_ / |
| October 29, 2021 /_/ |
| Po-Ru Loh // |
| / |
+-----------------------------+
Copyright (C) 2014-2021 Harvard University.
Distributed under the GNU GPLv3 open source license.
Boost version: 1_74
Command line options:
./bolt \
--bfile=EUR_subset \
--phenoFile=EUR_subset.pheno2.covars \
--exclude=EUR_subset.exclude2 \
--phenoCol=PHENO \
--phenoCol=QCOV1 \
--modelSnps=EUR_subset.modelSnps2 \
--reml \
--numThreads=2
Setting number of threads to 2
fam: EUR_subset.fam
bim(s): EUR_subset.bim
bed(s): EUR_subset.bed
=== Reading genotype data ===
Total indivs in PLINK data: Nbed = 379
Total indivs stored in memory: N = 379
Reading bim file #1: EUR_subset.bim
Read 54051 snps
Total snps in PLINK data: Mbed = 54051
Reading exclude file (SNPs to exclude): EUR_subset.exclude2
Excluded 47959 SNP(s)
Reading list of SNPs to include in model (i.e., GRM):
EUR_subset.modelSnps2
WARNING: SNP has been excluded: rs2176153
WARNING: SNP has been excluded: rs77036651
WARNING: SNP has been excluded: rs189917831
WARNING: SNP has been excluded: rs76452819
WARNING: SNP has been excluded: rs77203822
Included 1331 SNP(s) in model in 2 variance component(s)
WARNING: 10420 SNP(s) had been excluded
Breakdown of SNP pre-filtering results:
1331 SNPs to include in model (i.e., GRM)
0 additional non-GRM SNPs loaded
52720 excluded SNPs
Allocating 1331 x 380/4 bytes to store genotypes
Reading genotypes and performing QC filtering on snps and indivs...
Reading bed file #1: EUR_subset.bed
Expecting 5134845 (+3) bytes for 379 indivs, 54051 snps
Total indivs after QC: 379
Total post-QC SNPs: M = 1331
Variance component 1: 660 post-QC SNPs (name: 'chr21')
Variance component 2: 671 post-QC SNPs (name: 'chr22')
Time for SnpData setup = 0.630153 sec
=== Reading phenotype and covariate data ===
Read data for 373 indivs (ignored 0 without genotypes) from:
EUR_subset.pheno2.covars
Number of indivs with no missing phenotype(s) to use: 369
NOTE: Using all-1s vector (constant term) in addition to specified
covariates
Using quantitative covariate: CONST_ALL_ONES
Number of individuals used in analysis: Nused = 369
Singular values of covariate matrix:
S[0] = 19.2094
Total covariate vectors: C = 1
Total independent covariate vectors: Cindep = 1
=== Initializing Bolt object: projecting and normalizing SNPs ===
Number of chroms with >= 1 good SNP: 2
Average norm of projected SNPs: 368.000000
Dimension of all-1s proj space (Nused-1): 368
Time for covariate data setup + Bolt initialization = 0.0125201 sec
Phenotype 1: N = 369 mean = -0.000706532 std = 1.02606
Phenotype 2: N = 369 mean = 1.53117 std = 0.499705
=== Estimating variance parameters ===
=== Making initial guesses for phenotype 1 ===
Using 3 random trials
+-----------------------------+
| ___ |
| BOLT-LMM, v2.3.6 /_ / |
| October 29, 2021 /_/ |
| Po-Ru Loh // |
| / |
+-----------------------------+
Copyright (C) 2014-2021 Harvard University.
Distributed under the GNU GPLv3 open source license.
Boost version: 1_74
Command line options:
(null)
ERROR: Use exactly one of the --bfile, --bfilegz, or --fam,bim,bed input
formats
Aborting due to error processing command line arguments
For list of arguments, run with -h (--help) option