forked from NVIDIA/spark-rapids
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support lists to/from the GPU (NVIDIA#1104)
Signed-off-by: Robert (Bobby) Evans <bobby@apache.org>
- Loading branch information
1 parent
93116c0
commit 4019778
Showing
12 changed files
with
417 additions
and
291 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# Copyright (c) 2020, NVIDIA CORPORATION. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
import pytest | ||
|
||
from asserts import assert_gpu_and_cpu_are_equal_collect | ||
from data_gen import * | ||
from marks import incompat | ||
from pyspark.sql.types import * | ||
import pyspark.sql.functions as f | ||
|
||
# Once we support arrays as literals then we can support a[null] and | ||
# negative indexes for all array gens. When that happens | ||
# test_nested_array_index should go away and this should test with | ||
# array_gens_sample instead | ||
@pytest.mark.parametrize('data_gen', single_level_array_gens, ids=idfn) | ||
def test_array_index(data_gen): | ||
assert_gpu_and_cpu_are_equal_collect( | ||
lambda spark : unary_op_df(spark, data_gen).selectExpr( | ||
'a[0]', | ||
'a[1]', | ||
'a[null]', | ||
'a[3]', | ||
'a[50]', | ||
'a[-1]')) | ||
|
||
# Once we support arrays as literals then we can support a[null] for | ||
# all array gens. See test_array_index for more info | ||
@pytest.mark.parametrize('data_gen', nested_array_gens_sample, ids=idfn) | ||
def test_nested_array_index(data_gen): | ||
assert_gpu_and_cpu_are_equal_collect( | ||
lambda spark : unary_op_df(spark, data_gen).selectExpr( | ||
'a[0]', | ||
'a[1]', | ||
'a[3]', | ||
'a[50]')) |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
# Copyright (c) 2020, NVIDIA CORPORATION. | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
|
||
import pytest | ||
|
||
from asserts import assert_gpu_and_cpu_are_equal_collect | ||
from data_gen import * | ||
from marks import incompat, approximate_float | ||
from pyspark.sql.types import * | ||
import pyspark.sql.functions as f | ||
|
||
|
||
# This is one of the most basic tests where we verify that we can | ||
# move data onto and off of the GPU without messing up. All data | ||
# that comes from data_gen is row formatted, with how pyspark | ||
# currently works and when we do a collect all of that data has | ||
# to be brought back to the CPU (rows) to be returned. | ||
# So we just need a very simple operation in the middle that | ||
# can be done on the GPU. | ||
def test_row_conversions(): | ||
gens = [["a", byte_gen], ["b", short_gen], ["c", int_gen], ["d", long_gen], | ||
["e", float_gen], ["f", double_gen], ["g", string_gen], ["h", boolean_gen], | ||
["i", timestamp_gen], ["j", date_gen], ["k", ArrayGen(byte_gen)], | ||
["l", ArrayGen(string_gen)], ["m", ArrayGen(float_gen)], | ||
["n", ArrayGen(boolean_gen)], ["o", ArrayGen(ArrayGen(short_gen))]] | ||
assert_gpu_and_cpu_are_equal_collect( | ||
lambda spark : gen_df(spark, gens).selectExpr("*", "a as a_again")) |
This file contains 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
This file contains 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
Oops, something went wrong.