From ff8556294b8f5117d514345480963d6c9f2d7934 Mon Sep 17 00:00:00 2001 From: Helen Schottenhamml <helen.schottenhamml@fau.de> Date: Mon, 27 Mar 2023 10:22:58 +0200 Subject: [PATCH] ARM for linux --- pystencils/backends/simd_instruction_sets.py | 3 ++- pystencils/cpu/cpujit.py | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/pystencils/backends/simd_instruction_sets.py b/pystencils/backends/simd_instruction_sets.py index 6af548048..cdb2ee5cf 100644 --- a/pystencils/backends/simd_instruction_sets.py +++ b/pystencils/backends/simd_instruction_sets.py @@ -43,7 +43,8 @@ def get_supported_instruction_sets(): return _cache.copy() if 'PYSTENCILS_SIMD' in os.environ: return os.environ['PYSTENCILS_SIMD'].split(',') - if platform.system() == 'Darwin' and platform.machine() == 'arm64': # not supported by cpuinfo + if (platform.system() == 'Darwin' or platform.system() == 'Linux') and platform.machine() == 'arm64': + # not supported by cpuinfo return ['neon'] elif platform.system() == 'Linux' and platform.machine().startswith('riscv'): # not supported by cpuinfo libc = CDLL('libc.so.6') diff --git a/pystencils/cpu/cpujit.py b/pystencils/cpu/cpujit.py index ca4f26794..aebefec91 100644 --- a/pystencils/cpu/cpujit.py +++ b/pystencils/cpu/cpujit.py @@ -13,7 +13,7 @@ in a configuration file. 3. or in your home directory at ``~/.config/pystencils/config.json`` (Linux) or ``%HOMEPATH%\.pystencils\config.json`` (Windows) -If no configuration file is found, a default configuration is created at the above mentioned location in your home. +If no configuration file is found, a default configuration is created at the above-mentioned location in your home. So run *pystencils* once, then edit the created configuration file. @@ -23,7 +23,7 @@ Compiler Config (Linux) - **'os'**: should be detected automatically as 'linux' - **'command'**: path to C++ compiler (defaults to 'g++') - **'flags'**: space separated list of compiler flags. Make sure to activate OpenMP in your compiler -- **'restrict_qualifier'**: the restrict qualifier is not standardized accross compilers. +- **'restrict_qualifier'**: the 'restrict' qualifier is not standardized across compilers. For most Linux compilers the qualifier is ``__restrict__`` @@ -39,7 +39,7 @@ Then 'cl.exe' is used to compile. where Visual Studio is installed. This path has to contain a file called 'vcvarsall.bat' - **'arch'**: 'x86' or 'x64' - **'flags'**: flags passed to 'cl.exe', make sure OpenMP is activated -- **'restrict_qualifier'**: the restrict qualifier is not standardized across compilers. +- **'restrict_qualifier'**: the 'restrict' qualifier is not standardized across compilers. For Windows compilers the qualifier should be ``__restrict`` """ @@ -146,7 +146,9 @@ def read_config(): ('flags', '-Ofast -DNDEBUG -fPIC -march=native -fopenmp -std=c++11'), ('restrict_qualifier', '__restrict__') ]) - if platform.machine().startswith('ppc64'): + if platform.machine() == 'arm64': + default_compiler_config['flags'] = default_compiler_config['flags'].replace('-march=native', '') + elif platform.machine().startswith('ppc64'): default_compiler_config['flags'] = default_compiler_config['flags'].replace('-march=native', '-mcpu=native') elif platform.system().lower() == 'windows': -- GitLab