関連テクノロジー

Mathematica からコード生成する場合には,Mathematica 言語で書かれたプログラムを別の言語に変換してから,そのプログラムが実行できるようにサポートする必要がある.Mathematica コンパイラは,C言語でのコード生成を行うシステムを提供する.

このセクションでは,コード生成に関係するテクノロジーについて説明する.

Mathematica コンパイラ

Mathematica コンパイラは,Mathematica 計算を高速化し使用することができる方法である.これは計算についての仮定を取り,これをより効率的な方法で書き直すことによって行う.

Mathematica コンパイラを使う重要な方法は関数Compileを使う方法である.

In[12]:=
Click for copyable input
Out[12]=

コンパイルされた関数は別の Mathematica 関数がそれに実数の入力を渡す方法と同じ方法で使用することができる.

In[13]:=
Click for copyable input
Out[13]=

しかし,コンパイルされた関数に実数ではない入力が渡されると,エラーメッセージが返される.それでも Mathematica は結果を返すが,コンパイラは使わない.

In[14]:=
Click for copyable input
Out[14]=

これについての詳細はコンパイラのドキュメントに記載されている.

SymbolicC

SymbolicCMathematica のCコード生成システムの重要な位置を占めるものである.これは,ExportあるいはExportStringがCコードに使われると,自動的に使用されるものであり,Mathematica 式としてのCコードの階層的ビューを提供する.このため,Cコードを作成,操作,最適化するのに大変適している.

SymbolicCは,自分のコード生成に使うことができる.また Mathematica のコード生成ツールとしても広く使用されている.

SymbolicCを使用するには,まずパッケージをロードしなければならない.

In[1]:=
Click for copyable input

これでCプログラムの要素を構築し始めることができる.以下は変数の宣言を表す.

In[2]:=
Click for copyable input
Out[2]=

SymbolicC式の重要な機能にこれらの式は不活性であるということがある.つまり,これらの式は自らの未評価形式に評価される.

以下は割当てと関数全体である.

In[3]:=
Click for copyable input

関数は,式としてとどめておくことも,Cコードを示す文字列に変換することもできる.

In[5]:=
Click for copyable input
Out[5]=

これについての詳細はSymbolicCのドキュメントに記載されている.

CCompilerDriver

CCompilerDriverは,使用コンピュータにインストールされているCコンパイラにインターフェースを与える Mathematica パッケージである.これは共有ライブラリ,実行ファイル,オブジェクトファイルを構築することができる.Mathematica に統合されているので,Cコードを作成し,例えばコードを検証する便利な方法を提供する等,コードを Mathematica にリンクさせ直すのに,このパッケージを簡単に使用することができる.

もちろん自分のプロジェクトやメイクファイルを設定し,C Compiler Driverツールは使用しないということも可能である.

パッケージを使用するには,まずこれをロードする必要がある.

In[1]:=
Click for copyable input

これでCコードのファイルからDLLを作成することができる.

これはソースファイルの例である.

In[2]:=
Click for copyable input

以下で共有ライブラリを作成して完全パスを返す.

In[3]:=
Click for copyable input
Out[3]=

適切なCコンパイラがないという場合には,コンパイルは失敗に終り,メッセージが生成される.

サンプルのソースファイルはWolfram Libraryとして使用し,と一緒にロードすることができる.

In[4]:=
Click for copyable input
Out[4]=

ライブラリ関数を Mathematica から呼び出すことができる.

In[5]:=
Click for copyable input
Out[5]=

これについての詳細はCCompilerDriverのドキュメントに記載されている.

New to Mathematica? Find your learning path »
Have a question? Ask support »