UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Adventurer
Adventurer
6,465 Views
Registered: ‎09-02-2014

"cannot execute binary file" at NIMBIX

Jump to solution

Hello,

 

I want to run Hashcat software at KU115 through OpenCL.

I found that Nimbix has such opportunity, but after all preparing, I get "cannot execute binary file" error.

 

Whole log file:

 

Opening Vault...
Generating SSH key pair for this job...
Initializing NAE...
CPU cores count:  16
CPU thread count: 16
Locking password for user root.
passwd: Success
Locking password for user nimbix.
passwd: Success
Starting NAE...
NAE started in 1 second(s).

Initializing networking... 

**********************  
+ export LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ export XILINX_OPENCL=/opt/sdx_runtime 
+ XILINX_OPENCL=/opt/sdx_runtime 
+ exec ./hashcat64.exe -b 
/usr/local/bin/xilinx_runtime: line 34: /data/h/hashcat64.exe: cannot execute binary file 
/usr/local/bin/xilinx_runtime: line 34: /data/h/hashcat64.exe: Success 

 

I tried to run x32 and x64 versions. And previous version of Hashcut too.

What can be the problem?

 

0 Kudos
1 Solution

Accepted Solutions
Xilinx Employee
Xilinx Employee
10,800 Views
Registered: ‎03-18-2011

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@alexey123 SDAccel is a compiler tool chain for creating FPGA device binaries for kernels written in OpenCL C, C and C+. The application host code uses standard OpenCL APIs to communicate between the host processor and the kernels in the FPGA fabric. The one main difference between a FPGA OpenCL device and a CPU/GPU is that FPGA devices do not support runtime compilation of the kernel source code into executable binaries for the acceleration device. You have to pre-compile the kernels into binaries which are then loaded by the OpenCL host application. The process of porting the application to SDAccel is to use SDAccel to generate binaries for the kernels offline. 

 

For more information on how to get started with SDAccel, you can find the user guides and the getting started guide at

 

https://www.xilinx.com/products/design-tools/software-zone/sdaccel.html#documentation

 

View solution in original post

10 Replies
Highlighted
Xilinx Employee
Xilinx Employee
6,338 Views
Registered: ‎02-03-2016

Re: "cannot execute binary file" at NIMBIX

Jump to solution

Hi alexey123,

 

Have you tried running this using the software emulation flow on your development system?  Also, does the binary have execute permissions (i.e. chmod +x hashcat64.exe)?

 

Thanks,

Spenser

0 Kudos
Adventurer
Adventurer
6,261 Views
Registered: ‎09-02-2014

Re: "cannot execute binary file" at NIMBIX

Jump to solution

Hello @spenserg,

 

Binary has all execute permissions: at FileZilla I set 777 to all files in application directory.

 

No, I didn't run it using the software emulation. I thought it's for SDAccel applications only.

 

Software, that I want to run, is third party application, that can work with OpenCL. I supposed that it will work with SDAccel board as is, or it should be compiled in special way?

0 Kudos
Adventurer
Adventurer
6,241 Views
Registered: ‎09-02-2014

Re: "cannot execute binary file" at NIMBIX

Jump to solution

It looks strange, but...

Hashcat has .bin and .exe files in installation directory and Nimbix asks .exe file to run, despite the fact, on computer runs Linux (as I understand).

2017-01-09 19-44-04 JARVICE - Google Chrome.png

And attempts to run exe results with "cannot execute binary file" error.

 

But!

 

When I renamed .bin to .exe, it could run Hashcat, but with different errors.

 

Log files:

1. 32-bit version:

Opening Vault...
Generating SSH key pair for this job...
Initializing NAE...
CPU cores count:  16
CPU thread count: 16
Locking password for user root.
passwd: Success
Locking password for user nimbix.
passwd: Success
Starting NAE...
NAE started in 2 second(s).

Initializing networking... 
** Generating timeline trace report as part of run 
** Turning on device profiling as part of run 
 
********************** 
 
