Eigen3ライブラリのインストール(ソースコードを用いたインストール)(Build Tools for Visual Studio を使用)と使用方法(Windows 上)

Windows上でのEigen 3ライブラリのインストールと使用方法を説明している.まず,GitHubからソースコードをクローンし,CMakeを使用してビルド環境を構築する.その後,Visual Studioを用いてビルドとインストールを行い,システム環境変数を設定する. 次に,Eigen 3の動作確認のためのC++プログラム例を提示している.このプログラムは3x3行列と3次元ベクトルを使用して,行列の乗算,転置,逆行列計算,固有値・固有ベクトル計算,LU分解などの基本的な線形代数演算を実行する.Visual Studio の x64 Native Tools コマンドプロンプト で cl を使用してプログラムをコンパイルし実行する.これにより,Eigen 3ライブラリの基本的な機能と使用方法を確認できる.

目次

  1. 前準備
  2. Eigen3ライブラリのインストール(ソースコードを用いたインストール)(Build Tools for Visual Studio を使用)と使用方法(Windows 上)
  3. Eigen 3 の動作確認

Eigen 3

Eigen 3 は, 次の機能を持つ C++ テンプレートライブラリ.SSEを使うように最適化されている.

関連する外部ページ

サイト内の関連ページ

前準備

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)

インストールの判断Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.

Build Tools for Visual Studio 2022 のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

    次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools 
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 での C++ によるデスクトップ開発,CLI,ATL,MFC のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Build Tools 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をクリック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」,「ATL」,「MFC」をチェックする.その後,「変更」をクリック.

Visual Studio のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

    次のコマンドは,Visual Studio Community 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.Community
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Visual Studio での C++ によるデスクトップ開発,CLI のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Community 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をチェック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」をチェックする.その後,「インストール」をクリック.

Git,CMake のインストール(Windows 上)

Gitは,分散型のバージョン管理システム. CMakeは,クロスプラットフォームのビルドシステム生成ツール.

手順

  1. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

    次のコマンドは,GitCMakeをインストールし,Gitパスを通すものである.

    次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.

    winget install --scope machine Git.Git
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    winget install --scope machine Kitware.CMake
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\CMake\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    

関連する外部ページ

関連項目Git バージョン管理システム, Git の利用, CMake ビルドシステム生成ツール, CMake の使用方法

NVIDIA ドライバのインストール(Windows 上)

NVIDIA ドライバ

NVIDIA ドライバは,NVIDIA製GPUを動作させるための重要なソフトウェアである.このドライバをインストールすることにより,GPUの性能を引き出すことができ,グラフィックス関連のアプリ,AI関連のアプリの高速化が期待できる.

ドライバはNVIDIA公式サイトである https://www.nvidia.co.jp/Download/index.aspx?lang=jp からダウンロードできる.このサイトからダウンロードするときには,グラフィックスカードとオペレーティングシステムを選択する. なお,NVIDIA GeForce Experiance を用いてインストールすることも可能である.

サイト内の関連ページ

  1. NVIDIA グラフィックス・ボードの確認

    Windows で,NVIDIA グラフィックス・ボードの種類を調べたいときは, 次のコマンドを実行することにより調べることができる.

    wmic path win32_VideoController get name
    
  2. NVIDIA ドライバのダウンロード

    NVIDIA ドライバは,以下の NVIDIA 公式サイトからダウンロードできる.

    https://www.nvidia.co.jp/Download/index.aspx?lang=jp

  3. ダウンロードの際には,使用しているグラフィックス・ボードの型番とオペレーティングシステムを選択する.

NVIDIA CUDA ツールキット 11.8 のインストール(Windows 上)

NVIDIA CUDA ツールキットのインストール時の注意点

NVIDIAのGPUを使用して並列計算を行うためのツールセット

主な機能: GPU を利用した並列処理,GPU のメモリ管理,C++をベースとした拡張言語とAPIとライブラリ

NVIDIA CUDA ツールキットの動作に必要なもの

Windows でインストールするときの注意点

関連する外部ページ

関連項目NVIDIA CUDA ツールキット, NVIDIA CUDA ツールキット 12.5 のインストール(Windows 上), NVIDIA CUDA ツールキット 11.8 のインストール(Windows 上)

  1. Windows では,NVIDIA CUDA ツールキットインストール中は,なるべく他のウインドウはすべて閉じておくこと.
  2. Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  3. 次のコマンドを実行

    次のコマンドは,NVIDIA GeForce Experience,NVIDIA CUDA ツールキット 11.8 をインストールするものである.

    wmic path win32_VideoController get name
    winget install --scope machine Nvidia.GeForceExperience
    winget install --scope machine Nvidia.CUDA --version 11.8
    powershell -command "[System.Environment]::SetEnvironmentVariable(\"CUDA_HOME\", \"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\", \"Machine\")"
    
  4. NVIDIA CUDA ツールキットのインストールが終わったら,ユーザ環境変数 TEMP の設定を行う.

    Windowsユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.

    ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.

    mkdir C:\TEMP
    powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
    

Eigen3ライブラリのインストール(ソースコードを用いたインストール)(Build Tools for Visual Studio を使用)と使用方法(Windows 上)

Boost のインストール

(オプション)OpenBLAS のインストール

必ずしも必要ではないが,必要になったときはインストールする.

(オプション)数値演算ライブラリ等のインストール(vcpkg を使用)

必ずしも必要ではないが,必要になったときはインストールする.

  1. 事前にvcpkg のインストールを行っておく.
  2. コマンドプロンプトを管理者として開き次のコマンドを実行する.
    c:\vcpkg\vcpkg --triplet x64-windows install blas fftw3[sse,sse2,avx,avx2,threads] gmp hwloc metis mpfr  openblas[threads] pthread superlu
    
  3. Windowsシステム環境変数 PATHに,c:\vcpkg\installed\x64-windows\bin追加して,パスを通す

    Windows で,コマンドプロンプト管理者として実行

    コマンドプロンプトを管理者として実行: 別ページ »で説明

    次のコマンドを実行

    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\vcpkg\installed\x64-windows\bin\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    

Eigen3ライブラリのインストール(ソースコードを用いたインストール)(Build Tools for Visual Studio を使用)と使用方法(Windows 上)

前もって,eigen をインストールするディレクトリを決めておく

このページでは,c:\eigen 下にインストールするものとして説明する.

  1. Windows で,コマンドプロンプト管理者として実行.

    コマンドプロンプトを管理者として実行: 別ページ »で説明

  2. ソースコードのダウンロード

    次のコマンドを実行

    cd /d %USERPROFILE%
    rmdir /s /q eigen
    git clone https://gitlab.com/libeigen/eigen.git
    
  3. cmake の実行

    cmake でのオプションについて

    cmake のオプションの 「Visual Studio 17 2022」のところは, 使用する Visual Studio のバージョンにあわせること. Visual Studio 2022 のときは,「Visual Studio 17 2022」. Visual Studio 2019 のときは,「Visual Studio 16 2019

    cmake の実行手順例は次の通り

    cd /d %USERPROFILE%
    cd eigen
    rmdir /s /q build
    mkdir build
    cd build
    del CMakeCache.txt
    rmdir /s /q CMakeFiles\
    cmake .. -G "Visual Studio 17 2022" -A x64 -T host=x64 ^
        -DCMAKE_BUILD_TYPE=Release ^
        -DBoost_INCLUDE_DIR="%Boost_INCLUDE_DIR%" ^
        -DCUDA_NVCC_FLAGS="-allow-unsupported-compiler" ^
        -DCMAKE_INSTALL_PREFIX="c:/eigen" ^
        -DEIGEN_TEST_CUDA=ON 
    

    (以下省略)

    上に示した「実行手順例」でのcmake でのオプションを調整するとしたら

    • vcpkg でインストールした数値演算ライブラリがあるとき

      次のようなオプションを付ける.

      -DVCPKG_TARGET_TRIPLET=x64-windows ^
      -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake ^
      
  4. cmake の実行結果の確認

    * 下の通りになるとは限らない.エラーメッセージが出るなど場合は,前で cmake を実行したときの設定を変えてやり直す

  5. ソースコードからビルドし、インストールする
    cmake --build . --config RELEASE
    cmake --build . --config RELEASE --target INSTALL
    
  6. 実行結果の確認
  7. Windowsシステム環境変数 EIGEN_ROOT に,c:\eigen を設定

    次のコマンドを実行

    powershell -command "[System.Environment]::SetEnvironmentVariable(\"EIGEN_ROOT\", \"c:\eigen\", \"Machine\")"
    

