Open wistaria opened 3 years ago
test/blasのビルドにおいて、gemm.hppでエラーが起きている。 https://github.com/t-sakashita/rokko/runs/2813815307
/home/runner/work/rokko/rokko/rokko/blas/gemm.hpp:38:163: error: cannot convert ‘std::complex<double>*’ to ‘const double*’ for argument ‘7’ to ‘void cblas_zgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE, blasint, blasint, blasint, const double*, const double*, blasint, const double*, blasint, const double*, double*, blasint)’
cblas_ ## NAMES (order, trans_a, trans_b, m, n, k, &alpha, lapack::complex_cast(a), lda_a, lapack::complex_cast(b), lda_b, &beta, lapack::complex_cast(c), lda_c); \
^
/home/runner/work/rokko/rokko/rokko/blas/gemm.hpp:42:1: note: in expansion of macro ‘BLAS_GEMM_IMPL’
BLAS_GEMM_IMPL(zgemm, std::complex<double>);
^~~~~~~~~~~~~~
上記のエラーは、clang@Macでは起きない。 g++@Macでのコンパイルでは起きましたか? @wistaria
エラー内容は、7番目の引数alpha
を、std::complex<double>*
からconst double*
へ変換できない、ということ。
まず、rokko::lapack::complex_cast
を用いればよいか?
const_cast
を用いれば良いか?
https://en.cppreference.com/w/cpp/language/const_cast
5f06aecf3add106ee21f8f6e23f6407b23cae0ed
githubのCIの環境を、Macで再現して、作業を楽にする。 エラーが出た箇所は、cblasを逐次で用いている。 cblasをg++でビルドしたもので、実行してみる。
Macでの再現環境の作り方
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.hostname = "bionic18"
config.vm.synced_folder ENV["HOME"], "/home/vagrant/host"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
config.vm.provision "shell", inline: <<-SHELL
cp -fp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
echo 'Asia/Tokyo' > /etc/timezone
SHELL
end
vagrant up
を実行。仮想マシンが起動するvagrant ssh
で仮想マシンにログインし、https://github.com/t-sakashita/rokko/blob/develop/.github/workflows/build.yml の内容を実行エラーは再現できた
できれば、修正もお願いします。
@t-sakashita コンパイルは通りました d4664e0abf624f8aa932248a7dc3bd32c984b785 https://github.com/t-sakashita/rokko/actions/runs/954290281
仮想環境でのbuild.yml
の実行は、どのコマンドで行うのでしょうか?
とりあえず build.yml の中の
sudo apt-get update && sudo apt-get -y install build-essential cmake gfortran mpi-default-dev libboost-all-dev libopenblas-dev liblapack-dev liblapacke-dev libscalapack-mpi-dev trilinos-all-dev
mkdir -p build && cd build && source rokko/rokkoenv.sh && cmake -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_C_COMPILER=mpicc -DCMAKE_Fortran_COMPILER=mpif90 -DMPIEXEC_PREFLAGS="--oversubscribe" ..
make
ctest
を copy & paste して実行しました
https://github.com/t-sakashita/rokko/actions/runs/666932530 92% tests passed, 20 tests failed out of 241