Skip to content

[BUG] Empty array behaves different in OpenCL vs CUDA  #3058

Description

@avidov

When calling host() on an empty array the process crushes on segmentation fault with OpenCL backend. The same code passes with CUDA backend.

{
af::array test;
af::print("test", test);
std::vector v(100);
test.host(v.data());
}

OpenCL:
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/common/DependencyModule.cpp:55 ] Attempting to load: libforge.so
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/common/DependencyModule.cpp:60 ] Unable to open forge
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:204 ] Found 1 OpenCL platforms
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:216 ] Found 2 devices on platform NVIDIA CUDA
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:221 ] Found device Quadro GP100 on platform NVIDIA CUDA
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:221 ] Found device Quadro GP100 on platform NVIDIA CUDA
[platform][1606953256][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:226 ] Found 2 OpenCL devices
[platform][1606953257][065084] [ /private/home/avidov/multibackend/opencl/arrayfire/src/backend/opencl/device_manager.cpp:320 ] Default device: 0
test
[0 1 1 1]
Offset: 0
Strides: [1 0 0 0]

Segmentation fault

CUDA:
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/common/DependencyModule.cpp:55 ] Attempting to load: libforge.so
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/common/DependencyModule.cpp:60 ] Unable to open forge
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:424 ] CUDA Driver supports up to CUDA 10.1 ArrayFire CUDA Runtime 10.0
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:492 ] Found 2 CUDA devices
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:518 ] Found device: Quadro GP100 (15.9 GB | ~9860.84 GFLOPs | 56 SMs)
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:518 ] Found device: Quadro GP100 (15.9 GB | ~9860.84 GFLOPs | 56 SMs)
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:553 ] AF_CUDA_DEFAULT_DEVICE:
[platform][1606953367][065881] [ /private/home/avidov/arrayfire/src/backend/cuda/device_manager.cpp:572 ] Default device: 0(Quadro GP100)
test
[0 1 1 1]

System info:
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic
name, memory.total [MiB], driver_version
Quadro GP100, 16278 MiB, 418.116.00
rocm-smi not found.
clinfo not found.

Built Arrayfire from sourc:
opencl:

cd arrayfire; git checkout v3.7.1; mkdir build; cd build
cmake ..
-DCMAKE_BUILD_TYPE=Debug -DAF_BUILD_OPENCL=ON -DAF_BUILD_CUDA=OFF -DAF_BUILD_CPU=OFF
-DAF_BUILD_UNIFIED=OFF -DAF_BUILD_EXAMPLES=OFF -DBUILD_TESTING=ON -DAF_BUILD_DOCS=OFF \

cuda:
cd arrayfire; git checkout v3.7.1; mkdir build; cd build

Only builds the CUDA backend, not CPU or OpenCL

cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/usr
-DCMAKE_BUILD_TYPE=Release -DAF_BUILD_OPENCL=OFF -DAF_BUILD_CPU=OFF
-DAF_BUILD_UNIFIED=OFF -DAF_BUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF
-DCUDA_architecture_build_targets="6.0;7.0;7.0+PTX"
-DcuDNN_LINK_LIBRARY=$CUDNN_LIB_DIR/libcudnn.so.7.6.2
-DcuDNN_INCLUDE_DIRS=$CUDNN_INCLUDE_DIR
-DCUDA_cublasLt_static_LIBRARY=$CUDA_HOME/lib64/libcublasLt.so.10.1.0.105

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions