Revision fa136cb5417a554c2b7c85001235e2aace214732 authored by Steven Johnson on 29 August 2023, 16:21:59 UTC, committed by GitHub on 29 August 2023, 16:21:59 UTC
* Fix CMake test for generator_aot_multitarget

* Ensure that multitarget AOT builds have consistent random numbers

If a Generator uses random_float() (or the int or uint versions), and is used in a multitarget build, we weren't resetting the counters for random generation between each subtarget... meaning that each subtarget would get a different random sequence, leading to some ery hard-to-debug test failures when running on different hardware variants. This PR ensures that the relevant counters are all reset before each subtarget is generated, so that each should see the same sequence of random number generation.

* Update CMakeLists.txt

* Update multitarget_aottest.cpp

* Combine float/uint counters
1 parent fe9f0b7
Raw File
CMakePresets.json
{
  "version": 3,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 22,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "base",
      "hidden": true,
      "binaryDir": "build/${presetName}",
      "installDir": "install/${presetName}"
    },
    {
      "name": "ci",
      "hidden": true,
      "inherits": "base",
      "toolchainFile": "${sourceDir}/cmake/toolchain.${presetName}.cmake",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo"
      }
    },
    {
      "name": "windows-only",
      "hidden": true,
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "vcpkg",
      "hidden": true,
      "toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
    },
    {
      "name": "vs2022",
      "hidden": true,
      "inherits": [
        "vcpkg",
        "windows-only"
      ],
      "generator": "Visual Studio 17 2022",
      "toolset": "host=x64"
    },
    {
      "name": "debug",
      "inherits": "base",
      "displayName": "Debug",
      "description": "Debug build with no special settings",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "release",
      "inherits": "base",
      "displayName": "Release",
      "description": "Release build with no special settings",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "debian-debug",
      "inherits": "debug",
      "displayName": "Debian (Debug)",
      "description": "Debug build assuming Debian-provided dependencies",
      "cacheVariables": {
        "Halide_SHARED_LLVM": "ON"
      }
    },
    {
      "name": "debian-release",
      "inherits": "debian-debug",
      "displayName": "Debian (Release)",
      "description": "Release build assuming Debian-provided dependencies",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "win32",
      "inherits": [
        "vs2022",
        "base"
      ],
      "displayName": "Win32 (Visual Studio)",
      "description": "Visual Studio-based Win32 build with vcpkg dependencies.",
      "architecture": "Win32"
    },
    {
      "name": "win64",
      "inherits": [
        "vs2022",
        "base"
      ],
      "displayName": "Win64 (Visual Studio)",
      "description": "Visual Studio-based x64 build with vcpkg dependencies.",
      "architecture": "x64"
    },
    {
      "name": "package",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "LLVM_DIR": "$env{LLVM_DIR}",
        "Clang_DIR": "$env{Clang_DIR}",
        "LLD_DIR": "$env{LLD_DIR}",
        "WITH_TESTS": "NO",
        "WITH_TUTORIALS": "NO",
        "WITH_DOCS": "YES",
        "WITH_UTILS": "YES",
        "WITH_PYTHON_BINDINGS": "NO",
        "CMAKE_INSTALL_DATADIR": "share/Halide"
      }
    },
    {
      "name": "package-windows",
      "inherits": [
        "package",
        "vs2022"
      ],
      "displayName": "Package ZIP for Windows",
      "description": "Build for packaging Windows shared libraries.",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "BUILD_SHARED_LIBS": "YES",
        "CMAKE_INSTALL_BINDIR": "bin/$<CONFIG>",
        "CMAKE_INSTALL_LIBDIR": "lib/$<CONFIG>",
        "Halide_INSTALL_CMAKEDIR": "lib/cmake/Halide",
        "Halide_INSTALL_HELPERSDIR": "lib/cmake/HalideHelpers"
      }
    },
    {
      "name": "package-unix-shared",
      "inherits": "package",
      "displayName": "Package UNIX shared libs",
      "description": "Build for packaging UNIX shared libraries.",
      "binaryDir": "shared-Release",
      "cacheVariables": {
        "BUILD_SHARED_LIBS": "YES"
      }
    },
    {
      "name": "package-unix-static",
      "inherits": "package",
      "displayName": "Package UNIX static libs",
      "description": "Build for packaging UNIX static libraries.",
      "binaryDir": "static-Release",
      "cacheVariables": {
        "BUILD_SHARED_LIBS": "NO",
        "Halide_BUNDLE_LLVM": "YES"
      }
    },
    {
      "name": "linux-x64-asan",
      "inherits": "ci",
      "displayName": "ASAN (Linux x64)",
      "description": "Build everything with ASAN enabled",
      "cacheVariables": {
        "LLVM_ROOT": "$penv{LLVM_ROOT}"
      }
    },
    {
      "name": "linux-x64-fuzzer",
      "inherits": "ci",
      "displayName": "Fuzzer (Linux x64)",
      "description": "Build everything with fuzzing enabled",
      "cacheVariables": {
        "LLVM_ROOT": "$penv{LLVM_ROOT}",
        "TARGET_WEBASSEMBLY": "NO",
        "WITH_TUTORIALS": "NO",
        "WITH_UTILS": "NO",
        "WITH_PYTHON_BINDINGS": "NO",
        "WITH_TESTS": "YES",
        "WITH_TEST_AUTO_SCHEDULE": "NO",
        "WITH_TEST_CORRECTNESS": "NO",
        "WITH_TEST_ERROR": "NO",
        "WITH_TEST_WARNING": "NO",
        "WITH_TEST_PERFORMANCE": "NO",
        "WITH_TEST_RUNTIME": "NO",
        "WITH_TEST_GENERATOR": "NO",
        "WITH_TEST_FUZZ": "YES",
        "BUILD_SHARED_LIBS": "NO"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "debug",
      "configurePreset": "debug",
      "displayName": "Debug",
      "description": "Debug build with no special settings"
    },
    {
      "name": "release",
      "configurePreset": "release",
      "displayName": "Release",
      "description": "Release build with no special settings"
    },
    {
      "name": "linux-x64-asan",
      "configurePreset": "linux-x64-asan",
      "displayName": "ASAN (Linux x64)",
      "description": "Build everything with ASAN enabled"
    },
    {
      "name": "linux-x64-fuzzer",
      "configurePreset": "linux-x64-fuzzer",
      "displayName": "Fuzzing (Linux x64)",
      "description": "Build everything with fuzzing enabled"
    }
  ],
  "testPresets": [
    {
      "name": "debug",
      "configurePreset": "debug",
      "displayName": "Debug",
      "description": "Test everything with Debug build",
      "output": {
        "outputOnFailure": true
      }
    },
    {
      "name": "release",
      "configurePreset": "release",
      "displayName": "Release",
      "description": "Test everything with Release build",
      "output": {
        "outputOnFailure": true
      }
    },
    {
      "name": "linux-x64-asan",
      "configurePreset": "linux-x64-asan",
      "displayName": "ASAN (Linux x64)",
      "description": "Test everything with ASAN enabled",
      "environment": {
        "ASAN_OPTIONS": "detect_leaks=0:detect_container_overflow=0"
      },
      "output": {
        "outputOnFailure": true
      }
    },
    {
      "name": "linux-x64-fuzzer",
      "configurePreset": "linux-x64-fuzzer",
      "displayName": "Fuzzing (Linux x64)",
      "description": "Test everything with fuzzing enabled",
      "output": {
        "outputOnFailure": true
      }
    }
  ]
}
back to top