問題タブ [mex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
3656 参照

matlab - mex 関数のプロファイリング

C++ で Matlab プログラムを mex 関数として書き直して速度を上げ、素晴らしい結果を得ました。この最適化の決定は非常に良いアイデアであり、スレッド化なしで最大 20 倍の速度が得られました。mex-function が何に時間を費やしていて、ボトルネックの可能性を特定したいのか、まだ興味がありました。

mex 関数をプロファイリングする方法を探しています。matlab プロファイラーはあまり役に立たず、私がダウンロードした他のプロファイラー (無料と試用版の両方) はすべて、実行可能ファイルを実行する必要があります。私は mex の第一人者ではありませんが、私が理解している限り、mex を実行する唯一の方法は Matlab 内からです。mex 関数は dll にコンパイルされますが、.mex64 と呼ばれます。したがって、この問題は dll のプロファイリングに似ているはずです。c++ mex 関数を記述するために、私はシングル ユーザー VS2005 (つまり、チーム バージョンではない) を使用し、x64 プラットフォームで実行しています。

mex 関数をプロファイリングする良い方法を知っている人はいますか? Matlab 内から開始する場合、どのツールを使用する必要があり、どのように使用すればよいですか? または、C++ コードをプロファイリングする他の方法はありますか?

0 投票する
2 に答える
1289 参照

wcf - MEXエンドポイントのないBasicHttpBindingを使用するWCFサービスは、絶対的な見知らぬ人によって悪用される可能性がありますか?

私が理解していることから:MEXエンドポイント/ WSDLがない場合、サービスは基本的に検出できません。あなたのデータ契約を知っている人だけがあなたのサービスを利用できるはずです。

この主張は水を保持しますか、それともインターネットの悪意のある住人がMEXエンドポイントを持たないサービスを呼び出す/消費する方法を理解する方法はありますか?

編集:アンドリューが指摘したように、この戦略は本当に安全であると見なされるべきではありません。外部の消費者とのQAフェーズでのランダムな悪用から安全であるかどうかについては、もっと疑問に思っています。

0 投票する
3 に答える
18149 参照

.net - メタデータを有効にする場所 (構成で有効になっています)?

私は基本的な wcf サービスを持っていますが、それをテストするために wcfctestclient に移動すると、メタデータが見つからないというエラーが表示されます。追加してください。残念ながら、エラー ポップアップの MSDN リンクが壊れており、私の WCF サービスの app.configメタデータが有効になっています:

それ以外は、コードの他の場所でメタデータ設定を変更していません。

メタデータを有効にしてエラーを修正できる場所はどこですか?

0 投票する
2 に答える
11904 参照

c - C での matlab C++ および matlab での C C++

C C++ で matlab を呼び出す方法と、matlab で C C++ を呼び出す方法はいくつかあるようです。ここにリストするようにしていますが、何か見落としがあれば指摘してください。

matlab で C C++ を呼び出すには、2 つの方法もあります。1 つ目は、C 共有ライブラリで関数を呼び出すことです。2 つ目は、C C++ コードをバイナリ MEX ファイルにビルドすることです。これは、MATLAB コマンド ラインから呼び出されます。最初の方法では、C 共有ライブラリは単なる一般的なものですか。つまり、matlab の C コードを変更せず、gcc などの一般的な C コンパイラからコンパイルしたものですか?

C C++ で matlab コードを呼び出すには、2 つの方法を使用できます。1 つ目は Matlab エンジンです。2 つ目は、MATLAB Compiler mcc を使用して、MATLAB コードから C または C++ 共有ライブラリを作成することです。

matlab と C に加えて、C++ はファイル (例: mat ファイル、テキスト ファイル) との間でデータの読み書きを介して通信できます。

ここで各目標を達成する方法が複数ありますが、どのケースを使用するのが最適か教えていただけますか? つまり、C 共有ライブラリで関数を呼び出す VS C C++ コードをバイナリ MEX ファイルにビルドする VS Matlab エンジン VS Matlab コードを C C++ 共有ライブラリにコンパイルする。

よろしくお願いします!

0 投票する
1 に答える
1240 参照

dll - MATLAB: mex によってロードされた DLL はアンロードされませんか?

mex モジュールと呼ばれるp.mexw64別の dll を使用しています。mex モジュールは、lib ファイルにリンクしているため、p.dll
ロード時にロードされます。 通常、再コンパイルしたいときは. これはアンロードし、次にまたアンロードします。 p.dll
p.dllclear p;p.mexw64p.dll

そうでない場合を除いて。実際に定量化できないいくつかのシナリオでp.mexw64は、アンロードされますが (Process Explorer にあることがわかります)、p.dllロードされたままになり、解放されません。
次に、再コンパイルするために matlab を閉じる必要がd.dllありますが、これは面倒です。

この dll を使用していた mex がなくなった後も、この dll がロードされたままになる可能性があるのは何ですか?

0 投票する
1 に答える
3519 参照

python - osxのmatlabmexファイルにPythonを埋め込みます

PythonをOSXのMATLABmex関数に埋め込もうとしています。これを実行できるという参照を確認しましたが(ここなど)、OSX固有の情報が見つかりません。これまでのところ、組み込みPythonを正常にビルドでき(リンカーフラグはOKである必要があります)、問題なくデフォルトオプションを使用してサンプルmexファイルをビルドすることもできます。

しかし、Pythonを埋め込んだmexファイルを作成しようとすると、未定義のシンボルmainで問題が発生します。これが私のmex関数です:

mexのコンパイル手順は次のとおりです。

arch設定(すべてを32ビットに保つために-arch i386を追加しました-python.org32ビット2.5ビルドを使用しています)とリンカーフラグの順序を試してみましたが、できませんでしたどこにでも行くことができます。オンラインでもあまり見つかりません。誰かがこれを構築する方法について何かアイデアがありますか?

[編集:おそらく、MATLAB 7.8(r2009a)、Python 2.5.4(python.org)を搭載したOS X 10.6.1を追加する必要があります-gcc-4.0とgcc-4.2(apple)の両方を試しました]

0 投票する
2 に答える
1470 参照

memory-management - Matlab:mexでのメモリ割り当ての回避

mexライブラリにすべてのメモリ割り当てを回避させようとしています。
これまで、mexは入力を取得し、を使用していくつかの行列を作成しmxCreate...()、この出力を返していました。
しかし、ここで、mex自体が割り当てを行わないように、このインターフェイスを変更したいと思います。
私が念頭に置いていたのは、mexFunctionが入力として行列を取得して値を入力し、これとまったく同じ行列を出力として返すことです。

これは可能でしょうか?

これが私がしなければならないことであるかどうかを私に考えさせたわずかな警告は、左側の引数がconstとしてmexFunctionに来て、右側の引数が非constであるということです。入力行列を出力として返すには、この定数を削除する必要があります。

0 投票する
1 に答える
1524 参照

matlab - MATLAB MEX ファイルで double の ND 行列を作成するにはどうすればよいですか?

MEX ファイルで 3 次元行列を作成する必要があります。API リファレンスではmxCreateCellArray、ND セル配列mxCreateStructArray用、構造体用などについて言及されていますが、言及されていませんmxCreateDoubleArray。これは可能ですか?

0 投票する
1 に答える
1247 参照

matlab - Compiled MATLAB: アプリケーションが最後にハングするのはなぜですか?

MATLAB の配布ツールを使用して、mex ライブラリを使用する単純なプロジェクトをコンパイルしています。実行可能ファイルは正常に実行され、終了するはずのときに何も起こらないことを除いて、本来の処理を実行します。そこに座っているだけです。

ドキュメントの魔方陣の例など、他のプロジェクトをコンパイルすると、問題なく動作します。実行可能ファイルが終了して終了します。

.m ファイルの最後にa を追加しましたdisp('at end');が、この行は実際に表示されているので、.m ファイルの最後に達したことはわかっていますが、プロセスを終了しません。

なぜこれが起こるのですか?


編集:

MATLAB では通常どおり実行され、'at end'. ここに含めるにはコードが長すぎます。mex ライブラリを使用する以外は、かなり通常の処理を行います。

0 投票する
2 に答える
767 参照

c - matlab の mex 関数の安全で高速な CFLAGS

多くの低レベル操作をネイティブの matlab コードから C/mex コードに変換し、大幅なスピードアップを実現しています。(これらの低レベルの操作は .m コードでベクトル化できますが、大きなデータの b/c でメモリ ヒットが発生すると思います。) 異なる CFLAGS を使用して mex コードをコンパイルすると、わずかな改善が生じる可能性があることに気付きました。たとえばCFLAGS = -O3 -ffast-math、軽度の数値の不正確さを犠牲にして、確かにいくつかのスピードアップが得られます。

私の質問: 他の多くの副作用を招くことなく、使用するのに「最適な」CFLAGS は何ですか? 少なくとも、それ CFLAGS = -O3 -fno-math-errno -fno-unsafe-math-optimizations -fno-trapping-math -fno-signaling-nansはすべて問題ないようです。についてはわかりません-funroll-loops

また、使用される CFLAGS のセットを半自動的に最適化するにはどうすればよいでしょうか。