c # Mono Cudafy под DietPi не удалось запустить - PullRequest
0 голосов
/ 01 октября 2019

У меня DietPi на моем Odroid XU4, у меня там установлена ​​моно-среда выполнения. Я сделал простую программу на c #:

using System;
using Cudafy;
using Cudafy.Host;
using Cudafy.Translator;

namespace cudafy_test
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                CudafyModes.Target = eGPUType.OpenCL;
                CudafyTranslator.Language = eLanguage.OpenCL;
                CudafyModule km = CudafyTranslator.Cudafy();

                string txt;
                try
                {
                    txt = CudafyHost.GetDeviceCount(eGPUType.Cuda).ToString();
                }
                catch
                {
                    txt = "0";
                }
                Console.WriteLine("Cuda devices: " + txt);
                try
                {
                    txt = CudafyHost.GetDeviceCount(eGPUType.OpenCL).ToString();
                }
                catch
                {
                    txt = "0";
                }
                Console.WriteLine("OpenCl devices: " + txt);
                try
                {
                    txt = CudafyHost.GetDeviceCount(eGPUType.Emulator).ToString();
                }
                catch
                {
                    txt = "0";
                }
                Console.WriteLine("Emulations CPU devices: " + txt);

                GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
                gpu.LoadModule(km);
                gpu.Launch().thekernel();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("Hello world");
            Console.ReadKey();
        }

        [Cudafy]
        public static void thekernel()
        {
        }
    }
}

и скомпилировал ее как x86. Даже я проверил цель dll через:

using System;
using System.Reflection;
using System.IO;

namespace project
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo di = new DirectoryInfo(@"dir");
            var files = di.EnumerateFiles("*.dll", SearchOption.TopDirectoryOnly);

            foreach (var d in files)
            {
                var ass = AssemblyName.GetAssemblyName(d.FullName);
                Console.WriteLine(d.Name);
                Console.WriteLine(ass.ProcessorArchitecture.ToString());
                Console.WriteLine(".................");
            }

            Console.WriteLine("Done");
            Console.ReadKey();
        }
    }
}

и это дало результат, что все dll.

enter image description here

Но когдаЯ запускаю в bash:

mono cudafy_test.exe

сообщает мне следующую ошибку:

Необработанное исключение: Система. BadImageFormatException: Не удалось разрешить маркер поля 0x04000001 Имя файла: 'cudafy_test'

У вас есть достаточно опыта с этим? Пожалуйста, дайте мне совет, как это исправить.

1 Ответ

0 голосов
/ 01 октября 2019

Я не должен быть mono-runtime (небольшая моно-установка, но это должна быть большая установка-моно-разработка или моно-полная). Я должен посмотреть, как они отличаются.

...