簡體   English   中英

aws批處理上的非法指令

[英]illegal instruction on aws batch

我正在嘗試提交一個演示作業來進行批量計算,以測試我是否可以正確使用 python 模塊“cppyy”。

但是,我收到“非法指令”核心轉儲錯誤。 有趣的是,如果我在本地 ec2 實例上運行的容器(相同圖像)上運行作業,我沒有收到任何錯誤消息。

以下腳本, test.py用於入口點, python3 test.py

import cppyy
  
cppyy.cppdef(r'''
#include <cmath>
#include <vector>
#include <memory>
#include <iostream>


using namespace std;


namespace Test {
    void test() {
        cout << "test-yoyo-5" << endl;

        unsigned long long timestamp = 1629072000081;

        vector<shared_ptr<unsigned long long>> events;
        events.push_back(make_shared<unsigned long long>(1629072000081));

        for (auto &event: events) {
            cout << "static_cast<double>(event->timestamp - timestamp): " << static_cast<double>(*event - timestamp) << endl;
        }
    }
}
''')

from cppyy.gbl import Test

Test.test()

核心轉儲錯誤如下

*** Break *** illegal instruction
test-yoyo-5
 Generating stack trace...
 0x00007f4812ecaf43 in <unknown> from /usr/local/lib/python3.9/site-packages/cppyy_backend/lib/libcppyy_backend.so
 0x00007f48109bae39 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098b879 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098d249 in CPyCppyy::CPPMethod::Execute(void*, long, CPyCppyy::CallContext*) at /tmp/pip-install-vu_2b778/cpycppyy_c9bff3ea1a5d49d695ef46619c091741/src/CPPMethod.cxx:892 from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098782f in CPyCppyy::CPPFunction::Call(CPyCppyy::CPPInstance*&, _object* const*, unsigned long, _object*, CPyCppyy::CallContext*) at /tmp/pip-install-vu_2b778/cpycppyy_c9bff3ea1a5d49d695ef46619c091741/src/CPPFunction.cxx:90 from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f4810992fd1 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x000055e4b7135a2a in _PyEval_EvalFrameDefault + 0x6b8a from python3
 0x000055e4b71f6184 in <unknown> from python3
 0x000055e4b71f64aa in PyEval_EvalCode + 0x3a from python3
 0x000055e4b72365ac in <unknown> from python3
 0x000055e4b72385f0 in PyRun_SimpleFileExFlags + 0x1a0 from python3
 0x000055e4b7138bef in <unknown> from python3
 0x000055e4b7139290 in Py_BytesMain + 0x70 from python3
 0x00007f4817d45d90 in <unknown> from /lib/x86_64-linux-gnu/libc.so.6
 0x00007f4817d45e40 in __libc_start_main + 0x80 from /lib/x86_64-linux-gnu/libc.so.6
 0x000055e4b7137e75 in _start + 0x25 from python3
 *** Break *** illegal instruction
 Generating stack trace...
 0x00007f4812ecaf43 in <unknown> from /usr/local/lib/python3.9/site-packages/cppyy_backend/lib/libcppyy_backend.so
 0x00007f48109bae39 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098b879 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098d249 in CPyCppyy::CPPMethod::Execute(void*, long, CPyCppyy::CallContext*) at /tmp/pip-install-vu_2b778/cpycppyy_c9bff3ea1a5d49d695ef46619c091741/src/CPPMethod.cxx:892 from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f481098782f in CPyCppyy::CPPFunction::Call(CPyCppyy::CPPInstance*&, _object* const*, unsigned long, _object*, CPyCppyy::CallContext*) at /tmp/pip-install-vu_2b778/cpycppyy_c9bff3ea1a5d49d695ef46619c091741/src/CPPFunction.cxx:90 from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x00007f4810992fd1 in <unknown> from /usr/local/lib/python3.9/site-packages/libcppyy.cpython-39-x86_64-linux-gnu.so
 0x000055e4b7135a2a in _PyEval_EvalFrameDefault + 0x6b8a from python3
 0x000055e4b71f6184 in <unknown> from python3
 0x000055e4b71f64aa in PyEval_EvalCode + 0x3a from python3
 0x000055e4b72365ac in <unknown> from python3
 0x000055e4b72385f0 in PyRun_SimpleFileExFlags + 0x1a0 from python3
 0x000055e4b7138bef in <unknown> from python3
 0x000055e4b7139290 in Py_BytesMain + 0x70 from python3
 0x00007f4817d45d90 in <unknown> from /lib/x86_64-linux-gnu/libc.so.6
 0x00007f4817d45e40 in __libc_start_main + 0x80 from /lib/x86_64-linux-gnu/libc.so.6
 0x000055e4b7137e75 in _start + 0x25 from python3
static_cast<double>(event->timestamp - timestamp): 

您沒有指定 cppyy 的版本,但最有可能的原因是預編譯的 header (PCH)。 cppyy 默認使用-march=native標志,它啟用(如果主機支持)諸如 AVX 之類的東西。 如果您隨后將帶有 PCH 的實例發送到不支持它的機器,任何 JITted 代碼仍可能使用 AVX b/ca 編譯時變量__AVX__將被烘焙到其中。

(如果在主機上可用,舊版本的 cppyy 明確使用-mavx 。)

在異構環境中運行時,您可以設置CLING_REBUILD_PCH=1來解決這個問題,甚至可以設置 CLING_STANDARD_PCH CLING_STANDARD_PCH=none完全沒有 PCH,因為 PCH 僅在從不同進程多次導入 cppyy 時才有意義(它僅節省啟動時間).

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM