🧊

cuSPARSEのサンプルを動かす

2023/07/29に公開

リポジトリ

NVIDIA公式サンプルの中の疎行列線形方程式のサンプルプログラムspmv_csrを動かす。
https://github.com/kaiware0x/PracCuSparse

環境

  • CUDA: 12.2
  • Driver Version: 536.25
  • GPU: GeForce RTX 3070Ti Laptop
  • CMake: 3.26.3
  • OS: Windows 11 Home
  • IDE: VSCode
  • Compiler: VS2022 Community

準備

使用したいGPUのCompute Capabilityをチェック。
https://developer.nvidia.com/cuda-gpus

CUDAをインストール。

VSCodeでCMakeプロジェクトを作成。

CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0)

set(CMAKE_CUDA_ARCHITECTURES 86) # 使用するGPUのCompute Capability
# set(CUDAToolkit_ROOT "Your-CUDA-Install-Dir") # PCに複数VerのCUDAがインストールされている場合は明示的に指定する.

project(PracCuSparse VERSION 0.1.0 LANGUAGES C CXX CUDA)

find_package(CUDAToolkit)

add_executable(${PROJECT_NAME}  
    main.cu
    spmv_csr_example.hpp
    )

target_link_libraries(${PROJECT_NAME} PRIVATE 
    cudart
    cusparse
)

target_include_directories(${PROJECT_NAME} PRIVATE
    ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
    )

main.cu

GPUを認識しているかチェック。
CUDAが生成する変数threadIdxは拡張子が.cuでないと利用できなかった。

https://github.com/kaiware0x/PracCuSparse/blob/master/main.cu

参考
https://qiita.com/iwatake2222/items/a29f017ea05fec77f8e1

spmv_csr_example.hpp

https://github.com/kaiware0x/PracCuSparse/blob/master/spmv_csr_example.hpp

もとのサンプルでは関数がmain()になっていたが、spmv_csr_exampleに改名している。

参考
https://github.com/NVIDIA/CUDALibrarySamples/tree/master/cuSPARSE

実行

ビルドして実行し、

Hello
OK
spmv_csr_example test PASSED

と表示されればOK。

GitHubで編集を提案

Discussion