gnudatalanguage / gdl

GDL - GNU Data Language
GNU General Public License v2.0
274 stars 61 forks source link

add Apple Silicon builds to CI (using macos-14 images); add WITH_OPENMP option to build_gdl.sh #1788

Closed slayoo closed 2 months ago

codecov[bot] commented 5 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 43.72%. Comparing base (e1d7f28) to head (5e94f11). Report is 17 commits behind head on master.

:exclamation: Current head 5e94f11 differs from pull request most recent head a93ce86. Consider uploading reports for the commit a93ce86 to get more accurate results

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #1788 +/- ## ========================================== - Coverage 43.89% 43.72% -0.17% ========================================== Files 376 376 Lines 97442 97401 -41 Branches 19888 19918 +30 ========================================== - Hits 42769 42589 -180 - Misses 54673 54812 +139 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

GillesDuvert commented 4 months ago

@slayoo seems that macos-14 has a problem with MPI? Not sure if it is indeed that, since compiling on Apple Silicon with OpenMP using our cmake/build_gdl.sh inevitably make gdl crash on a sigtrap. Only by removing OPENMP do the executable work.

slayoo commented 4 months ago

@GillesDuvert, indeed disabling OpenMP for Apple Silicon helps! Thanks!

Now, we have only two tests failing there:

The following tests FAILED:
     66 - test_byte_conversion.pro (Failed)
Errors while running CTest
     67 - test_bytscl.pro (Failed)

the first fails with:

% Compiled module: TEST_BYTE_CONVERSION.
% Compiled module: BANNER_FOR_TESTSUITE.
% Compiled module: GDL_IDL_FL.
% TEST_BYTE_BUG_586:   NO errors encountered during TEST_BYTE_BUG_586 tests  
% Compiled module: ERRORS_CUMUL.
% TEST_BYTE_BASIC_32768: 
  NO errors encountered during TEST_BYTE_BASIC_32768 tests  
% Compiled module: ERRORS_ADD.
% TEST_BYTE_BASIC_32768: Error on operation : input as Long for :       -32765
% TEST_BYTE_BASIC_32768: Error on operation : input as Long for :       -32766
% TEST_BYTE_BASIC_32768: Error on operation : input as Long for :       -32767
% TEST_BYTE_BASIC_32768: Error on operation : input as Long for :       -32769
% TEST_BYTE_BASIC_32768: Error on operation : input as Long for :       -32770
% TEST_BYTE_BASIC_32768: 
=============================================================
% TEST_BYTE_BASIC_32768: 
=                                                           =
% TEST_BYTE_BASIC_32768: 
=  5 errors encountered during TEST_BYTE_BASIC_32768 tests  =
% TEST_BYTE_BASIC_32768: 
=                                                           =
% TEST_BYTE_BASIC_32768: 
=============================================================
% TEST_BYTE_BASIC_32768: ==============================================
% TEST_BYTE_BASIC_32768: =                                            =
% TEST_BYTE_BASIC_32768: =  For details, run it again with /DEBUG !!  =
% TEST_BYTE_BASIC_32768: =                                            =
% TEST_BYTE_BASIC_32768: ==============================================
% TEST_BYTE_STRING2BYTE: 
  NO errors encountered during TEST_BYTE_STRING2BYTE tests  
2017-03-11 : First run should be OK in GDL
% TEST_BYTE_WITH_LOOP: 
  NO errors encountered during TEST_BYTE_WITH_LOOP tests  
2017-03-11 : Second run should be BAD in GDL
% TEST_BYTE_WITH_LOOP: 
  NO errors encountered during TEST_BYTE_WITH_LOOP tests  
% TEST_BYTE_CONVERSION: 
============================================================
% TEST_BYTE_CONVERSION: 
=                                                          =
% TEST_BYTE_CONVERSION: 
=  5 errors encountered during TEST_BYTE_CONVERSION tests  =
% TEST_BYTE_CONVERSION: 
=                                                          =
% TEST_BYTE_CONVERSION: 
============================================================

the second with:

% Compiled module: TEST_BYTSCL.
PLEASE contribute to add tests on MIN, MAX, TOP keywords
% Compiled module: DIST.
% Compiled module: ERRORS_ADD.
% TEST_BYTSCL_TOP: Error on operation : Pb with top=     -128, min/max :        0,        0
% Compiled module: BANNER_FOR_TESTSUITE.
% Compiled module: GDL_IDL_FL.
% TEST_BYTSCL_RAMPS: =========================================================
% TEST_BYTSCL_RAMPS: =                                                       =
% TEST_BYTSCL_RAMPS: =  1 errors encountered during TEST_BYTSCL_RAMPS tests  =
% TEST_BYTSCL_RAMPS: =                                                       =
% TEST_BYTSCL_RAMPS: =========================================================
% Compiled module: ERRORS_CUMUL.
% TEST_BYTSCL_RAMPS:   NO errors encountered during TEST_BYTSCL_RAMPS tests  
% TEST_BYTSCL_RAMPS_NAN: 
  NO errors encountered during TEST_BYTSCL_RAMPS_NAN tests  
% TEST_BYTSCL_IDL_PROBLEM: 
  NO errors encountered during TEST_BYTSCL_IDL_PROBLEM tests  
% TEST_BYTSCL: ===================================================
% TEST_BYTSCL: =                                                 =
% TEST_BYTSCL: =  1 errors encountered during TEST_BYTSCL tests  =
% TEST_BYTSCL: =                                                 =
% TEST_BYTSCL: ===================================================
GillesDuvert commented 4 months ago

ah this will be easier to solve than the openMP parallel computing that Apple spent a lot of efforts to make crash on its products.

GillesDuvert commented 4 months ago

@slayoo strange I have access to an M1, and these 2 test pass OK. However test_fix does not pass. The machine says:

GDL> !version
{
    "ARCH": "arm64",
    "OS": "darwin",
    "OS_FAMILY": "unix",
    "OS_NAME": "Mac OS X",
    "RELEASE": "8.2",
    "BUILD_DATE": "Apr 11 2024",
    "MEMORY_BITS": 64,
    "FILE_OFFSET_BITS": 64
}
slayoo commented 4 months ago

@alaingdl could you please check if test_byte_conversion.pro and test_bytscl.pro work OK on Apple Silicon for you? (here, these are the only two tests that fail on CI on Apple Silicon, but they seem to work OK for Gilles on M1 CPU) Thanks