我有一个C代码,可以在我的机器上本地编译和运行 . 但是,当我尝试使用icc和-mmic标志进行编译并在Intel Xeon Phi上进行测试时,我收到以下消息:
/cm/local/apps/sge/current/spool/node079/job_scripts/5438755: line 14: ./sequential.mic: cannot execute binary file
我在使用SGE作业提交系统的集群中运行所有测试 .
My makefile contains these lines:
sequential: Makefile
icc -mmic -o sequential.mic sequential.c
qsub sequential.job
The job file for submitting the job is:
#!/bin/sh
#$ -S /bin/sh
#$ -l h_rt=00:10:00
#$ -j y
#$ -l fat,accel=XeoPhi
#$ -cwd
. /etc/bashrc
module load intel/compiler/64/13.3/2013.3.163
./sequential.mic
笔记:
-
如果我用gcc编译并将其提交到常规节点(XEON 5620),一切都按预期工作 .
-
另外,我尝试使用file命令检查mic可执行文件,输出结果为: sequential.mic: ELF 64-bit LSB executable, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped
任何建议都非常受欢迎 .
1 回答
由于代码需要在Intel Xeon Phi上本机运行,因此二进制文件也需要在执行之前加载到机器上 .
因此,最简单的方法是使用以下命令加载二进制文件然后执行 .
/usr/bin/micnativeloadex ./sequential.mic