+ export LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ export XILINX_OPENCL=/opt/sdx_runtime 
+ XILINX_OPENCL=/opt/sdx_runtime 
+ exec ./hashcat32.exe -b 
hashcat (v3.20) starting in benchmark mode... 
 
 [31mCan not find an OpenCL ICD loader library [0m  
 [31m [0m  
 [31mYou're probably missing the OpenCL runtime and driver installation [0m  
 [31m* AMD users on Linux require "AMDGPU-Pro Driver" (16.40 or later) [0m  
 [31m* Intel CPU users require "OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1 or later) [0m  
 [31m* Intel GPU on Linux users require "OpenCL 2.0 GPU Driver Package for Linux" (2.0 or later) [0m  
 [31m* NVidia users require "NVIDIA Driver" (367.x or later) [0m 
 
Started: Mon Jan  9 16:31:33 2017 
 [2K Stopped: Mon Jan  9 16:31:33 2017 

2. 64-bit version:

Opening Vault...
Generating SSH key pair for this job...
Initializing NAE...
CPU cores count:  16
CPU thread count: 16
Locking password for user root.
passwd: Success
Locking password for user nimbix.
passwd: Success
Starting NAE...
NAE started in 1 second(s).

Initializing networking... 
********************** 
 
+ export LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ LD_LIBRARY_PATH=/data/h/lib:/opt/sdx_runtime/runtime/lib/x86_64 
+ export XILINX_OPENCL=/opt/sdx_runtime 
+ XILINX_OPENCL=/opt/sdx_runtime 
+ exec ./hashcat64.exe -b 
hashcat (v3.20) starting in benchmark mode... 
 
 [31m* Device #1: Device not available [0m  
 [31m* Device #1: Device does not support base atomics [0m  
 [31m* Device #1: Device does not support byte addressable store [0m  
 [31m* Device #1: Device local mem size is too small [0m  
 [31mNo devices found/left [0m 
 
Started: Mon Jan  9 16:29:21 2017 
 [2K Stopped: Mon Jan  9 16:29:21 2017 

 

And it seems to be a hardware or system problem on your side. 

0 Kudos
Xilinx Employee
Xilinx Employee
6,227 Views
Registered: ‎02-03-2016

Re: "cannot execute binary file" at NIMBIX

Jump to solution

Hey alexy123,

 

The ICD loader is a 64 bit shared library as such it will only run with 64 bit binaries.  WRT the output about device to

 

 [31m* Device #1: Device not available [0m  
 [31m* Device #1: Device does not support base atomics [0m  
 [31m* Device #1: Device does not support byte addressable store [0m  
 [31m* Device #1: Device local mem size is too small [0m  
 [31mNo devices found/left [0m 

 It appears that you have not ported the application to work with SDAccel.

 

Thanks,

Spenser

Adventurer
Adventurer
6,207 Views
Registered: ‎09-02-2014

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@spenserg, I thought that OpenCL application should work on each OpenCL device... so what can I do?

If I have got sources of my application, can I easity rebuild it in SDAccel development environment? 

0 Kudos
Xilinx Employee
Xilinx Employee
6,187 Views
Registered: ‎02-03-2016

Re: "cannot execute binary file" at NIMBIX

Jump to solution

Hey alexy123,

 

Feel free to attempt this port.  It is likely possible to port this but it will take time and effort.  If this is your first SDAccel project I would recommend starting with something simpler.

 

Thanks,

Spenser

0 Kudos
Adventurer
Adventurer
6,174 Views
Registered: ‎09-02-2014

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@spenserg it turns out that SDAccel is not truely OpenCL, as it requires to port OpenCL applications?

0 Kudos
Xilinx Employee
Xilinx Employee
10,801 Views
Registered: ‎03-18-2011

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@alexey123 SDAccel is a compiler tool chain for creating FPGA device binaries for kernels written in OpenCL C, C and C+. The application host code uses standard OpenCL APIs to communicate between the host processor and the kernels in the FPGA fabric. The one main difference between a FPGA OpenCL device and a CPU/GPU is that FPGA devices do not support runtime compilation of the kernel source code into executable binaries for the acceleration device. You have to pre-compile the kernels into binaries which are then loaded by the OpenCL host application. The process of porting the application to SDAccel is to use SDAccel to generate binaries for the kernels offline. 

 

For more information on how to get started with SDAccel, you can find the user guides and the getting started guide at

 

https://www.xilinx.com/products/design-tools/software-zone/sdaccel.html#documentation

 

View solution in original post

Adventurer
Adventurer
6,058 Views
Registered: ‎09-02-2014

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@vallina, thanks for reply!

If I understand correctly, if I want to run any OpenCL application on FPGA, I should get sources of kernel and just compile it in SDAccel, targeting to certain FPGA?

And I don't need to edit kernel source or application binary.

0 Kudos
Xilinx Employee
Xilinx Employee
3,910 Views
Registered: ‎03-18-2011

Re: "cannot execute binary file" at NIMBIX

Jump to solution

@alexey123 yes your understanding it correct. You do not need to edit the kernel code to get something that functionally works on the FPGA. For performance, you will have to modify the kernel source to take into account the FPGA architecture same as you would for a GPU/CPU. The host application needs to be modified to use clCreateProgramWithBinary API instead of clCreateProgramWithSource API.

 

0 Kudos