Eigen 3 の動作確認

ソースコード

Eigen 3ライブラリを使用して,Eigen 3 の行列演算の基本機能を実行する. プログラムでは,3x3行列と3次元ベクトルを用いて,乗算,転置,逆行列計算,固有値・固有ベクトル計算,LU分解を行い,結果を表示する.C++で書かれており,出力にはprintfを使用している.

#include 
#include 

using namespace Eigen;

int main()
{
    printf("Eigen3 Demo Program\n\n");

    // 行列演算
    Matrix3f A;
    A << 1, 2, 3,
         4, 5, 6,
         7, 8, 9;
    
    Vector3f v(1, 2, 3);

    printf("Matrix A:\n");
    printf("%f %f %f\n%f %f %f\n%f %f %f\n\n", 
           A(0,0), A(0,1), A(0,2),
           A(1,0), A(1,1), A(1,2),
           A(2,0), A(2,1), A(2,2));

    printf("Vector v:\n");
    printf("%f\n%f\n%f\n\n", v(0), v(1), v(2));

    Vector3f result = A * v;
    printf("A * v =\n");
    printf("%f\n%f\n%f\n\n", result(0), result(1), result(2));

    // 行列の転置と逆行列
    printf("A transpose:\n");
    Matrix3f AT = A.transpose();
    printf("%f %f %f\n%f %f %f\n%f %f %f\n\n", 
           AT(0,0), AT(0,1), AT(0,2),
           AT(1,0), AT(1,1), AT(1,2),
           AT(2,0), AT(2,1), AT(2,2));

    printf("A inverse:\n");
    Matrix3f AI = A.inverse();
    printf("%f %f %f\n%f %f %f\n%f %f %f\n\n", 
           AI(0,0), AI(0,1), AI(0,2),
           AI(1,0), AI(1,1), AI(1,2),
           AI(2,0), AI(2,1), AI(2,2));

    // 固有値と固有ベクトル
    EigenSolver es(A);
    printf("Eigenvalues of A:\n");
    for (int i = 0; i < 3; i++) {
        printf("%f + %fi\n", es.eigenvalues()(i).real(), es.eigenvalues()(i).imag());
    }
    printf("\n");

    printf("Eigenvectors of A:\n");
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%f + %fi  ", es.eigenvectors()(i,j).real(), es.eigenvectors()(i,j).imag());
        }
        printf("\n");
    }
    printf("\n");

    // 行列分解 (LU分解)
    FullPivLU lu(A);
    printf("LU decomposition of A:\n");
    printf("L:\n");
    Matrix3f L = lu.matrixLU().triangularView();
    L.diagonal().setOnes();  // Set diagonal elements to 1
    printf("%f %f %f\n%f %f %f\n%f %f %f\n\n", 
           L(0,0), L(0,1), L(0,2),
           L(1,0), L(1,1), L(1,2),
           L(2,0), L(2,1), L(2,2));

    printf("U:\n");
    Matrix3f U = lu.matrixLU().triangularView();
    printf("%f %f %f\n%f %f %f\n%f %f %f\n\n", 
           U(0,0), U(0,1), U(0,2),
           U(1,0), U(1,1), U(1,2),
           U(2,0), U(2,1), U(2,2));

    return 0;
}

実行手順

  1. Visual Studio の x64 Native Tools コマンドプロンプト を開く
  2. cd コマンドでソースファイルのあるディレクトリに移動する.
  3. 次のコマンドでコンパイルする:

    プログラムを,ファイル名 a.cpp で保存しているものとする.

    cl /EHsc /utf-8 /I "C:\eigen\include\eigen3" a.cpp
    
  4. 実行する
    a.exe