diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6cb490efe..0c948d264 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -8,17 +8,18 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macOS-latest] + os: [macOS-12] fail-fast: true env: FC: gfortran - GCC_V: 13 + GCC_V: 14 steps: - name: Checkout code uses: actions/checkout@v2 - name: Install Dependencies MacOS + if: contains(matrix.os, 'mac') run: | brew install gcc@${GCC_V} sudo ln -s $(which gfortran-${GCC_V}) $(dirname $(which gfortran-${GCC_V}))/gfortran diff --git a/README.md b/README.md index be127960b..2df205c2a 100644 --- a/README.md +++ b/README.md @@ -48,54 +48,41 @@ The available optimizers for training neural networks are 1. Stochastic gradient descent 2. Adam (recommended) -Prerequisite ------------- -Building Inference-Engine requires a Fortran 2018 compiler. With `gfortran`, the required minimum compiler version is 13. - -Building and Testing --------------------- +Build and Test +-------------- +With the [Fortran Package Manager] (`fpm`) and a recent version of a Fortran compiler installed, enter one of the commmands below to build the Inference-Engine library and run the test suite: ### GNU (`gfortran`) -#### macOS -To build, and test Inference-Engine with `gfortran` in your `PATH` and your present working directory set to your -local copy of the `inference-engine` repository, enter the following commands in macOS Terminal window -(using the default `zsh` shell or `bash`): -``` -./setup.sh -``` -whereupon the trailing output will provide instructions for running the codes in the [example](./example) subdirectory. - -#### Linux (including the Windows Subsystem for Linux) -The above `setup.sh` script assumes that you have either have `fpm` installed and or that the script can use Homebrew -to install it. If neither is true, please [install `fpm`] and then build and test Inference-Engine with the -following command: ``` fpm test ``` -### Intel (`ifx`) -- under development -As of this writing, `ifx` compiles all of Inference-Engine and all tests pass except tests involving training. -We are working with Intel on supporting training with `ifx`. If you would like to build Inference-Engine and -run the tests, please execute the following command +### Intel (`ifx`) ``` -fpm test --compiler ifx --flag "-coarray -coarray-num-images=1" +fpm test --compiler ifx ``` #### _Experimental:_ Automatic offloading of `do concurrent` to GPUs This capability is under development with the goal to facilitate GPU automatic offloading via the following command: ``` -fpm test --compiler ifx --flag "-coarray -coarray-num-images=1 -fopenmp-target-do-concurrent -qopenmp -fopenmp-targets=spir64" +fpm test --compiler ifx --flag "-fopenmp-target-do-concurrent -qopenmp -fopenmp-targets=spir64" ``` +### LLVM (`flang-new`) +Support for LLVM `flang-new` is under development and currently requires building `flang-new` from source with assumed-rank support enabled: +``` +fpm test --compiler flang-new --flag "-mmlir -allow-assumed-rank" +``` +A script that might help with building `flang-new` from source is in the [handy-dandy] repository. + + ### NAG (`nagfor`) -- under development -As of this writing, `nagfor` compiles all of Inference-Engine and passes only tests that involve neither inference nor training. -We are working with NAG on supporting inference and training with `nagfor`. ``` -fpm test --compiler nagfor --flag "-fpp -f2018 -coarray=single" +fpm test --compiler nagfor --flag -fpp ``` ### HPE (`crayftn.sh`) -- under development -As of this writing, the Cray Compiler Environment (CCE) Fortran compiler does not build Inference-Engine. +Support for the Cray Compiler Environment (CCE) Fortran compiler is under development. Building with the CCE `ftn` compiler wrapper requires an additional trivial wrapper. With a shell script named `crayftn.sh` of the following form in your `PATH` ``` @@ -146,3 +133,5 @@ Please see the Inference-Engine GitHub Pages [site] for HTML documentation gener [sourcery]: https://github.com/sourceryinstitute/sourcery [rojff]: https://gitlab.com/everythingfunctional/rojff [install `fpm`]: https://fpm.fortran-lang.org/install/index.html#install +[Fortran Package Manager]: https://github.com/fortran-lang/fpm +[handy-dandy]: https://github.com/rouson/handy-dandy/blob/main/src/fresh-llvm-build.sh diff --git a/example/concurrent-inferences.f90 b/example/concurrent-inferences.f90 index 65e35d0f8..e6aaef9da 100644 --- a/example/concurrent-inferences.f90 +++ b/example/concurrent-inferences.f90 @@ -4,7 +4,7 @@ program concurrent_inferences !! This program demonstrates how to read a neural network from a JSON file !! and use the network to perform concurrent inferences. use inference_engine_m, only : inference_engine_t, tensor_t, infer - use sourcery_m, only : string_t, command_line_t, file_t + use julienne_m, only : string_t, command_line_t, file_t use assert_m, only : assert use iso_fortran_env, only : int64, real64 implicit none diff --git a/example/learn-addition.F90 b/example/learn-addition.F90 index fd3acf643..8d5a35510 100644 --- a/example/learn-addition.F90 +++ b/example/learn-addition.F90 @@ -22,7 +22,7 @@ program learn_addition !! This trains a neural network to learn the following six polynomial functions of its eight inputs. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t + use julienne_m, only : string_t, file_t, command_line_t, bin_t use assert_m, only : assert, intrinsic_array_t use addition_m, only : y implicit none @@ -84,7 +84,7 @@ program learn_addition block real, parameter :: tolerance = 1.E-06 integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -94,7 +94,8 @@ program learn_addition do p = 1, num_pairs print "(6G13.5, a1, 6G13.5)",network_outputs(p)%values(), "|", desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/example/learn-exponentiation.F90 b/example/learn-exponentiation.F90 index 38c5875e1..9cdd0efba 100644 --- a/example/learn-exponentiation.F90 +++ b/example/learn-exponentiation.F90 @@ -22,7 +22,7 @@ program learn_exponentiation !! This trains a neural network to learn the following six polynomial functions of its eight inputs. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t + use julienne_m, only : string_t, file_t, command_line_t, bin_t use assert_m, only : assert, intrinsic_array_t use exponentiation_m, only : y implicit none @@ -84,7 +84,7 @@ program learn_exponentiation block real, parameter :: tolerance = 1.E-06 integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -94,7 +94,8 @@ program learn_exponentiation do p = 1, num_pairs print "(6G13.5, a1, 6G13.5)",network_outputs(p)%values(), "|", desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/example/learn-microphysics-procedures.F90 b/example/learn-microphysics-procedures.F90 index 8e051732d..fe4ac50e8 100644 --- a/example/learn-microphysics-procedures.F90 +++ b/example/learn-microphysics-procedures.F90 @@ -5,7 +5,7 @@ program learn_microphysics_procedures !! in of ICAR (https://github.com/BerkeleyLab/icar). use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, sigmoid_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t, csv + use julienne_m, only : string_t, file_t, command_line_t, bin_t, csv use assert_m, only : assert, intrinsic_array_t use thompson_tensors_m, only : y, T, p use iso_fortran_env, only : int64, output_unit @@ -120,7 +120,7 @@ program learn_microphysics_procedures report_network_performance: & block integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -130,7 +130,8 @@ program learn_microphysics_procedures do p = 1, num_pairs print "(6(G13.5,2x))", inputs(p)%values(), network_outputs(p)%values(), desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block report_network_performance diff --git a/example/learn-multiplication.F90 b/example/learn-multiplication.F90 index cd20f9c22..0c6a8349d 100644 --- a/example/learn-multiplication.F90 +++ b/example/learn-multiplication.F90 @@ -22,7 +22,7 @@ program learn_multiplication !! This trains a neural network to learn the following six polynomial functions of its eight inputs. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t + use julienne_m, only : string_t, file_t, command_line_t, bin_t use assert_m, only : assert, intrinsic_array_t use multiply_inputs, only : y implicit none @@ -84,7 +84,7 @@ program learn_multiplication block real, parameter :: tolerance = 1.E-06 integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -94,7 +94,8 @@ program learn_multiplication do p = 1, num_pairs print "(6G13.5, a1, 6G13.5)",network_outputs(p)%values(), "|", desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/example/learn-power-series.F90 b/example/learn-power-series.F90 index d4cd553ae..e730fde1e 100644 --- a/example/learn-power-series.F90 +++ b/example/learn-power-series.F90 @@ -22,7 +22,7 @@ program learn_power_series !! This trains a neural network to learn the following six polynomial functions of its eight inputs. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t + use julienne_m, only : string_t, file_t, command_line_t, bin_t use assert_m, only : assert, intrinsic_array_t use power_series, only : y implicit none @@ -86,7 +86,7 @@ program learn_power_series block real, parameter :: tolerance = 1.E-06 integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -96,7 +96,8 @@ program learn_power_series do p = 1, num_pairs print "(6G13.5, a1, 6G13.5)",network_outputs(p)%values(), "|", desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/example/learn-saturated-mixing-ratio.F90 b/example/learn-saturated-mixing-ratio.F90 index fb4f47022..8546f697f 100644 --- a/example/learn-saturated-mixing-ratio.F90 +++ b/example/learn-saturated-mixing-ratio.F90 @@ -4,7 +4,7 @@ program train_saturated_mixture_ratio !! This program trains a neural network to learn the saturated mixing ratio function of ICAR. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t, csv + use julienne_m, only : string_t, file_t, command_line_t, bin_t, csv use assert_m, only : assert, intrinsic_array_t use saturated_mixing_ratio_m, only : y, T, p use iso_fortran_env, only : int64, output_unit @@ -119,7 +119,7 @@ program train_saturated_mixture_ratio report_network_performance: & block integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -129,7 +129,8 @@ program train_saturated_mixture_ratio do p = 1, num_pairs print "(4(G13.5,2x))", inputs(p)%values(), network_outputs(p)%values(), desired_outputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block report_network_performance diff --git a/example/print-training-configuration.F90 b/example/print-training-configuration.F90 index 9504a0410..6643318bd 100644 --- a/example/print-training-configuration.F90 +++ b/example/print-training-configuration.F90 @@ -1,7 +1,7 @@ program print_training_configuration !! Demonstrate how to construct and print a training_configuration_t object use inference_engine_m, only : training_configuration_t, hyperparameters_t, network_configuration_t - use sourcery_m, only : file_t + use julienne_m, only : file_t implicit none #ifdef _CRAYFTN type(training_configuration_t) :: training_configuration diff --git a/example/train-and-write.F90 b/example/train-and-write.F90 index d15888026..c12087e5e 100644 --- a/example/train-and-write.F90 +++ b/example/train-and-write.F90 @@ -10,7 +10,7 @@ program train_and_write !! that is uniformly distributed on the range [0,0.1]. use inference_engine_m, only : & inference_engine_t, trainable_engine_t, mini_batch_t, tensor_t, input_output_pair_t, shuffle, relu_t - use sourcery_m, only : string_t, file_t, command_line_t, bin_t + use julienne_m, only : string_t, file_t, command_line_t, bin_t use assert_m, only : assert, intrinsic_array_t implicit none @@ -72,7 +72,7 @@ program train_and_write block real, parameter :: tolerance = 1.E-06 integer p -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else @@ -84,7 +84,8 @@ program train_and_write do p = 1, num_pairs print *,network_outputs(p)%values(),"|", inputs(p)%values(), "|", network_outputs(p)%values() - inputs(p)%values() end do -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/example/write-read-infer.F90 b/example/write-read-infer.F90 index ff9688760..e6a7a907e 100644 --- a/example/write-read-infer.F90 +++ b/example/write-read-infer.F90 @@ -8,7 +8,7 @@ program write_read_infer !! non-negative inputs to the corresponding outputs using a RELU activation !! function. use inference_engine_m, only : inference_engine_t, relu_t, tensor_t - use sourcery_m, only : string_t, command_line_t, file_t + use julienne_m, only : string_t, command_line_t, file_t use kind_parameters_m, only : rkind implicit none diff --git a/fpm.toml b/fpm.toml index bcf0be690..eca2be014 100644 --- a/fpm.toml +++ b/fpm.toml @@ -5,5 +5,5 @@ author = "Damian Rouson, Tan Nguyen, Jordan Welsman, David Torres, Brad Richards maintainer = "rouson@lbl.gov" [dependencies] -assert = {git = "https://github.com/sourceryinstitute/assert", tag = "1.6.0"} -sourcery = {git = "https://github.com/sourceryinstitute/sourcery", tag = "4.8.1"} +assert = {git = "https://github.com/sourceryinstitute/assert", tag = "1.7.0"} +julienne = {git = "https://github.com/sourceryinstitute/julienne", tag = "2ca5c93e11b46395608fd00abbdf797d9be0b3d4"} diff --git a/setup.sh b/setup.sh index f270d4396..5908ce704 100755 --- a/setup.sh +++ b/setup.sh @@ -74,8 +74,8 @@ if ! command -v fpm > /dev/null ; then fi fi -FPM_FC=${FC:-"gfortran-13"} -FPM_CC=${CC:-"gcc-13"} +FPM_FC=${FC:-"gfortran-14"} +FPM_CC=${CC:-"gcc-14"} fpm test --profile release --flag "-fopenmp" diff --git a/src/inference_engine/activation_strategy_m.f90 b/src/inference_engine/activation_strategy_m.f90 index 47cea20a4..ff2bffa4d 100644 --- a/src/inference_engine/activation_strategy_m.f90 +++ b/src/inference_engine/activation_strategy_m.f90 @@ -4,7 +4,7 @@ module activation_strategy_m ! External dependencies use kind_parameters_m, only : rkind - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/hyperparameters_m.f90 b/src/inference_engine/hyperparameters_m.f90 index 81ea3f6d8..9e55dc376 100644 --- a/src/inference_engine/hyperparameters_m.f90 +++ b/src/inference_engine/hyperparameters_m.f90 @@ -1,5 +1,5 @@ module hyperparameters_m - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t use kind_parameters_m, only : rkind implicit none diff --git a/src/inference_engine/inference_engine_m_.f90 b/src/inference_engine/inference_engine_m_.f90 index 9edc2af85..b4ea2bd29 100644 --- a/src/inference_engine/inference_engine_m_.f90 +++ b/src/inference_engine/inference_engine_m_.f90 @@ -3,8 +3,8 @@ module inference_engine_m_ !! Define an abstraction that supports inference operationsn on a neural network use activation_strategy_m, only : activation_strategy_t - use sourcery_file_m, only : file_t - use sourcery_string_m, only : string_t + use julienne_file_m, only : file_t + use julienne_string_m, only : string_t use kind_parameters_m, only : rkind use tensor_m, only : tensor_t use tensor_range_m, only : tensor_range_t diff --git a/src/inference_engine/inference_engine_s.F90 b/src/inference_engine/inference_engine_s.F90 index ae7172833..5fddfef59 100644 --- a/src/inference_engine/inference_engine_s.F90 +++ b/src/inference_engine/inference_engine_s.F90 @@ -8,7 +8,7 @@ use relu_m, only : relu_t use layer_m, only : layer_t use neuron_m, only : neuron_t - use sourcery_formats_m, only : separated_values + use julienne_formats_m, only : separated_values implicit none interface assert_consistency diff --git a/src/inference_engine/layer_m.f90 b/src/inference_engine/layer_m.f90 index 55d6e2465..427fad7f6 100644 --- a/src/inference_engine/layer_m.f90 +++ b/src/inference_engine/layer_m.f90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt module layer_m use neuron_m, only : neuron_t - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t use kind_parameters_m, only : rkind use inference_engine_m_, only : inference_engine_t use tensor_range_m, only : tensor_range_t diff --git a/src/inference_engine/network_configuration_m.f90 b/src/inference_engine/network_configuration_m.f90 index 9872b0a8d..453c912d1 100644 --- a/src/inference_engine/network_configuration_m.f90 +++ b/src/inference_engine/network_configuration_m.f90 @@ -1,5 +1,5 @@ module network_configuration_m - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/network_configuration_s.F90 b/src/inference_engine/network_configuration_s.F90 index 47536cc68..ef6ff7f69 100644 --- a/src/inference_engine/network_configuration_s.F90 +++ b/src/inference_engine/network_configuration_s.F90 @@ -1,6 +1,6 @@ submodule(network_configuration_m) network_configuration_s use assert_m, only : assert - use sourcery_formats_m, only : csv + use julienne_formats_m, only : csv implicit none character(len=*), parameter :: skip_connections_key = "skip connections" diff --git a/src/inference_engine/neuron_m.f90 b/src/inference_engine/neuron_m.f90 index edba384f5..a0f416bf3 100644 --- a/src/inference_engine/neuron_m.f90 +++ b/src/inference_engine/neuron_m.f90 @@ -1,7 +1,7 @@ ! Copyright (c), The Regents of the University of California ! Terms of use are as specified in LICENSE.txt module neuron_m - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t use kind_parameters_m, only : rkind implicit none diff --git a/src/inference_engine/relu_m.f90 b/src/inference_engine/relu_m.f90 index 28ab5cef2..a303c1280 100644 --- a/src/inference_engine/relu_m.f90 +++ b/src/inference_engine/relu_m.f90 @@ -3,7 +3,7 @@ module relu_m use differentiable_activation_strategy_m, only : differentiable_activation_strategy_t use kind_parameters_m, only : rkind - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/sigmoid_m.f90 b/src/inference_engine/sigmoid_m.f90 index bb31e3078..67f3a2fcb 100644 --- a/src/inference_engine/sigmoid_m.f90 +++ b/src/inference_engine/sigmoid_m.f90 @@ -3,7 +3,7 @@ module sigmoid_m use differentiable_activation_strategy_m, only : differentiable_activation_strategy_t use kind_parameters_m, only : rkind - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/step_m.f90 b/src/inference_engine/step_m.f90 index a6d7f68e4..50f180f51 100644 --- a/src/inference_engine/step_m.f90 +++ b/src/inference_engine/step_m.f90 @@ -3,7 +3,7 @@ module step_m use activation_strategy_m, only : activation_strategy_t use kind_parameters_m, only : rkind - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/swish_m.f90 b/src/inference_engine/swish_m.f90 index b626ea23f..993bcbf1d 100644 --- a/src/inference_engine/swish_m.f90 +++ b/src/inference_engine/swish_m.f90 @@ -3,7 +3,7 @@ module swish_m use differentiable_activation_strategy_m, only : differentiable_activation_strategy_t use kind_parameters_m, only : rkind - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t implicit none private diff --git a/src/inference_engine/tensor_range_m.f90 b/src/inference_engine/tensor_range_m.f90 index 4b6d069c4..70ad5b27b 100644 --- a/src/inference_engine/tensor_range_m.f90 +++ b/src/inference_engine/tensor_range_m.f90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt module tensor_range_m use tensor_m, only : tensor_t - use sourcery_m, only : string_t + use julienne_m, only : string_t implicit none private diff --git a/src/inference_engine/tensor_range_s.f90 b/src/inference_engine/tensor_range_s.f90 index 58d4b6940..ce022a3e5 100644 --- a/src/inference_engine/tensor_range_s.f90 +++ b/src/inference_engine/tensor_range_s.f90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt submodule(tensor_range_m) tensor_range_s use assert_m, only : assert - use sourcery_m, only : separated_values + use julienne_m, only : separated_values use kind_parameters_m, only : rkind implicit none diff --git a/src/inference_engine/trainable_engine_m.F90 b/src/inference_engine/trainable_engine_m.F90 index e508bfde3..763564ec6 100644 --- a/src/inference_engine/trainable_engine_m.F90 +++ b/src/inference_engine/trainable_engine_m.F90 @@ -2,7 +2,7 @@ ! Terms of use are as specified in LICENSE.txt module trainable_engine_m !! Define an abstraction that supports training a neural network - use sourcery_string_m, only : string_t + use julienne_string_m, only : string_t use inference_engine_m_, only : inference_engine_t use differentiable_activation_strategy_m, only : differentiable_activation_strategy_t use kind_parameters_m, only : rkind diff --git a/src/inference_engine/training_configuration_m.f90 b/src/inference_engine/training_configuration_m.f90 index 27db23645..7805675a3 100644 --- a/src/inference_engine/training_configuration_m.f90 +++ b/src/inference_engine/training_configuration_m.f90 @@ -1,6 +1,6 @@ module training_configuration_m - use sourcery_string_m, only : string_t - use sourcery_file_m, only : file_t + use julienne_string_m, only : string_t + use julienne_file_m, only : file_t use hyperparameters_m, only : hyperparameters_t use network_configuration_m, only : network_configuration_t use kind_parameters_m, only : rkind diff --git a/test/asymmetric_engine_test_m.F90 b/test/asymmetric_engine_test_m.F90 index bf6a04f15..ee0d40e32 100644 --- a/test/asymmetric_engine_test_m.F90 +++ b/test/asymmetric_engine_test_m.F90 @@ -5,7 +5,7 @@ module asymmetric_engine_test_m ! External dependencies use assert_m, only : assert - use sourcery_m, only : & + use julienne_m, only : & test_t, test_result_t, vector_test_description_t, test_description_substring, string_t, vector_function_strategy_t ! Internal dependencies diff --git a/test/hyperparameters_test_m.F90 b/test/hyperparameters_test_m.F90 index 31ce2dadc..2313c1c91 100644 --- a/test/hyperparameters_test_m.F90 +++ b/test/hyperparameters_test_m.F90 @@ -5,9 +5,9 @@ module hyperparameters_test_m ! External dependencies use inference_engine_m, only : hyperparameters_t - use sourcery_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t + use julienne_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies diff --git a/test/inference_engine_test_m.F90 b/test/inference_engine_test_m.F90 index d351842ee..341ce9269 100644 --- a/test/inference_engine_test_m.F90 +++ b/test/inference_engine_test_m.F90 @@ -6,9 +6,9 @@ module inference_engine_test_m ! External dependencies use assert_m, only : assert use kind_parameters_m, only : rkind - use sourcery_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t + use julienne_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies diff --git a/test/main.f90 b/test/main.f90 index 9b96d31d5..0ef4116be 100644 --- a/test/main.f90 +++ b/test/main.f90 @@ -8,7 +8,7 @@ program main use network_configuration_test_m, only : network_configuration_test_t use training_configuration_test_m, only : training_configuration_test_t use tensor_range_test_m, only : tensor_range_test_t - use sourcery_m, only : command_line_t + use julienne_m, only : command_line_t implicit none type(inference_engine_test_t) inference_engine_test diff --git a/test/network_configuration_test_m.F90 b/test/network_configuration_test_m.F90 index 3696f8463..97e4e8a64 100644 --- a/test/network_configuration_test_m.F90 +++ b/test/network_configuration_test_m.F90 @@ -5,9 +5,9 @@ module network_configuration_test_m ! External dependencies use inference_engine_m, only : network_configuration_t - use sourcery_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t + use julienne_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies diff --git a/test/tensor_range_test_m.F90 b/test/tensor_range_test_m.F90 index bbd9cbb0d..2796781f2 100644 --- a/test/tensor_range_test_m.F90 +++ b/test/tensor_range_test_m.F90 @@ -5,10 +5,10 @@ module tensor_range_test_m ! External dependencies use assert_m, only : assert - use sourcery_m, only : string_t, test_t, test_result_t, test_description_t, test_description_substring, file_t + use julienne_m, only : string_t, test_t, test_result_t, test_description_t, test_description_substring, file_t use inference_engine_m, only : tensor_range_t, tensor_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies diff --git a/test/trainable_engine_test_m.F90 b/test/trainable_engine_test_m.F90 index 9cedd3145..14af78302 100644 --- a/test/trainable_engine_test_m.F90 +++ b/test/trainable_engine_test_m.F90 @@ -5,10 +5,10 @@ module trainable_engine_test_m ! External dependencies use assert_m, only : assert, intrinsic_array_t - use sourcery_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, bin_t, & + use julienne_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, bin_t, & vector_test_description_t, vector_function_strategy_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies @@ -466,14 +466,15 @@ function preserves_identity_mapping() result(test_passes) block real(rkind), parameter :: tolerance = 1.E-06 -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else associate(network_outputs => trainable_engine%infer(inputs)) #endif test_passes = maxval(abs([(network_outputs(i)%values() - inputs(i)%values(), i=1,num_pairs)])) < tolerance -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block @@ -527,14 +528,15 @@ function perturbed_identity_converges() result(test_passes) block real(rkind), parameter :: tolerance = 1.E-06 -#ifdef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ type(tensor_t), allocatable :: network_outputs(:) network_outputs = trainable_engine%infer(inputs) #else associate(network_outputs => trainable_engine%infer(inputs)) #endif test_passes = maxval(abs([(network_outputs(i)%values() - inputs(i)%values(), i=1,num_pairs)])) < tolerance -#ifndef _CRAYFTN +#if defined _CRAYFTN || __GFORTRAN__ +#else end associate #endif end block diff --git a/test/training_configuration_test_m.F90 b/test/training_configuration_test_m.F90 index 19d17b46a..13ed5ba2d 100644 --- a/test/training_configuration_test_m.F90 +++ b/test/training_configuration_test_m.F90 @@ -5,9 +5,9 @@ module training_configuration_test_m ! External dependencies use inference_engine_m, only : training_configuration_t, hyperparameters_t, network_configuration_t - use sourcery_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t + use julienne_m, only : test_t, test_result_t, test_description_t, test_description_substring, string_t, file_t #ifdef __GFORTRAN__ - use sourcery_m, only : test_function_i + use julienne_m, only : test_function_i #endif ! Internal dependencies