1

分散機能を使用せず、HPC をバイパスせずに、Azure で Code Numerics を標準偏差などの計算にのみ使用することは可能ですか? いくつかの強力な数学とグラフを使用して MVC Web ロールをテストしています。Cloud Numerics アセンブリへの参照を追加しました。すべてがエミュレーターで動作します (一部の計算のみで、分散されたものはありません) が、Azure にデルポイすると、クラウドとの依存関係の問題が報告されます。数値DLL? アドバイスをいただければ幸いです。(そのために標準的な数学ライブラリを使用する方が良いことはわかっていますが、この方法で可能かどうかを本当に知る必要があります)。プロジェクト全体が AnyCpu であり (Azure ではこれら 2 つの conf のみが許可されているため、AnyCpu または x64 のみ可能です)、CLoud Numerics ライブラリの一部は x64 用にコンパイルされています。

例外の詳細は次のとおりです。

Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[FileNotFoundException: Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.]
   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks) +567
   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +192
   System.Reflection.Assembly.Load(String assemblyString) +35
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +123

[ConfigurationErrorsException: Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.]
   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +11567856
   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +485
   System.Web.Configuration.AssemblyInfo.get_AssemblyInternal() +79
   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +337
   System.Web.Compilation.BuildManager.CallPreStartInitMethods() +280
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1167

[HttpException (0x80004005): Could not load file or assembly 'Microsoft.Numerics.DistributedDenseArrays.DLL' or one of its dependencies. The specified module could not be found.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +11700592
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +141
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +4868789

上記の dll Microsoft.Numerics.DistributedDenseArrays は、依存関係ウォーキング ツールに記載されているように、常に他の依存関係と共に常にコピーとして含まれます。

4

3 に答える 3

2

Fusionログを取得することをお勧めします。

To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

次に、ファイルをどこからロードしようとしているのかを確認し、問題が何であるかを正確に把握できます。それから判断できない場合は、ここに詳細を投稿してください。

于 2012-05-09T13:55:15.467 に答える
2

この種の問題に遭遇した場合、最初にチェックするのは、参照されたライブラリにプロパティ copy local = true があるかどうかです。次のステップは、en configure diagnosticts を実装することです。開発とテストのために 1 つのインスタンスにのみデプロイする場合は、RDP を使用してイベントログを確認できます。

Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)が必要です。 これは、Windows Azure が提供する基本的な VM に実装されている標準ではありません。このパッケージは、スターアップ タスクでインスタンスにインストールできます。msi がサイレント モードで開始されていることを確認します (ユーザーの操作は必要ありません)。

ミシェル

于 2012-05-09T08:16:04.647 に答える
0

OK、問題は解決しました。

解決策: sthがありました。Cloud Numerics(Cloud Numericsインストールディレクトリからのもう1つのネイティブライブラリ)にありません。さらに興味深いのは、Web.configに追加のDevExpress Printing.Coreライブラリ参照がありましたが、プロジェクトへの参照として追加されていませんでした。なぜもっと面白いのですか?主な理由は、WebRolesでProcMonを使用して事実を確認する必要があり、空白を埋めた後、CloudNumericsのどの正確なライブラリがデプロイメントにないかを示すはるかに有用なエラーが発生しました。

結論: ProcMonは非常に便利なツールであり、AzureVMのRDPは貴重です。

ヒント: CNライブラリを利用するプロジェクトをAzureにデプロイしようとする場合は、Microsoft HPC Packのmsmpi.dllをCopyAlwaysコンテンツとして追加することを忘れないでください。また、参照しているmsmpi.dllの種類(x32またはx64)にも注意してください。 )。

みんなありがとう、すべての答えは私を解決策に近づけました。クレジットは、Cloud Numerics Labチーム、特にRoonieHoogerwerfにも当てはまります。

于 2012-05-11T11:49:11.103 に答える