Add Databricks 14.3 and 17.3 to the AutoTuner shuffle manager map - #2150
Merged
Merged
Conversation
On a Databricks 14.3 or 17.3 event log the profiling AutoTuner commented "Cannot recommend RAPIDS Shuffle Manager for unsupported Databricks runtime" and advised moving to runtime 13.3, whose shim the plugin has dropped. The Databricks entries of `supportedShuffleManagerVersionMap` stopped at 13.3 while the plugin ships `spark350db143.RapidsShuffleManager` and `spark400db173.RapidsShuffleManager`, and Databricks sets `spark.shuffle.manager=SORT` explicitly, so the tuner's recommendation is the only place a user is told the class name. The map gains `14.3 -> 350db143` and `17.3 -> 400db173`. The 12.2 and 13.3 entries stay so old event logs keep their recommendation, and the "e.g." runtime in the unsupported-version comment becomes 17.3 through the existing `maxBy`. Tests: the per-entry Databricks test in `ProfilingAutoTunerSuite` covers the two entries; a 17.3 case with the `-scala2.13` runtime suffix is added. Fixes NVIDIA#2144 Signed-off-by: Thomas Wynne <jtwynne3@gmail.com>
|
amahussein
requested changes
Sep 10, 2026
amahussein
left a comment
Collaborator
There was a problem hiding this comment.
Request changes for the missing regression oracle identified inline. The production change itself checks out: I verified both generated shuffle-manager classes in the plugin, both providers default enabled, and the current lookup and maximum select the intended results. The focused suite passed 92/92 locally under Scala 2.12 and 2.13, and GitHub Maven run 34313805053 passed 977/977 in both matching jobs.
The two cases added for 14.3 and 17.3 sat in ProfilingAutoTunerSuite, whose header marks it deprecated and sends new AutoTuner cases to ProfilingAutoTunerSuiteV2. They move there, and a third case pins 14.3 to 350db143 with the value written out: the map-driven tests take both the runtime and the expected class from supportedShuffleManagerVersionMap, so a wrong or missing entry stays green in them, and 17.3 already had its own pin. verifyRecommendedShuffleManagerVersion and verifyUnsupportedSparkVersionForShuffleManager move from the deprecated suite into ProfilingAutoTunerSuiteBase, unchanged, so both suites share them and the map-driven tests keep running. With the two map entries reverted the three V2 cases fail; with them ProfilingAutoTunerSuite and ProfilingAutoTunerSuiteV2 pass under JDK 17, 198 succeeded and 0 failed across the two, scalastyle clean. Signed-off-by: Thomas Wynne <jtwynne3@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2144 , Fixes #1678.
Problem
On a Databricks 14.3 or 17.3 event log the profiling AutoTuner commented "Cannot recommend
RAPIDS Shuffle Manager for unsupported Databricks runtime" and advised moving to runtime 13.3,
whose shim the plugin has dropped (NVIDIA/cudf-spark#15276). The Databricks entries of
DatabricksPlatform.supportedShuffleManagerVersionMapstopped at 13.3 while the plugin shipscom.nvidia.spark.rapids.spark350db143.RapidsShuffleManagerandcom.nvidia.spark.rapids.spark400db173.RapidsShuffleManager, the two classes the shuffledocumentation page linked from the comment lists for Databricks. Databricks sets
spark.shuffle.manager=SORTexplicitly, so the plugin's automatic configuration does not applyand the tuner's recommendation is the only place in the tools' output where a user is told the
class name.
Fix
The map gains
14.3 -> 350db143and17.3 -> 400db173.([BUG] Support for Databricks 14.3? #1678).
maxBy, which compares version strings and orders12.2 < 13.3 < 14.3 < 17.3correctly.getShuffleManagerVersionmatches bycontains; no key is a substring of another key.14.3 shim since Enable the [databricks] 14.3 Shim cudf-spark#12485, the 17.3 shim from its first release
(Add Databricks-17.3 support [databricks] cudf-spark#14360); both providers read
getOrElse(true). Databricks 14.3 is Spark3.5.0 and 17.3 is Spark 4.0.0.
buildShuffleManagerClassNameneeds no change for theNNNdbscheme. [BUG] Automate Generation of Supported Shims for RAPIDS Shuffle Manager #1676 (generate thelist from the plugin) would subsume this.
DatabricksPlatform.Qualification never recommends a shuffle manager ([BUG] Qualification Tools (and Bootstrap) should not recommend the shuffle manager #1813). Event logs from 12.2 and 13.3 get
the same recommendation as before.
Tests
ProfilingAutoTunerSuite(
dbPlatform.supportedShuffleManagerVersionMap.foreach) runs the two entries, but it takesboth the runtime and the expected class from the map, so it pins nothing on its own.
ProfilingAutoTunerSuiteV2(the deprecated suite's header sends new AutoTunercases there) pin the values with the expected class written out: "test shuffle manager
version for databricks 14.3 is 350db143", "test shuffle manager version for databricks 17.3 on
scala 2.13 is 400db173" (the
-scala2.13runtime suffix, on the Azure platform), and "testshuffle manager version for databricks 15.4 without a plugin shim", which expects the
unsupported-version comment and asserts
latestSupportedShuffleManagerInfois the 17.3 pair.All three fail on
devwithout the two entries.verifyRecommendedShuffleManagerVersionandverifyUnsupportedSparkVersionForShuffleManagermove from the deprecated suite into
ProfilingAutoTunerSuiteBase, unchanged, so both suitesshare them.
ProfilingAutoTunerSuiteandProfilingAutoTunerSuiteV2together: 198 succeeded, 0 failedwith the change (JDK 17, Scala 2.12); scalastyle clean.
spark.shuffle.manager=com.nvidia.spark.rapids.spark400db173.RapidsShuffleManagerand nolonger prints the "Cannot recommend RAPIDS Shuffle Manager for unsupported Databricks
runtime" comment.