1

Jacket で作業しているときに、この問題に出くわしました。

gfor ループ内でコンパイル済み関数 (gcompile でコンパイル) を使用しています。これは、私が知る限りサポートされる予定です: http://wiki.accelereyes.com/wiki/index.php/GCOMPILE

しかし、コンパイルされていない関数は正しい結果を提供しますが、コンパイルされた関数はすべての gfor 反復に対して同じ出力を与えることがわかりました。

%================
% function[C] = test(A,B)
% C = A+B;
% end
%================

testing = gcompile('test.m');

A = gdouble(1:1:10);
B = gdouble(2:2:20);
C1 = gzeros(10,1);
C2 = gzeros(10,1);

gfor l=1:10
    C1(l) = test(A(l),B(l));
    C2(l) = testing(A(l),B(l));
gend

出力は次のとおりです。

C1 = [ 3,6,9,12,15,18,21,24,27,30] (正しい結果)

C2 = [ 3,3,3,3,3,3,3,3,3,3]

私の結果を検証/反論できますか? 私は何を間違っていますか?

乾杯、アンジェラ

4

1 に答える 1

0

MATLAB で Jacket を実行することで、この動作を再現できました。gcompile は GFOR では正常に機能しないようで、ドキュメントに誤りがありました。申し訳ありません。

于 2013-02-26T21:15:25.300 に答える