Ich habe eine Anwendung mit dem Yeppp! SIMD-Bibliothek. Die Anwendung wird in C# geschrieben. Es läuft perfekt auf Windows x86-32 und x86-64. Allerdings, wenn ich die Anwendung auf einem Raspberry Pi mit Mono ausführen, erhalte ich die folgende Ausnahme (nicht sicher, ob es ein ARM-Problem, ein Mono-Problem oder etwas anderes ist). Ich habe versucht, als root nur zu überprüfen, auch die gleiche Ausnahme. Ich bemerkte den "UnixLibraryLoader" -Teil des Stack-Trace, also stellte ich sicher, dass die Yeppp-DLL (Yeppp.CLR.Bundle.dll) im selben Verzeichnis wie die ausführbare Datei ist, was sie ist. Ist das ein Problem mit meinem Code, der Art, wie ich ihn kompiliert habe, oder einem Problem mit der Bibliothek?Ausführen von Yeppp-Bibliothek mit Mono auf Raspbery Pi
Stacktrace:
at <unknown> <0xffffffff>
at (wrapper managed-to-native) Yeppp.UnixLibraryLoader.dlopen (string,int) <0xffffffff>
at Yeppp.UnixLibraryLoader.Yeppp.INativeLibraryLoader.LoadLibrary (string) <0x0002f>
at Yeppp.NativeLibrary..ctor (string,Yeppp.INativeLibraryLoader) <0x0006b>
at Yeppp.Loader.LoadNativeLibrary() <0x000db>
at Yeppp.Library.Init() <0x00027>
at <Module>..cctor() <0x0000b>
at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>
at <unknown> <0xffffffff>
at SimdSpeedTest.Program.DisplayCpuFeatures() <0x00033>
at SimdSpeedTest.Program.Main (string[]) <0x000c7>
at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) <0xffffffff>
Native stacktrace:
Debug info from gdb:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[New Thread 0xb5b7b430 (LWP 2272)]
0xb6eabaac in waitpid() from /lib/arm-linux-gnueabihf/libpthread.so.0
Id Target Id Frame
2 Thread 0xb5b7b430 (LWP 2272) "mono" 0xb6ea9770 in [email protected]@GLIBC_2.4() from /lib/arm-linux-gnueabihf/libpthread.so.0
* 1 Thread 0xb6f80000 (LWP 2271) "mono" 0xb6eabaac in waitpid() from /lib/arm-linux-gnueabihf/libpthread.so.0
Thread 2 (Thread 0xb5b7b430 (LWP 2272)):
#0 0xb6ea9770 in [email protected]@GLIBC_2.4() from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0x001fff10 in mono_sem_wait (sem=0x2f523c, alertable=1) at mono-semaphore.c:119
#2 0x0017db28 in finalizer_thread (unused=<optimized out>) at gc.c:1073
#3 0x001625b4 in start_wrapper_internal (data=0xb0d8c8) at threads.c:643
#4 start_wrapper (data=0xb0d8c8) at threads.c:688
#5 0x001f5c30 in thread_start_routine (args=0xac86c0) at wthreads.c:294
#6 0x00204268 in inner_start_thread (arg=0xac86b4) at mono-threads-posix.c:49
#7 0xb6ea2c00 in start_thread() from /lib/arm-linux-gnueabihf/libpthread.so.0
#8 0xb6e0f728 in ??() from /lib/arm-linux-gnueabihf/libc.so.6
#9 0xb6e0f728 in ??() from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Thread 1 (Thread 0xb6f80000 (LWP 2271)):
#0 0xb6eabaac in waitpid() from /lib/arm-linux-gnueabihf/libpthread.so.0
#1 0x000b2148 in mono_handle_native_sigsegv (signal=<optimized out>, ctx=<optimized out>) at mini-exceptions.c:2299
#2 0x00027af8 in mono_sigsegv_signal_handler (_dummy=11, info=0xbe9280e0, context=0xbe928160) at mini.c:6777
#3 <signal handler called>
#4 0xb6f6d754 in ??() from /lib/ld-linux-armhf.so.3
#5 0xbe9284a0 in ??()
Cannot access memory at address 0x3000
#6 0xbe9284a0 in ??()
Cannot access memory at address 0x3000
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
unterstützt Cool, dass du Yeppp benutzt! ! –
Ja, ich experimentiere schon eine Weile damit. Ich mag es wirklich, wie es für mehrere Sprachen und Betriebssysteme verfügbar ist. Ich kann es kaum erwarten, es dann mit parallel/async/concurrent/multi-threaded-Code etc. für noch mehr Leistung zu kombinieren. – user9993
Ich starre jetzt mit Raspberry-Pi. Ich habe Intel intrinsics für SIMD benutzt, aber ich möchte meinen Code auf ARM jetzt, also brauche ich NEON. Yepp! scheint eine gute Wahl zu sein, also werde ich es wahrscheinlich bald ausprobieren. Ich kann dir nicht helfen, aber der Autor von Yeppp! ist auf SO und kann Ihre Frage beantworten. –