2012-05-09 14 views
1

分散数を使用せず、HPCをバイパスするのではなく、標準偏差などの計算にAzureでコード数値を使用することはできますか?私はいくつかの強力な数学とチャートを使ってMVC Web Roleをテストしています。Cloud Numericsアセンブリへの参照を追加しましたが、すべてがエミュレータで動作します(ちょっとした計算、分散されたものはありません)。数値DLL?私は本当にいくつかのアドバイスを感謝します。 (私はそれにいくつかの標準的な数学ライブラリを使用する方が良いだろうが、私は本当にこのように可能かどうかを知る必要があることを知っている)。 私は当初、これがアーキテクチャ上の問題であると考えました。プロジェクト全体がAnyCpu(Azureがこれらの2つのconfのみを許可するためAnyCpuまたはx64になることができます)とx64用にコンパイルされたCLoud Numericsライブラリがあります。しかし、私の開発マシンはx64 win 7です。私は繰り返します:ITはクラッシュではなく、エミュレータで動作します。ここで計算に使用されるCloud NumericsでAzureにWebRoleをデプロイすることは可能ですか?

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

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依存歩行ツールに記載されているように自然に、常に他の依存関係と一緒にコピーとして含まれています。

答えて

0

問題は解決しました。

解決策: sthがありました。 Cloud Numerics(Cloud Numericsのインストールディレクトリからのもう1つのネイティブライブラリ)には欠けていて、もっと興味深いのは、Web.configにDevExpress Printing.Coreライブラリリファレンスが追加されていましたが、プロジェクトに参照として追加されていませんでした。なぜそれはより面白いですか?主に、WebRolesでProcMonを使用して事実を認めなければならなかったので、空白を埋めると、Cloud Numericsから正確なライブラリが見つからなかったという非常に便利なエラーが表示されました。

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

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

皆さん、ありがとうございました。すべての答えが私をソリューションに近づけました。クレジットはCloud Numerics Labチーム、特にRoonie Hoogerwerfにも送られます。

2

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

前提条件の章のIntroducing Microsoft Codename “Cloud Numerics” from SQL Azure Labsを参照する場合は、Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)が必要です。これは、Windows Azureによって提供される基本VMに実装されているわけではありません。スタンドアップ作業であなたのinstaceにパッケージをインストールすることができます。 msiがサイレントモードで起動されていることを確認します(ユーザーの操作は必要ありません)。

ミシェル

+0

答えをありがとう。それも私の最初のアプローチでした:私は依存性ウォーカーツールを使用して、私はすべての可能な行方不明の参照を追加しました。しかし、私はVisual C++ Redistについてのヒントを守り、インストールをスタートアップタスクとして追加しました(Microsoft.ViusalCへの参照を常にコピーしましたが、redistの他のアセンブリが不足しているかもしれません)。私はRDPを通してチェックしました、それは無音で正常にインストールされます、それはインストールされたプログラムのリストに表示されますが、まだ運がないです。 – Tobiasz

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]. 

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

関連する問題