فشل التجميع عند استخدام الإصدار 19.10 من PGI Community Edition .
يبدو أن الخطأ يرجع إلى مسار تضمين غير صحيح. ومع ذلك ، لا يؤدي تحديدها صراحةً ( make OCCA_INCLUDE_PATH=/opt/pgi/linux86-64-llvm/19.10/include
) إلى حل المشكلة.
رسالة الخطأ الفعلية هي:
/opt/pgi/linux86-64-llvm/19.10/bin/pgc++ -O3 -fast -Mipa=fast,inline -Msmartalloc -std=c++11 -fPIC -o /path/to/occa/obj/modes.o -mp -c -I/path/to/occa/include -I/opt/pgi/linux86-64-llvm/19.10/include -I/usr/include -I/path/to/occa/src /path/to/occa/src/modes.cpp
pgc++-Warning--Mipa is not supported for this target
"/usr/include/c++/9/cstdlib", line 75: catastrophic error: cannot open source
file "stdlib.h"
#include_next <stdlib.h>
^
1 catastrophic error detected in the compilation of "/path/to/occa/src/modes.cpp".
Compilation terminated.
make: *** [Makefile:132: /path/to/occa/obj/modes.o] Error 2
هذا موجود على نظام Linux Fedora 31 الذي يأتي مع مجلس التعاون الخليجي 9.3.1.
لا يمكنني إعادة إنتاج هذا باستخدام مترجم PGI 20.1
هل تستخدم CMake build أو the make build؟
فقط Makefiles العادي ، لم أحاول حتى CMake من أجل Occa.
أي إصدار ومنصة PGI يعمل هذا؟ هل تستخدم cmake أو Makefiles؟
أنا أستخدم CMake حصريًا. باستخدام PGI 20.1 (أعتقد أنه هذا الإصدار الاحترافي ) على CentOS 7.7 ، لكن مجموعة البرامج تتكون من وحدات EasyBuild النمطية ، لذا فإن معظم التضمينات / المكتبات ذات الصلة ليست تتضمن / مكتبات نظام.
حسنًا ، هل يمكنك اختباره باستخدام الطراز الكلاسيكي بعد ذلك؟ لا يمكنني الوصول إلى PGI 20.1.
يمكنني تجربة ذلك الأسبوع المقبل (لم يعد في العمل) ، وأود أن أطلب منك تجربة متغير CMake أيضًا لجعل اختبارنا متماثلًا.
حاولت باستخدام مستودع occa نظيف و make -j4
ولم أحصل على أخطاء.
pgc++ -O3 -fast -Mipa=fast,inline -Msmartalloc -std=c++11 -fPIC -o /path/to/occa/obj/modes.o -mp -c -I/path/to/occa/include -I/path/to/occa/include -I/path/to/occa/src /path/to/occa/src/modes.cpp
$ pgc++ --version
pgc++ 20.1-0 LLVM 64-bit target on x86-64 Linux -tp haswell
PGI Compilers and Tools
Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved.
إغلاق لأننا لا نستطيع التكاثر