Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/mvn-verify-check/get-deps-sha1.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ set -e

scala_ver=${1:-"2.12"}
base_URL="https://central.sonatype.com/repository/maven-snapshots/com/nvidia"
project_jni="spark-rapids-jni"
project_jni=$(mvn help:evaluate -q -pl dist -Dexpression=cudf-spark-jni.artifactId -DforceStdout)
project_private="cudf-spark-private_${scala_ver}"

jni_ver=$(mvn help:evaluate -q -pl dist -Dexpression=spark-rapids-jni.version -DforceStdout)
jni_ver=$(mvn help:evaluate -q -pl dist -Dexpression=cudf-spark-jni.version -DforceStdout)
private_ver=$(mvn help:evaluate -q -pl dist -Dexpression=cudf-spark-private.version -DforceStdout)

get_latest_snapshot_version() {
Expand Down
6 changes: 3 additions & 3 deletions .greptile/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@

"patternRepositories": [
"rapidsai/cudf",
"NVIDIA/spark-rapids-jni",
"NVIDIA/cudf-spark-jni",
"apache/spark"
],

"instructions": "Spark plugin for GPU-accelerated data processing using RAPIDS cuDF. Maven-based, Scala/Java with Python integration tests. Key modules: sql-plugin/, shuffle-plugin/, iceberg/, delta-lake/, tests/, integration_tests/. Version-specific shims at sql-plugin/src/main/spark{VERSION}/. Review rules are in .greptile/rules.md. Key files are listed in .greptile/files.json. Also reference AGENTS.md for build commands, project structure, and coding conventions. IMPORTANT: This project depends on cuDF (rapidsai/cudf) for GPU compute kernels and spark-rapids-jni (NVIDIA/spark-rapids-jni) for JNI bindings. When reviewing code that calls cuDF/JNI APIs, cross-reference the upstream repos to verify API usage correctness, especially for: column operations, memory allocation semantics, stream handling, and error codes. This project also shims against multiple Apache Spark versions (apache/spark). When reviewing shim code or GPU operator implementations, cross-reference apache/spark to verify that the GPU behavior matches the corresponding CPU implementation in the target Spark version, especially for: expression evaluation semantics, null handling, type coercion, and catalog/partition behavior.",
"instructions": "Spark plugin for GPU-accelerated data processing using RAPIDS cuDF. Maven-based, Scala/Java with Python integration tests. Key modules: sql-plugin/, shuffle-plugin/, iceberg/, delta-lake/, tests/, integration_tests/. Version-specific shims at sql-plugin/src/main/spark{VERSION}/. Review rules are in .greptile/rules.md. Key files are listed in .greptile/files.json. Also reference AGENTS.md for build commands, project structure, and coding conventions. IMPORTANT: This project depends on cuDF (rapidsai/cudf) for GPU compute kernels and cudf-spark-jni (NVIDIA/cudf-spark-jni) for JNI bindings. When reviewing code that calls cuDF/JNI APIs, cross-reference the upstream repos to verify API usage correctness, especially for: column operations, memory allocation semantics, stream handling, and error codes. This project also shims against multiple Apache Spark versions (apache/spark). When reviewing shim code or GPU operator implementations, cross-reference apache/spark to verify that the GPU behavior matches the corresponding CPU implementation in the target Spark version, especially for: expression evaluation semantics, null handling, type coercion, and catalog/partition behavior.",

"rules": [
{
Expand Down Expand Up @@ -117,7 +117,7 @@
},
{
"id": "upstream-dependency-boundary",
"rule": "Code touching JNI calls (cudf/spark-rapids-jni) or private API interfaces (spark-rapids-private) may break from concurrent upstream SNAPSHOT changes. Review for assumptions about upstream behavior. Cross-reference rapidsai/cudf for correct function signatures, null handling semantics, and memory ownership rules at JNI boundaries.",
"rule": "Code touching JNI calls (cudf/cudf-spark-jni) or private API interfaces (cudf-spark-private) may break from concurrent upstream SNAPSHOT changes. Review for assumptions about upstream behavior. Cross-reference rapidsai/cudf for correct function signatures, null handling semantics, and memory ownership rules at JNI boundaries.",
"scope": ["sql-plugin/src/**", "shuffle-plugin/src/**"],
"severity": "high"
},
Expand Down
2 changes: 1 addition & 1 deletion .greptile/rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ shim layer architecture, see `AGENTS.md` at the repo root.
- [ ] H5: Configuration — new RapidsConf without docs/defaults; should use .internal() if not user-visible; new features default off
- [ ] H6: Magic numbers — unexplained numeric literals without named constants or comments
- [ ] H7: Pre-merge CI gaps — only selected shims run unit tests; feature-gated tests need explicit enable; limited Scala 2.13 coverage
- [ ] H8: Upstream dependencies — SNAPSHOT changes from spark-rapids-jni/cudf may break; verify API usage against upstream repos
- [ ] H8: Upstream dependencies — SNAPSHOT changes from cudf-spark-jni/cudf may break; verify API usage against upstream repos
- [ ] H9: Databricks coverage — change may behave differently on Databricks (filesystem/path semantics, plan-string/optimizer assertions, DBR Spark-fork runtime) but the PR title lacks [databricks] and the diff doesn't touch a *db* shim path or a path containing `databricks` (either auto-triggers DB CI). Recommend [databricks] or confirm DB validation (see AGENTS.md § PR title tags)
- [ ] H10: Performance checklist — report `Performance: Not required` as a high-severity finding unless the PR is documentation-only or test-only, or its description gives a verifiable reason the change cannot affect runtime performance. A bug-fix label, small diff, or rarely used path is not by itself an exemption. When uncertain, flag
4 changes: 2 additions & 2 deletions aggregator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@
<artifactSet>
<excludes>
<exclude>org.slf4j:*</exclude>
<!-- excludes spark-rapids-jni and jucx, will package them in the dist submodule -->
<exclude>com.nvidia:spark-rapids-jni:*</exclude>
<!-- excludes cudf-spark-jni and jucx, will package them in the dist submodule -->
<exclude>com.nvidia:${cudf-spark-jni.artifactId}:*</exclude>
<exclude>org.openucx:jucx:*</exclude>
</excludes>
</artifactSet>
Expand Down
2 changes: 1 addition & 1 deletion api_validation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Validation fails when:

# Dependencies

It requires spark-rapids-jni, rapids-4-spark and Spark jars.
It requires cudf-spark-jni, rapids-4-spark and Spark jars.

# Running the script

Expand Down
2 changes: 1 addition & 1 deletion api_validation/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
<scope>provided</scope>
</dependency>
Expand Down
4 changes: 2 additions & 2 deletions build/make-scala-version-build-files.sh
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ sed_i '/<java\.major\.version>/,/<spark\.version>\${spark[0-9]\+\.version}</s/<s

# Update <scala.binary.version> in parent POM
# Match any scala binary version to ensure idempotency
sed_i '/<spark\-rapids\-jni\.version>/,/<scala\.binary\.version>[0-9]*\.[0-9]*</s/<scala\.binary\.version>[0-9]*\.[0-9]*</<scala.binary.version>'$TO_VERSION'</' \
sed_i '/<cudf\-spark\-jni\.version>/,/<scala\.binary\.version>[0-9]*\.[0-9]*</s/<scala\.binary\.version>[0-9]*\.[0-9]*</<scala.binary.version>'$TO_VERSION'</' \
"$TO_DIR/pom.xml"


Expand All @@ -126,5 +126,5 @@ if [[ -z "$SCALA_VERSION" ]]; then
exit 1
fi

sed_i '/<spark\-rapids\-jni\.version>/,/<scala.version>[0-9]*\.[0-9]*\.[0-9]*</s/<scala\.version>[0-9]*\.[0-9]*\.[0-9]*</<scala.version>'$SCALA_VERSION'</' \
sed_i '/<cudf\-spark\-jni\.version>/,/<scala.version>[0-9]*\.[0-9]*\.[0-9]*</s/<scala\.version>[0-9]*\.[0-9]*\.[0-9]*</<scala.version>'$SCALA_VERSION'</' \
"$TO_DIR/pom.xml"
2 changes: 1 addition & 1 deletion dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ self.log("... OK")
<!-- Per-artifact markers refresh unpacked files when a source JAR is newer. -->
<artifactItem>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
<excludes>META-INF/**</excludes>
<outputDirectory>${project.build.directory}/jni-deps</outputDirectory>
Expand Down
2 changes: 1 addition & 1 deletion docs/additional-functionality/advanced_configs.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Name | Description | Default Value | Applicable at
<a name="shuffle.ucx.managementServerHost"></a>spark.rapids.shuffle.ucx.managementServerHost|The host to be used to start the management server|null|Startup
<a name="shuffle.ucx.useWakeup"></a>spark.rapids.shuffle.ucx.useWakeup|When set to true, use UCX's event-based progress (epoll) in order to wake up the progress thread when needed, instead of a hot loop.|true|Startup
<a name="sql.acceleratedColumnarToRow.enabled"></a>spark.rapids.sql.acceleratedColumnarToRow.enabled|When set to true (default) the GPU columnar-to-row transition uses the GPU transpose kernel (AcceleratedColumnarToRowIterator) for wide fixed-width / STRING schemas. Setting it to false forces the slower per-row CPU iterator (ColumnarToRowIterator). Mainly useful for troubleshooting and performance comparisons; production workloads should leave this on.|true|Runtime
<a name="sql.allowMultipleJars"></a>spark.rapids.sql.allowMultipleJars|Allow multiple rapids-4-spark, spark-rapids-jni, and cudf jars on the classpath. Spark will take the first one it finds, so the version may not be expected. Possisble values are ALWAYS: allow all jars, SAME_REVISION: only allow jars with the same revision, NEVER: do not allow multiple jars at all.|SAME_REVISION|Startup
<a name="sql.allowMultipleJars"></a>spark.rapids.sql.allowMultipleJars|Allow multiple rapids-4-spark, cudf-spark-jni, and cudf jars on the classpath. Spark will take the first one it finds, so the version may not be expected. Possible values are ALWAYS: allow all jars, SAME_REVISION: only allow jars with the same revision, NEVER: do not allow multiple jars at all.|SAME_REVISION|Startup
<a name="sql.castDecimalToFloat.enabled"></a>spark.rapids.sql.castDecimalToFloat.enabled|Casting from decimal to floating point types on the GPU returns results that have tiny difference compared to results returned from CPU.|true|Runtime
<a name="sql.castFloatToDecimal.enabled"></a>spark.rapids.sql.castFloatToDecimal.enabled|Casting from floating point types to decimal on the GPU returns results that have tiny difference compared to results returned from CPU.|true|Runtime
<a name="sql.castFloatToIntegralTypes.enabled"></a>spark.rapids.sql.castFloatToIntegralTypes.enabled|Casting from floating point types to integral types on the GPU supports a slightly different range of values when using Spark 3.1.0 or later. Refer to the CAST documentation for more details.|true|Runtime
Expand Down
2 changes: 1 addition & 1 deletion iceberg-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion jenkins/spark-nightly-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

set -ex

## MVN_OPT : maven options environment, e.g. MVN_OPT='-Dspark-rapids-jni.version=xxx' to specify spark-rapids-jni dependency's version.
## MVN_OPT : maven options environment, e.g. MVN_OPT='-Dcudf-spark-jni.version=xxx' to specify cudf-spark-jni dependency's version.
MVN_SETTINGS=${MVN_SETTINGS:-"jenkins/settings.xml"}
export MVN="mvn -s $MVN_SETTINGS -Dmaven.wagon.http.retryHandler.count=3 -DretryFailedDeploymentCount=3 ${MVN_OPT} -Psource-javadoc"

Expand Down
9 changes: 5 additions & 4 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,8 @@
<spark.version.classifier>spark${buildver}</spark.version.classifier>
<cuda.version>cuda12</cuda.version>
<jni.classifier>${cuda.version}</jni.classifier>
<spark-rapids-jni.version>26.10.0-SNAPSHOT</spark-rapids-jni.version>
<cudf-spark-jni.version>26.10.0-SNAPSHOT</cudf-spark-jni.version>
Comment thread
NvTimLiu marked this conversation as resolved.
<cudf-spark-jni.artifactId>cudf-spark-jni</cudf-spark-jni.artifactId>
<cudf-spark-private.version>26.10.0-SNAPSHOT</cudf-spark-private.version>
<cudf-spark-private.artifactId>cudf-spark-private_${scala.binary.version}</cudf-spark-private.artifactId>
<scala.binary.version>2.12</scala.binary.version>
Expand Down Expand Up @@ -1275,8 +1276,8 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<version>${spark-rapids-jni.version}</version>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<version>${cudf-spark-jni.version}</version>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down Expand Up @@ -1572,7 +1573,7 @@ This will force full Scala code rebuild in downstream modules.
failonerror="false">
<arg value="${spark.rapids.source.basedir}/build/build-info"/>
<arg value="${project.version}"/>
<arg value="${spark-rapids-jni.version}"/>
<arg value="${cudf-spark-jni.version}"/>
</exec>
<fail message="exec build-info.sh failed, exit code is ${build-info.exitCode}, error msg is ${build-info.errorMsg}">
<condition>
Expand Down
4 changes: 2 additions & 2 deletions scala2.13/aggregator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@
<artifactSet>
<excludes>
<exclude>org.slf4j:*</exclude>
<!-- excludes spark-rapids-jni and jucx, will package them in the dist submodule -->
<exclude>com.nvidia:spark-rapids-jni:*</exclude>
<!-- excludes cudf-spark-jni and jucx, will package them in the dist submodule -->
<exclude>com.nvidia:${cudf-spark-jni.artifactId}:*</exclude>
<exclude>org.openucx:jucx:*</exclude>
</excludes>
</artifactSet>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/api_validation/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
<scope>provided</scope>
</dependency>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ self.log("... OK")
<!-- Per-artifact markers refresh unpacked files when a source JAR is newer. -->
<artifactItem>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
<excludes>META-INF/**</excludes>
<outputDirectory>${project.build.directory}/jni-deps</outputDirectory>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/iceberg-common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
9 changes: 5 additions & 4 deletions scala2.13/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1061,7 +1061,8 @@
<spark.version.classifier>spark${buildver}</spark.version.classifier>
<cuda.version>cuda12</cuda.version>
<jni.classifier>${cuda.version}</jni.classifier>
<spark-rapids-jni.version>26.10.0-SNAPSHOT</spark-rapids-jni.version>
<cudf-spark-jni.version>26.10.0-SNAPSHOT</cudf-spark-jni.version>
<cudf-spark-jni.artifactId>cudf-spark-jni</cudf-spark-jni.artifactId>
<cudf-spark-private.version>26.10.0-SNAPSHOT</cudf-spark-private.version>
<cudf-spark-private.artifactId>cudf-spark-private_${scala.binary.version}</cudf-spark-private.artifactId>
<scala.binary.version>2.13</scala.binary.version>
Expand Down Expand Up @@ -1275,8 +1276,8 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<version>${spark-rapids-jni.version}</version>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<version>${cudf-spark-jni.version}</version>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down Expand Up @@ -1572,7 +1573,7 @@ This will force full Scala code rebuild in downstream modules.
failonerror="false">
<arg value="${spark.rapids.source.basedir}/build/build-info"/>
<arg value="${project.version}"/>
<arg value="${spark-rapids-jni.version}"/>
<arg value="${cudf-spark-jni.version}"/>
</exec>
<fail message="exec build-info.sh failed, exit code is ${build-info.exitCode}, error msg is ${build-info.errorMsg}">
<condition>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/shuffle-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
4 changes: 2 additions & 2 deletions scala2.13/sql-plugin-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
</dependencies>
Expand Down Expand Up @@ -132,4 +132,4 @@
</build>
</profile>
</profiles>
</project>
</project>
2 changes: 1 addition & 1 deletion scala2.13/sql-plugin-columnar/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/sql-plugin-fileio/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/sql-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
</dependency>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<!-- use aggregator jar because accessing internal classes -->
Expand Down
2 changes: 1 addition & 1 deletion scala2.13/udf-compiler/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
<dependencies>
<dependency>
<groupId>com.nvidia</groupId>
<artifactId>spark-rapids-jni</artifactId>
<artifactId>${cudf-spark-jni.artifactId}</artifactId>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
Expand Down
Loading
Loading