diff --git a/1.2/ArmnnDriverImpl.cpp b/1.2/ArmnnDriverImpl.cpp
index 4571fe0..6d713e0 100644
--- a/1.2/ArmnnDriverImpl.cpp
+++ b/1.2/ArmnnDriverImpl.cpp
@@ -130,6 +130,17 @@
     armnn::OptimizerOptions OptOptions;
     OptOptions.m_ReduceFp32ToFp16 = float32ToFloat16;
 
+    armnn::BackendOptions gpuAcc("GpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    armnn::BackendOptions cpuAcc("CpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    OptOptions.m_ModelOptions.push_back(gpuAcc);
+    OptOptions.m_ModelOptions.push_back(cpuAcc);
+
     std::vector<std::string> errMessages;
     try
     {
diff --git a/1.3/ArmnnDriverImpl.cpp b/1.3/ArmnnDriverImpl.cpp
index 6168c9d..b2524d3 100644
--- a/1.3/ArmnnDriverImpl.cpp
+++ b/1.3/ArmnnDriverImpl.cpp
@@ -141,6 +141,17 @@
     armnn::OptimizerOptions OptOptions;
     OptOptions.m_ReduceFp32ToFp16 = float32ToFloat16;
 
+    armnn::BackendOptions gpuAcc("GpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    armnn::BackendOptions cpuAcc("CpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    OptOptions.m_ModelOptions.push_back(gpuAcc);
+    OptOptions.m_ModelOptions.push_back(cpuAcc);
+
     std::vector<std::string> errMessages;
     try
     {
diff --git a/ArmnnDriverImpl.cpp b/ArmnnDriverImpl.cpp
index 9c6d51f..936cc6e 100644
--- a/ArmnnDriverImpl.cpp
+++ b/ArmnnDriverImpl.cpp
@@ -53,7 +53,6 @@
     return error;
 }
 
-
 } // namespace
 
 namespace armnn_driver
@@ -105,6 +104,17 @@
     armnn::OptimizerOptions OptOptions;
     OptOptions.m_ReduceFp32ToFp16 = float32ToFloat16;
 
+    armnn::BackendOptions gpuAcc("GpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    armnn::BackendOptions cpuAcc("CpuAcc",
+    {
+        { "FastMathEnabled", options.IsFastMathEnabled() }
+    });
+    OptOptions.m_ModelOptions.push_back(gpuAcc);
+    OptOptions.m_ModelOptions.push_back(cpuAcc);
+
     std::vector<std::string> errMessages;
     try
     {
diff --git a/DriverOptions.cpp b/DriverOptions.cpp
index 1f534b6..d179d65 100644
--- a/DriverOptions.cpp
+++ b/DriverOptions.cpp
@@ -35,6 +35,7 @@
     , m_ClTuningLevel(armnn::IGpuAccTunedParameters::TuningLevel::Rapid)
     , m_EnableGpuProfiling(false)
     , m_fp16Enabled(fp16Enabled)
+    , m_FastMathEnabled(false)
 {
 }
 
@@ -45,6 +46,7 @@
     , m_ClTuningLevel(armnn::IGpuAccTunedParameters::TuningLevel::Rapid)
     , m_EnableGpuProfiling(false)
     , m_fp16Enabled(fp16Enabled)
+    , m_FastMathEnabled(false)
 {
 }
 
@@ -54,6 +56,7 @@
     , m_ClTuningLevel(armnn::IGpuAccTunedParameters::TuningLevel::Rapid)
     , m_EnableGpuProfiling(false)
     , m_fp16Enabled(false)
+    , m_FastMathEnabled(false)
 {
     namespace po = boost::program_options;
 
@@ -104,6 +107,10 @@
          "exhaustive approach "
          "rapid: only 3 lws values should be tested for each kernel ")
 
+        ("fast-math,a",
+         po::bool_switch(&m_FastMathEnabled),
+         "Turns FastMath on")
+
         ("gpu-profiling,p",
          po::bool_switch(&m_EnableGpuProfiling),
          "Turns GPU profiling on")
diff --git a/DriverOptions.hpp b/DriverOptions.hpp
index b05647c..ba0919c 100644
--- a/DriverOptions.hpp
+++ b/DriverOptions.hpp
@@ -31,6 +31,7 @@
     armnn::IGpuAccTunedParameters::Mode GetClTunedParametersMode() const { return m_ClTunedParametersMode; }
     armnn::IGpuAccTunedParameters::TuningLevel GetClTuningLevel() const { return m_ClTuningLevel; }
     bool IsGpuProfilingEnabled() const { return m_EnableGpuProfiling; }
+    bool IsFastMathEnabled() const { return m_FastMathEnabled; }
     bool GetFp16Enabled() const { return m_fp16Enabled; }
     void SetBackends(const std::vector<armnn::BackendId>& backends) { m_Backends = backends; }
 
@@ -45,6 +46,7 @@
     armnn::IGpuAccTunedParameters::TuningLevel m_ClTuningLevel;
     bool m_EnableGpuProfiling;
     bool m_fp16Enabled;
+    bool m_FastMathEnabled;
 };
 
 } // namespace armnn_driver
