Cntk: Package Microsoft.Research.CNTK.CpuEval-acml 1.5.0 is not compatible with netcoreapp1.0

Created on 13 Jan 2017  路  19Comments  路  Source: microsoft/CNTK

I'm using NuGet on VisualStudio Mac Preview 2

Done Building Project "/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj" (restore target(s)) -- FAILED.



Build FAILED.



"/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj" (restore target) (1) ->

(Restore target) -> 

  /Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/xbuild/NuGet.targets : error : Package Microsoft.Research.CNTK.CpuEval-acml 1.5.0 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package Microsoft.Research.CNTK.CpuEval-acml 1.5.0 supports: net45 (.NETFramework,Version=v4.5) [/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj]
  /Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/xbuild/NuGet.targets : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj]


    0 Warning(s)
    2 Error(s)


Time Elapsed 00:00:01.57

L'applicazione 猫 stata terminata da un segnale: SIGHUP

Install failed. Rolling back...
Executing nuget actions took 3,48 sec
Unable to restore packages.

All 19 comments

The CNTK Eval Nuget Package currently requires .NET 4.5. I do not know whether MonoFramework 4.8 you are using supports it or not. In addition, the C# Eval requires some native dlls which are built for the Intel/AMD X64 platform, I am not sure whether they can directly run on your MAC machine? Another question: do you have any particular reason to use Microsoft.Research.CNTK.CpuEval-acml 1.5.0? It is depreated, we currently use Intel MKL instead of ACML, and the latest version is Microsoft CNTK Eval CPUOnly-mkl NuGet 2.0.0-beta7.

@zhouwangzw thanks for the clarification! So regarding macOS/Intel I have to verify since I'm running against

MacBook-Pro-di-Loreto:lyrics loretoparisi$ mono --version
Mono JIT compiler version 4.8.0 (mono-4.8.0-branch/038ff4a Mon Jan  2 13:47:55 EST 2017)

How can I be sure of this?

My guess is that it will not work until those dll will not run through it.
When in VisualStudio/macOS in NuGet I see different version of the CNTK packages: 1.5.0 for CPUOnly-acml and 1.7.2 for CPUOnly-mkl package:

schermata 2017-01-13 alle 14 15 07

The 1.5.0 for CPUOnly-acml uses ACML library, and it is deprecated now. Instead, the newer version uses Intel MKL library, The 1.7.2 for CPUOnly-mkl package is the latest officical release, but we do have a couple of 2.0 beta versions after 1.7.2. The current one is Beta 7, and the Beta 8 will be available next week. You can find the lastest beta version by enabling "include prerelease" when browsing/installing Nuget packages.

@zhouwangzw thank you. What about MonoFramework 4.8 and .NET 4.5?

@loretoparisi I am not familiar with Mono, so I cannot really tell whether it can directly consume .Net 4.5 classes. From the compiler error you got, I doubt that it might have issues with that.
We are going to release a new C# Eval API, which is using SWIG to generate C# bindings. This should be able to work with Mono, if you build it from source.
As mentioned ealier, C# Eval Libaray is a wrapper which relies on other native C++ dlls to run. I am not sure whehter you can get those native binary dlls run on your Mac system, e.g. Math.dll, cntk_mkl_p.dll. We have not tested them yet.

@zhouwangzw This is great, thanks you! I will be glad to test i as soon as the Eval API is ready. I will keep this issue opened then and update it here with the tests results.

The latest 2.0 Beta 8 is published a couple of hours ago, which contains the new C# Eval API. https://github.com/Microsoft/CNTK/releases/tag/v2.0.beta8.0
The Release Notes are here

You can try whether the CNTK CPU-Only Nuget package works for you. If not, you might have to build the C# wrapper for Mono directly from source code.
Thanks!

@zhouwangzw thank you. So I did a quick install test from NuGet for CNTK.CPUOnly 2.0.0-beta8 and build fails for the same compatibility issue it seems

Retrieving package 'CNTK.CPUOnly 2.0.0-beta8' from 'nuget.org'.
  GET https://api.nuget.org/v3-flatcontainer/cntk.cpuonly/2.0.0-beta8/cntk.cpuonly.2.0.0-beta8.nupkg
  OK https://api.nuget.org/v3-flatcontainer/cntk.cpuonly/2.0.0-beta8/cntk.cpuonly.2.0.0-beta8.nupkg 671ms
