From e71793d806b5d53fa6b1d080fb6e73b52ddcc829 Mon Sep 17 00:00:00 2001 From: Damian Rouson Date: Tue, 16 Apr 2024 16:15:21 -0700 Subject: [PATCH 1/2] test(trainable_engine): reduce iterations with ifx --- test/trainable_engine_test_m.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/trainable_engine_test_m.F90 b/test/trainable_engine_test_m.F90 index 8b394ba22..0923e69fb 100644 --- a/test/trainable_engine_test_m.F90 +++ b/test/trainable_engine_test_m.F90 @@ -286,7 +286,7 @@ function xor_gate_with_random_weights() result(test_passes) !! Depending on where in the random-number sequence the weights start, this test can pass for lower !! numbers of iterations, e.g., 400000. Using more iterations gives more robust convergence. #else - integer, parameter :: num_inputs=2, mini_batch_size = 1, num_iterations=52219 + integer, parameter :: num_inputs=2, mini_batch_size = 1, num_iterations=49000 !! Reducing num_iterations yields a less robust test, but increasing num_iterations causes this !! test to crash when compiled with the Intel ifx compiler. #endif From 17066e4d39342919c53489e1729ed61c6eb5c271 Mon Sep 17 00:00:00 2001 From: Damian Rouson Date: Tue, 16 Apr 2024 16:17:01 -0700 Subject: [PATCH 2/2] build(ifx): work around GPU offload ICE --- src/inference_engine/inference_engine_s.F90 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/inference_engine/inference_engine_s.F90 b/src/inference_engine/inference_engine_s.F90 index 385a43fa9..8591b76c7 100644 --- a/src/inference_engine/inference_engine_s.F90 +++ b/src/inference_engine/inference_engine_s.F90 @@ -308,11 +308,26 @@ function get_key_value(line) result(value_) difference%nodes_difference_(l) = self%nodes_(l) - rhs%nodes_(l) associate(n => self%nodes_) +#ifndef __INTEL_COMPILER do concurrent(l = 1:ubound(n,1)) difference%weights_difference_(1:n(l),1:n(l-1),l) = self%weights_(1:n(l),1:n(l-1),l) - rhs%weights_(1:n(l),1:n(l-1),l) difference%biases_difference_(1:n(l),l) = self%biases_(1:n(l),l) - rhs%biases_(1:n(l),l) difference%nodes_difference_(l) = self%nodes_(l) - rhs%nodes_(l) end do +#else + block + integer j, k + do l = 1, ubound(n,1) + do j = 1, n(l) + do k = 1, n(l-1) + difference%weights_difference_(j,k,l) = self%weights_(j,k,l) - rhs%weights_(j,k,l) + difference%biases_difference_(j,l) = self%biases_(j,l) - rhs%biases_(j,l) + difference%nodes_difference_(l) = self%nodes_(l) - rhs%nodes_(l) + end do + end do + end do + end block +#endif end associate end block