0

mex コードと cuda コードを書いています。オブジェクトファイルを組み合わせて実行可能ファイルを取得しているため、各コードの2つのオブジェクトファイルを持ち、mexファイルからcudaカーネルを呼び出すことについて疑問に思っています。したがって、(可能であれば)あるオブジェクトファイルの関数を他のオブジェクトファイルから呼び出す方法を知る必要があります。mex と cuda を別々のコンパイラでコンパイルし、そのように結合することはできますか?

4

1 に答える 1

1

それは完全に可能です。しばらく前にこれで遊んだ。これを行うために現在サポートされている方法では、MATLAB 並列計算ツールボックスを使用します。ここに手順があります

少し拡張すると、コンパイルされた mex ファイルは実際には、コンパイルされた mex ゲートウェイを備えた単なる動的ライブラリです。ゲートウェイがあれば、ファイルを適切にリンクし、コンパイルされたファイルに適切な mex 拡張子 (mexa64、mexmaci64 など) を付ければ、ファイルは機能します。

ファイルをコンパイルするために MATLAB 内から関数 mex を使用する必要がないことに注意することが重要です。これにより、サポートされていない方法で MATLAB の外部でコンパイルできるようになります。これは、並列ツールボックスを持っていない場合、何が起こっているかをより微妙に制御する必要がある場合、またはワークフローで make を使用したい場合に役立ちます。これを開始する方法については、こちらをご覧ください。

于 2013-01-31T19:10:47.013 に答える