Skip to content
Snippets Groups Projects

Add experimental half precison support

Merged Markus Holzer requested to merge holzer/pystencils:halfP into master
Viewing commit 533afcdf
Show latest version
2 files
+ 22
3
Preferences
Compare changes
Files
2
+ 10
0
@@ -50,6 +50,7 @@ import platform
@@ -50,6 +50,7 @@ import platform
import shutil
import shutil
import subprocess
import subprocess
import textwrap
import textwrap
 
import warnings
from collections import OrderedDict
from collections import OrderedDict
from sysconfig import get_paths
from sysconfig import get_paths
from tempfile import TemporaryDirectory, NamedTemporaryFile
from tempfile import TemporaryDirectory, NamedTemporaryFile
@@ -522,6 +523,15 @@ class ExtensionModuleCode:
@@ -522,6 +523,15 @@ class ExtensionModuleCode:
for ast in self._ast_nodes:
for ast in self._ast_nodes:
for field in ast.fields_accessed:
for field in ast.fields_accessed:
if isinstance(field.dtype, BasicType) and field.dtype.is_half():
if isinstance(field.dtype, BasicType) and field.dtype.is_half():
 
if not platform.machine() in ['arm64', 'aarch64']:
 
warnings.warn(f"The AST contains half precision data types but platform is: "
 
f"{platform.machine()}. Using half precision might not work properly on this "
 
f"platform")
 
 
if 'clang' not in get_compiler_config()['command']:
 
warnings.warn(f"The AST contains half precision data types but compiler is: "
 
f"{get_compiler_config()['command']}. Using half precision is only tested with "
 
f"the Clang compiler")
# Add the half precision header only if half precision numbers occur in the AST
# Add the half precision header only if half precision numbers occur in the AST
headers.add('"half_precision.h"')
headers.add('"half_precision.h"')
headers.update(get_headers(ast))
headers.update(get_headers(ast))