1. ホーム
  2. CUDA

MatlabからCUDAへの呼び出しの概要(Windows, Ubuntu)

2022-02-13 14:46:20

計算の高速化のために、matlabの計算の一部をCUDAで実装し、matlabで呼び出すプロジェクトが必要です

計算には多くのパラメータが必要なため、CUDAに転送するのは手間なので、Matlabでmatファイルに格納し、CUDAのc++コードでmatファイルを読み込んでいます。

最終的には,Matlabのコードの中でmexw64ファイル(基本的にはDLLで,Linuxプラットフォームの拡張子はmexa64)を使用する関数のように呼び出すことになります.

CUDAはmexを使って直接mexw64にコンパイルすることができないので、まずcuファイルをnvccを使ってmexリンク用のobjファイルにコンパイルする必要があります。

<スパン プロジェクト全体の構成

Ø matlabfunction.m - CUDAを呼び出すメインのmatlabプログラム

Ø mexmain.cpp - mexFunction 用の C++ ファイルを定義し、内部で mat ファイルを読み込んで CUDA に引数を渡して計算します。

Ø kernel.cu - カーネル関数の定義と、引数を受け取りカーネル関数を呼び出して結果を計算する C++ 関数を含む CUDA ファイルです。

コード構成
matlab.m
%matlab does some data manipulation
%.........
% Call the compiled mexw64/mexa64 file, pass in the arguments, and get the results
[result1,result2]=MexMain(arg1,arg2)
% Processing of calculation results
%............

mexmain.cpp
#include "mat.h"
#include "mex.h"
extern int CUDAFunction(double* arg1,double*arg2);//implemented in the kernel.cu file, the main function is