Acquiring lock for the installation of CNTK.CPUOnly 2.0.0-beta8
Acquired lock for the installation of CNTK.CPUOnly 2.0.0-beta8
Installing CNTK.CPUOnly 2.0.0-beta8.
Completed installation of CNTK.CPUOnly 2.0.0-beta8
Successfully installed 'CNTK.CPUOnly 2.0.0-beta8' to CNTKDemo
Microsoft (R) Build Engine version 15.1.0.0
Copyright (C) Microsoft Corporation. All rights reserved.


Build started 17/01/2017 11:34:46.

Project "/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj" on node 1 (restore target(s)).

Restore:
  Restoring packages for /Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj...

/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/xbuild/NuGet.targets : error : Package CNTK.CPUOnly 2.0.0-beta8 is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0). Package CNTK.CPUOnly 2.0.0-beta8 supports: net45 (.NETFramework,Version=v4.5) [/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj]

/Library/Frameworks/Mono.framework/Versions/4.8.0/lib/mono/xbuild/NuGet.targets : error : One or more packages are incompatible with .NETCoreApp,Version=v1.0. [/Users/loretoparisi/Projects/CNTKDemo/CNTKDemo/CNTKDemo.csproj]

Would you be so kind to give us some further instruction how to build from the sources the C# wrapper directly?

Thanks again.

@loretoparisi It seems that your Mono requires .Net core, which is not supported yet by the current C# Library.
Before you spend time to build the C# wrapper from source, I want to make sure that you can run CNTK native binaries on your Mac machine. The way to check is to build the CNTKLibraryCPPEvalClient and run it. You cna find instructions here.

If you can run the C++ sample on your machine, then you can try to build the C# Wrapper. For that you need to check how to build C# for Mono using SWIG.

@zhouwangzw So this is what I did.

  • I have moved to a .NET Console project rather than .NETCore project.
  • I have successfully installed from NuGet CNTK.CPUOnly 2.0.0-beta8.
  • I have tried to compile the example CNTKLibraryCSEvalExamples but it fails with Error Code: 255. This is the detailed log when I try to run the CPU only example:
MacBook-Pro-di-Loreto:release loretoparisi$ mono /Users/loretoparisi/Documents/Projects/AI/CNTK/x64/CNTKLibraryCSEvalCPUOnlyExamples.Release/CNTKLibraryCSEvalCPUOnlyExamples.exe 
======== Evaluate model using C# CPUOnly Build ========

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: CNTKLibraryCSBinding
  at (wrapper managed-to-native) CNTK.CNTKLibPINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_CNTKLib (CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
  at CNTK.CNTKLibPINVOKE+SWIGExceptionHelper..cctor () [0x000ee] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_generic_class_init (intptr)
  at CNTK.CNTKLibPINVOKE..cctor () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at CNTK.DeviceDescriptor.GetCPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTK.DeviceDescriptor.get_CPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTKLibraryCSEvalExamples.Program.Main (System.String[] args) [0x0000a] in <b4523c49ba194892b904a58bf9e83951>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: CNTKLibraryCSBinding
  at (wrapper managed-to-native) CNTK.CNTKLibPINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_CNTKLib (CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
  at CNTK.CNTKLibPINVOKE+SWIGExceptionHelper..cctor () [0x000ee] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_generic_class_init (intptr)
  at CNTK.CNTKLibPINVOKE..cctor () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at CNTK.DeviceDescriptor.GetCPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTK.DeviceDescriptor.get_CPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTKLibraryCSEvalExamples.Program.Main (System.String[] args) [0x0000a] in <b4523c49ba194892b904a58bf9e83951>:0 

Since I was not sure the cause, I have copied some code from CNTKLibraryCSEvalExamples.cs to have just as a basic example:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using CNTK;

namespace CNTKDemo
{
    class MainClass
    {
        private static void PrintOutput<T>(uint sampleSize, List<List<T>> outputBuffer)
        {
            Console.WriteLine("The number of sequences in the batch: " + outputBuffer.Count);
            int seqNo = 0;
            uint outputSampleSize = sampleSize;
            foreach (var seq in outputBuffer)
            {
                Console.WriteLine(String.Format("Sequence {0} contains {1} samples.", seqNo++, seq.Count / outputSampleSize));
                uint i = 0;
                uint sampleNo = 0;
                foreach (var element in seq)
                {
                    if (i++ % outputSampleSize == 0)
                    {
                        Console.Write(String.Format("    sample {0}: ", sampleNo));
                    }
                    Console.Write(element);
                    if (i % outputSampleSize == 0)
                    {
                        Console.WriteLine(".");
                        sampleNo++;
                    }
                    else
                    {
                        Console.Write(",");
                    }
                }
            }
        }

        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var device = DeviceDescriptor.CPUDevice;

            const string outputName = "Plus2060";
            var inputDataMap = new Dictionary<Variable, Value>();

            // Load the model.
            Function modelFunc = Function.LoadModel("z.model", device);

            // Get output variable based on name
            Variable outputVar = modelFunc.Outputs.Where(variable => string.Equals(variable.Name, outputName)).Single();

            // Get input variable. The model has only one single input.
            // The same way described above for output variable can be used here to get input variable by name.
            Variable inputVar = modelFunc.Arguments.Single();
            var outputDataMap = new Dictionary<Variable, Value>();
            Value inputVal, outputVal;
            List<List<float>> outputBuffer;

            // Get shape data for the input variable
            NDShape inputShape = inputVar.Shape;
            uint imageWidth = inputShape[0];
            uint imageHeight = inputShape[1];
            uint imageChannels = inputShape[2];
            uint imageSize = inputShape.TotalSize;

            Console.WriteLine("Evaluate single image");

            // Image preprocessing to match input requirements of the model.
            Bitmap bmp = new Bitmap(Bitmap.FromFile("00000.png"));
            var resized = bmp.Resize((int)imageWidth, (int)imageHeight, true);
            List<float> resizedCHW = resized.ParallelExtractCHW();

            // Create input data map
            inputVal = Value.CreateBatch(inputVar.Shape, resizedCHW, device);
            inputDataMap.Add(inputVar, inputVal);

            // Create ouput data map. Using null as Value to indicate using system allocated memory.
            // Alternatively, create a Value object and add it to the data map.
            outputDataMap.Add(outputVar, null);

            // Start evaluation on the device
            modelFunc.Evaluate(inputDataMap, outputDataMap, device);

            // Get evaluate result as dense output
            outputBuffer = new List<List<float>>();
            outputVal = outputDataMap[outputVar];
            outputVal.CopyVariableValueTo(outputVar, outputBuffer);

            PrintOutput(outputVar.Shape.TotalSize, outputBuffer);
        }
    }
}

So running this I get

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: CNTKLibraryCSBinding
  at (wrapper managed-to-native) CNTK.CNTKLibPINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_CNTKLib (CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
  at CNTK.CNTKLibPINVOKE+SWIGExceptionHelper..cctor () [0x000ee] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_generic_class_init (intptr)
  at CNTK.CNTKLibPINVOKE..cctor () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at CNTK.DeviceDescriptor.GetCPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTK.DeviceDescriptor.get_CPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTKDemo.MainClass.Main (System.String[] args) [0x0000b] in /Users/loretoparisi/Documents/Projects/AI/CNTKDemo/CNTKDemo/Program.cs:46 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: CNTKLibraryCSBinding
  at (wrapper managed-to-native) CNTK.CNTKLibPINVOKE+SWIGExceptionHelper:SWIGRegisterExceptionCallbacks_CNTKLib (CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate,CNTK.CNTKLibPINVOKE/SWIGExceptionHelper/ExceptionDelegate)
  at CNTK.CNTKLibPINVOKE+SWIGExceptionHelper..cctor () [0x000ee] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at (wrapper managed-to-native) System.Object:__icall_wrapper_mono_generic_class_init (intptr)
  at CNTK.CNTKLibPINVOKE..cctor () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
   --- End of inner exception stack trace ---
  at CNTK.DeviceDescriptor.GetCPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTK.DeviceDescriptor.get_CPUDevice () [0x00000] in <0337cf7b3aa84dd9ab831eb8b7a1f934>:0 
  at CNTKDemo.MainClass.Main (System.String[] args) [0x0000b] in /Users/loretoparisi/Documents/Projects/AI/CNTKDemo/CNTKDemo/Program.cs:46 

That is exactly the same root cause issued by the SWIGExceptionHelper type initializer.

System.TypeInitializationException: The type initializer for 'CNTK.CNTKLibPINVOKE' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SWIGExceptionHelper' threw an exception. ---> System.DllNotFoundException: CNTKLibraryCSBinding

Glad to know that you made progress.
The error seems that CNTKLibraryCSBinding.dll is not available. This is a C++ native dll compliled for running on Windows X64. It might be a path issue. But I am afraid whether it can run on your Mac machine. As I mentioned in earlier messages, it is important first to check whether you can run dlls that are compiled on Windows directly on your Mac machine. If you cannot run them on your machine, you may want to try use docker on your Mac.

Thanks. it seems that theCNTKLibraryCSBinding library is there among with the CNTKLibrary-2.0 dll:

/Users/loretoparisi/Documents/Projects/AI/CNTK/Examples/Evaluation/CNTKLibraryCSEvalCPUOnlyExamples/obj/x64/Release/.NETFramework,Version=v4.5.AssemblyAttribute.cs
/Users/loretoparisi/Documents/Projects/AI/CNTK/x64/CNTKLibraryCSEvalCPUOnlyExamples.Release/CNTKLibraryCSBinding.dll
/Users/loretoparisi/Documents/Projects/AI/CNTK/x64/CNTKLibraryCSEvalCPUOnlyExamples.Release/CNTKLibrary-2.0.dll
/Users/loretoparisi/Documents/Projects/AI/CNTK/x64/CNTKLibraryCSEvalCPUOnlyExamples.Release/libiomp5md.dll
...

so the x64 release output of the project, just copied as you stated those dll are compiled on Windows

CNTKLibraryCSBinding.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
MacBook-Pro-di-Loreto:lyrics loretoparisi$ file /Users/loretoparisi/Documents/Projects/AI/CNTK/x64/CNTKLibraryCSEvalCPUOnlyExamples.Release/CNTKLibrary-2.0.dll 
CNTKLibrary-2.0.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows

So - given that docker is an alternative, the only way should be to compile those dll on o Mac i.e. as output of the CNTK.sln or better the CSharp/CNTKLibraryCSBinding and CSharp/CNTKLibraryManageDll with SWIG to generate the CSharp files in SwigProxyClasses I assume, projects that seems not to be supported in this Mac version of VisualStudio at this point.

There are a couple of more dlls required, as described here. In particular, mkl_cntk_p.dll is not avaible in source (it is a customzied MKL version from Intel). So if you cannot run Windows dlls on your mac, the only choice would be use docker. You can find information about CNTK docker here.

@zhouwangzw Thanks a lot now it's almost clear. Those dll cannot run / cannot be recompiled on macOS Sierra, so there is no way to build CNTK from scratch on macOS starting from sources / provided dll (that are compiled on x86_64 Windows only i.e. one target architecture). So the only option (as for on Linux) it's docker, but I'm not sure it's the best solution btw during the development process. While I thank you very much for your details and help I have a question: Why not provide a simple CNTK library that can be built on macOS/Linux as most of the ML framework several does? Would it be possibile to add more architecture targets to the compiled dll i.e. without releasing the sources - as for some projects can be done in XamarinStudio?

Due to the big effort of MS to build and run .NET everywhere and in terms of ML/AI frameworks, I think that this is something very important for end users, researchers and developers.

Thanks.

@loretoparisi Currently, we have pre-built CNTK library available both for Windows and Linux. The release page provides binary download packages that contain these libraries without requiring compling.
The direct support for MacOS is something we want to do, and we are appreciated if you or the community are interested. Running CNTK in Docker on MacOS is available now though. see more information here: https://docs.docker.com/docker-for-mac/.
Regarding .NET, we are planning to provide Eval C# Library for Mono on Linux. This will be done in the next months.

@zhouwangzw Right, there are linux binaries too, so this would be my option at this time rather than docker, so that I can run on NVIDIA GPUs CUDA/Ubuntu as well.
It would be awesome to have the Eval CSharp library on macOS too.
Closing this issue for now, since at this point is more like a feature request.
Thanks again.

Thanks.
You can use Nvidia GPU from docker too. We have CNTK image published at Dockhub, https://hub.docker.com/r/microsoft/cntk/.

It seems there was an effort to compile CNTK on the mac ... which would give you mac-compatible native frameworks to p-invoke into from .netcore and/or mono:
https://github.com/Microsoft/CNTK/pull/100

It would be great to see a renewed effort there to support the mac :)

@joelmartinez I did know about this, since my issue was more specific, so I did not see that one. By the way it would awesome. Considering what is described here, the issue are the Windows compiled DLLs (like the CNTKLibraryCSBinding) and Intel MKL DLL, etc, that does not build as-it-is on VisualStudio for Mac in the current projects.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

haryngod picture haryngod  路  17Comments

Madgeeno picture Madgeeno  路  31Comments

Arminea picture Arminea  路  19Comments

cha-zhang picture cha-zhang  路  49Comments

robinhad picture robinhad  路  61Comments