Skip to content

Comments

Add ROCm support for xobjects.#166

Open
ekatralis wants to merge 7 commits intoxsuite:mainfrom
ekatralis:RocmSupportMain
Open

Add ROCm support for xobjects.#166
ekatralis wants to merge 7 commits intoxsuite:mainfrom
ekatralis:RocmSupportMain

Conversation

@ekatralis
Copy link

@ekatralis ekatralis commented Dec 10, 2025

Description

This pull request adds rocm support for xobjects when using ContextCupy(). Includes changes to the headers so that they are compatible with the rocm definitions. This has been tested in the following configuration:

  • ROCm 6.2.2
  • Python 3.11
  • CuPy 13.6.0 compiled from source for a HIP backend.

CuPy can be configured as follows:

export ROCM_HOME=/opt/rocm
export HIPCC="$ROCM_HOME/bin/hipcc"
export CXX="$HIPCC"
export PATH="$ROCM_HOME/bin:$PATH"
export LD_LIBRARY_PATH="$ROCM_HOME/lib:$ROCM_HOME/lib64:${LD_LIBRARY_PATH}"

export HCC_AMDGPU_TARGET=gfx906 # for gpu in pcbe15600
export CUPY_INSTALL_USE_HIP=1


pip install --no-cache-dir --force-reinstall "cupy==13.6.0"

xobjects tets are passing. xtrack tests are passing as well.

Checklist

Mandatory:

  • All the tests are passing, including my new ones
  • I described my changes in this PR description
  • Investigate VRAM not being freed

Optional:

  • The code I wrote follows good style practices (see PEP 8 and PEP 20).
  • I have updated the docs in relation to my changes, if applicable
  • I have tested also GPU contexts -> Doesn't break CUDA compatibility

@ekatralis
Copy link
Author

TODO: Test the same setup on different PCs with different rocm versions. Ideally with newer GPUs that support ROCm 7, which allows for this pre-built wheel to be used, significantly reducing installation complexity:

https://rocm.blogs.amd.com/artificial-intelligence/cupy-v13/README.html

@ekatralis
Copy link
Author

ekatralis commented Dec 10, 2025

DONE: Add documentation on procedure to set up ROCm and build CuPy from source in the xsuite docs

@ekatralis
Copy link
Author

ekatralis commented Dec 11, 2025

BUG: When running pytest, the memory is not being freed-up in between tests. Patch might be required for this.

EDIT: This appears to happen on nvidia as well

@ekatralis
Copy link
Author

Related:
xsuite/xsuite#754

Copy link
Contributor

@szymonlopaciuk szymonlopaciuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very good, I don't see why we shouldn't merge it as-is, as it definitely won't disturb the current workflows.

@eltos
Copy link
Member

eltos commented Jan 15, 2026

Successfully tested this on GSI HPC with AMD MI100 and ROCm version 6.8.5 using the container prepared by @ekatralis here:
https://github.com/ekatralis/xsuite-on-gsi/blob/039347560ef573493c2e98f1b65048f86d6a2bc2/xsuite_amdrocm.def

Lattice is a simple FODO lattice (Drift, Multipole, Drift, Multipole), tracking 1e+06 particles over 1000 turns, experiment repeated N=5 times for uncertainty.

Context Tracking time
CuPy (2.338 ± 0.001) s
OpenCL (0.975 ± 0.002) s
CPU 93 s
Full output
(xsuite-env) /lustre/hes/pniederm/example.py cupy
/xsuite-env/lib/python3.12/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')
CuPy: available devices (8):
  0 AMD Instinct MI100
  1 AMD Instinct MI100
  2 AMD Instinct MI100
  3 AMD Instinct MI100
  4 AMD Instinct MI100
  5 AMD Instinct MI100
  6 AMD Instinct MI100
  7 AMD Instinct MI100
Using device: 0
Using context: ContextCupy:0
Setting up a simple FODO lattice...
Setup completed in: 19.60333507298492 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 2.338743943022564 s
Test passed
(xsuite-env) /lustre/hes/pniederm/example.py opencl
OpenCL: available platforms (2):
  0 AMD Accelerated Parallel Processing (Advanced Micro Devices, Inc.)
    OpenCL 2.1 AMD-APP (3635.0)
    0.0 GPU: gfx908:sramecc+:xnack-
    0.1 GPU: gfx908:sramecc+:xnack-
    0.2 GPU: gfx908:sramecc+:xnack-
    0.3 GPU: gfx908:sramecc+:xnack-
    0.4 GPU: gfx908:sramecc+:xnack-
    0.5 GPU: gfx908:sramecc+:xnack-
    0.6 GPU: gfx908:sramecc+:xnack-
    0.7 GPU: gfx908:sramecc+:xnack-
  1 Portable Computing Language (The pocl project)
    OpenCL 3.0 PoCL 5.0+debian  Linux, None+Asserts, RELOC, SPIR, LLVM 16.0.6, SLEEF, DISTRO, POCL_DEBUG
    1.0 CPU: cpu-haswell-AMD EPYC 7413 24-Core Processor
Using device: 0.0

/usr/lib/python3/dist-packages/pyopencl/cache.py:495: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.
  _create_built_program_from_source_cached(

Using context: ContextPyopencl:0.0
Setting up a simple FODO lattice...
Setup completed in: 0.42373332707211375 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 0.9755474431440234 s
Test passed
(xsuite-env) /lustre/hes/pniederm/example.py cpu

Using context: ContextCpu
Setting up a simple FODO lattice...
Setup completed in: 0.37141815200448036 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 93.4150049739983 s

@rdemaria
Copy link
Collaborator

Very interesting! The speed of cupy us promising but still painful. Do you have some explanation? Can you do the same excessive, but with nvidia?

@ekatralis
Copy link
Author

Very interesting! The speed of cupy us promising but still painful. Do you have some explanation? Can you do the same excessive, but with nvidia?

A plausible explanation for these results could be that we are using an older version of ROCm (6.x) and building CuPy from source. On ROCm 7.x AMD has their own cupy fork (which is supposed to be merged in v14) which should offer improved performance:

https://rocm.blogs.amd.com/artificial-intelligence/cupy-v13/README.html

I repeated the same test on a Titan V (TR 2970WX for CPU) for Nvidia using the same methodology (average over 5 runs):

Method Time
CPU 100 s
OpenCL 0.524 ± 0.010 s
CuPy 0.495 ± 0.007 s
Full output
(gpu_cf) ekatrali@pcbe-abp-gpu001:~/GPU_dev/xsuite-on-gsi$ python example.py cpu
/home/ekatrali/anaconda3/envs/gpu_cf/lib/python3.11/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')

Using context: ContextCpu
Setup completed in: 0.58940225886181 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 100.62413182435557 s
Test passed

(gpu_cf) ekatrali@pcbe-abp-gpu001:~/GPU_dev/xsuite-on-gsi$ python example.py opencl
/home/ekatrali/anaconda3/envs/gpu_cf/lib/python3.11/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')
OpenCL: available platforms (4):
  0 NVIDIA CUDA (NVIDIA Corporation)
    OpenCL 3.0 CUDA 11.4.557
    0.0 GPU: NVIDIA TITAN V
    0.1 GPU: NVIDIA TITAN V
    0.2 GPU: NVIDIA TITAN V
    0.3 GPU: NVIDIA TITAN V
  1 Intel(R) CPU Runtime for OpenCL(TM) Applications (Intel(R) Corporation)
    OpenCL 2.1 LINUX
    1.0 CPU: AMD Ryzen Threadripper 2970WX 24-Core Processor
  2 Portable Computing Language (The pocl project)
    OpenCL 1.2 pocl 1.4, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG
    2.0 CPU: pthread-AMD Ryzen Threadripper 2970WX 24-Core Processor
  3 Intel(R) CPU Runtime for OpenCL(TM) Applications (Intel(R) Corporation)
    OpenCL 2.1 LINUX
    3.0 CPU: AMD Ryzen Threadripper 2970WX 24-Core Processor
Using device: 0.0 


Using context: ContextPyopencl:0.0
Setup completed in: 0.5435653221793473 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 0.5145912640728056 s
Test passed

(gpu_cf) ekatrali@pcbe-abp-gpu001:~/GPU_dev/xsuite-on-gsi$ python example.py cupy
/home/ekatrali/anaconda3/envs/gpu_cf/lib/python3.11/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')

Using context: ContextCupy:0
Setup completed in: 0.8388642007485032 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 0.4981880891136825 s
Test passed

For reference here is the same test on a Radeon VII (TR 1950X CPU) as well:

Method Time
CPU 144 s
OpenCL 1.795 ± 0.003 s
CuPy 4.631 ± 0.004 s
Full output
(xsuite-env) python example.py cpu
/xsuite-env/lib/python3.12/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')

Using context: ContextCpu
Setup completed in: 0.6376619641669095 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 144.56509774830192 s
Test passed

(xsuite-env) python example.py opencl
/xsuite-env/lib/python3.12/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')
OpenCL: available platforms (2):
  0 AMD Accelerated Parallel Processing (Advanced Micro Devices, Inc.)
    OpenCL 2.1 AMD-APP (3649.0)
    0.0 GPU: gfx906:sramecc+:xnack-
  1 Portable Computing Language (The pocl project)
    OpenCL 3.0 PoCL 5.0+debian  Linux, None+Asserts, RELOC, SPIR, LLVM 16.0.6, SLEEF, DISTRO, POCL_DEBUG
    1.0 CPU: cpu-haswell-AMD Ryzen Threadripper 1950X 16-Core Processor
Using device: 0.0 

/usr/lib/python3/dist-packages/pyopencl/cache.py:495: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.
  _create_built_program_from_source_cached(

Using context: ContextPyopencl:0.0
Setup completed in: 0.6063676928170025 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 1.7923616538755596 s
Test passed

(xsuite-env) python example.py cupy
/xsuite-env/lib/python3.12/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
  cupy._util.experimental('cupyx.jit.rawkernel')

Using context: ContextCupy:0
Setup completed in: 1.3635484268888831 s
Tracking 1e+06 particles over 1000 turns...
Tracking completed in: 4.629076654091477 s
Test passed

@ekatralis
Copy link
Author

I was able to get the AMD fork (ROCm 7.x) working inside an apptainer container. Didn't notice any significant performance improvements over ROCm 6.x. I believe this was expected as the underlying system driver is the old one and the gfx906 in the development setup is not officially supported on ROCm 7.x.

This did however let me test compilations on HIPRTC, as with the previous setup (cupy compiled from source etc) we were using HIPCC for compilations on ROCm.

HIPRTC seems to be missing the int definitions that were present (and problematic) in HIPCC, so I updated the typedefs accordingly. @szymonlopaciuk Let me know once you have had a look.

Copy link
Contributor

@szymonlopaciuk szymonlopaciuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, the new changes seem similarly benign, so if it passes the tests I think we can go ahead with merging.

@ekatralis
Copy link
Author

ekatralis commented Feb 23, 2026

Looks good, the new changes seem similarly benign, so if it passes the tests I think we can go ahead with merging.

Just re-ran the tests on both CUDA and ROCm and everything is passing! I am attaching the output of the tests below:

Tests output on Nvidia
(gpu_cf) ekatrali@pcbe-abp-gpu001:~/xsuite-dev/xobjects$ git pull
Already up to date.
(gpu_cf) ekatrali@pcbe-abp-gpu001:~/xsuite-dev/xobjects$ git remote -v 
origin	git@github.com:ekatralis/xobjects.git (fetch)
origin	git@github.com:ekatralis/xobjects.git (push)
(gpu_cf) ekatrali@pcbe-abp-gpu001:~/xsuite-dev/xobjects$ git branch
* RocmSupportMain
  main
(gpu_cf) ekatrali@pcbe-abp-gpu001:~/xsuite-dev/xobjects$ pytest -v
============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0 -- /home/ekatrali/anaconda3/envs/gpu_cf/bin/python3.11
cachedir: .pytest_cache
metadata: {'Python': '3.11.14', 'Platform': 'Linux-6.8.0-100-generic-x86_64-with-glibc2.39', 'Packages': {'pytest': '9.0.2', 'pluggy': '1.6.0'}, 'Plugins': {'mock': '3.15.1', 'requests-mock': '1.12.1', 'xdist': '3.8.0', 'metadata': '3.1.1', 'html': '4.1.1'}}
rootdir: /home/ekatrali/xsuite-dev/xobjects
configfile: pyproject.toml
plugins: mock-3.15.1, requests-mock-1.12.1, xdist-3.8.0, metadata-3.1.1, html-4.1.1
collected 343 items                                                            

tests/test_align.py::test_create_aligned_objects[ContextCpu] PASSED      [  0%]
tests/test_align.py::test_create_aligned_objects[ContextCpu:auto] PASSED [  0%]
tests/test_align.py::test_create_aligned_objects[ContextCupy:0] PASSED   [  0%]
tests/test_align.py::test_create_aligned_objects[ContextPyopencl:0.0] PASSED [  1%]
tests/test_array.py::test_get_shape PASSED                               [  1%]
tests/test_array.py::test_class_creation PASSED                          [  1%]
tests/test_array.py::test_class_mk_array PASSED                          [  2%]
tests/test_array.py::test_inspect_args PASSED                            [  2%]
tests/test_array.py::test_array_allocation PASSED                        [  2%]
tests/test_array.py::test_static_array_allocation_with_none PASSED       [  2%]
tests/test_array.py::test_array_sshape_stype PASSED                      [  3%]
tests/test_array.py::test_array_dshape_stype PASSED                      [  3%]
tests/test_array.py::test_array_sshape_dtype PASSED                      [  3%]
tests/test_array.py::test_array_dshape_dtype PASSED                      [  4%]
tests/test_array.py::test_array_in_struct PASSED                         [  4%]
tests/test_array.py::test_initialize_from_array PASSED                   [  4%]
tests/test_array.py::test_init_with_nparray PASSED                       [  4%]
tests/test_array.py::test_init_with_nparray2d PASSED                     [  5%]
tests/test_array.py::test_init_with_list PASSED                          [  5%]
tests/test_array.py::test_init_with_nparray2d_dynamic PASSED             [  5%]
tests/test_array.py::test_update PASSED                                  [  6%]
tests/test_array.py::test_array_custom_strides[ContextCpu] PASSED        [  6%]
tests/test_array.py::test_array_custom_strides[ContextCpu:auto] PASSED   [  6%]
tests/test_array.py::test_array_custom_strides[ContextCupy:0] PASSED     [  6%]
tests/test_array.py::test_array_custom_strides[ContextPyopencl:0.0] PASSED [  7%]
tests/test_buffer.py::test_cl_print_devices PASSED                       [  7%]
tests/test_buffer.py::test_cl_init PASSED                                [  7%]
tests/test_buffer.py::test_new_buffer[ContextCpu] PASSED                 [  8%]
tests/test_buffer.py::test_new_buffer[ContextCpu:auto] PASSED            [  8%]
tests/test_buffer.py::test_new_buffer[ContextCupy:0] PASSED              [  8%]
tests/test_buffer.py::test_new_buffer[ContextPyopencl:0.0] PASSED        [  9%]
tests/test_buffer.py::test_read_write[ContextCpu] PASSED                 [  9%]
tests/test_buffer.py::test_read_write[ContextCpu:auto] PASSED            [  9%]
tests/test_buffer.py::test_read_write[ContextCupy:0] PASSED              [  9%]
tests/test_buffer.py::test_read_write[ContextPyopencl:0.0] PASSED        [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCpu] PASSED         [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCpu:auto] PASSED    [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCupy:0] PASSED      [ 11%]
tests/test_buffer.py::test_to_from_byterarray[ContextPyopencl:0.0] PASSED [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCpu] PASSED            [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCpu:auto] PASSED       [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCupy:0] PASSED         [ 12%]
tests/test_buffer.py::test_allocate_simple[ContextPyopencl:0.0] PASSED   [ 12%]
tests/test_buffer.py::test_free_simple[ContextCpu] PASSED                [ 12%]
tests/test_buffer.py::test_free_simple[ContextCpu:auto] PASSED           [ 13%]
tests/test_buffer.py::test_free_simple[ContextCupy:0] PASSED             [ 13%]
tests/test_buffer.py::test_free_simple[ContextPyopencl:0.0] PASSED       [ 13%]
tests/test_buffer.py::test_free[ContextCpu] PASSED                       [ 13%]
tests/test_buffer.py::test_free[ContextCpu:auto] PASSED                  [ 14%]
tests/test_buffer.py::test_free[ContextCupy:0] PASSED                    [ 14%]
tests/test_buffer.py::test_free[ContextPyopencl:0.0] PASSED              [ 14%]
tests/test_buffer.py::test_grow[ContextCpu] PASSED                       [ 15%]
tests/test_buffer.py::test_grow[ContextCpu:auto] PASSED                  [ 15%]
tests/test_buffer.py::test_grow[ContextCupy:0] PASSED                    [ 15%]
tests/test_buffer.py::test_grow[ContextPyopencl:0.0] PASSED              [ 16%]
tests/test_buffer.py::test_random_string[ContextCpu] PASSED              [ 16%]
tests/test_buffer.py::test_random_string[ContextCpu:auto] PASSED         [ 16%]
tests/test_buffer.py::test_random_string[ContextCupy:0] PASSED           [ 16%]
tests/test_buffer.py::test_random_string[ContextPyopencl:0.0] PASSED     [ 17%]
tests/test_buffer.py::test_nplike[ContextCpu] PASSED                     [ 17%]
tests/test_buffer.py::test_nplike[ContextCpu:auto] PASSED                [ 17%]
tests/test_buffer.py::test_nplike[ContextCupy:0] PASSED                  [ 18%]
tests/test_buffer.py::test_nplike[ContextPyopencl:0.0] PASSED            [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr2Int64-example_shape0] PASSED [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNInt64-example_shape1] PASSED [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr3Int8-example_shape2] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNInt8-example_shape3] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr4x5Int32-example_shape4] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr4xNInt32-example_shape5] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNx5Int32-example_shape6] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr2x3x5Int64-example_shape7] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNx3xMInt64-example_shape8] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr5xNx2Int64-example_shape9] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr3DynLenType-example_shape0] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNDynLenType-example_shape1] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr3x4DynLenType-example_shape2] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNx4DynLenType-example_shape3] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNxMDynLenType-example_shape4] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr2x3x4DynLenType-example_shape5] PASSED [ 23%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr2xNx4DynLenType-example_shape6] PASSED [ 23%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNx3xMDynLenType-example_shape7] PASSED [ 23%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCpu] PASSED [ 23%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCpu:auto] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCupy:0] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextPyopencl:0.0] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCpu] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCpu:auto] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCupy:0] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextPyopencl:0.0] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCpu] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCpu:auto] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCupy:0] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextPyopencl:0.0] PASSED [ 27%]
tests/test_capi.py::test_struct1 PASSED                                  [ 27%]
tests/test_capi.py::test_struct2 PASSED                                  [ 27%]
tests/test_capi.py::test_struct2r PASSED                                 [ 27%]
tests/test_capi.py::test_struct3 PASSED                                  [ 28%]
tests/test_capi.py::test_struct3r PASSED                                 [ 28%]
tests/test_capi.py::test_struct4 PASSED                                  [ 28%]
tests/test_capi.py::test_struct5 PASSED                                  [ 29%]
tests/test_capi.py::test_unionref PASSED                                 [ 29%]
tests/test_capi.py::test_get_two_indices PASSED                          [ 29%]
tests/test_capi.py::test_dependencies PASSED                             [ 30%]
tests/test_capi.py::test_getp1_dyn_length_static_type_array PASSED       [ 30%]
tests/test_capi.py::test_getp1_dyn_length_dyn_type_array PASSED          [ 30%]
tests/test_capi.py::test_getp1_dyn_length_dyn_type_string_array PASSED   [ 30%]
tests/test_capi.py::test_gpu_api[ContextCpu] PASSED                      [ 31%]
tests/test_capi.py::test_gpu_api[ContextCpu:auto] PASSED                 [ 31%]
tests/test_capi.py::test_gpu_api[ContextCupy:0] PASSED                   [ 31%]
tests/test_capi.py::test_gpu_api[ContextPyopencl:0.0] PASSED             [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCpu] PASSED              [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCpu:auto] PASSED         [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCupy:0] PASSED           [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextPyopencl:0.0] PASSED     [ 33%]
tests/test_chunk.py::test_chunk PASSED                                   [ 33%]
tests/test_common.py::test_common_atomicadd[ContextCpu] PASSED           [ 33%]
tests/test_common.py::test_common_atomicadd[ContextCpu:auto] PASSED      [ 34%]
tests/test_common.py::test_common_atomicadd[ContextCupy:0] PASSED        [ 34%]
tests/test_common.py::test_common_atomicadd[ContextPyopencl:0.0] PASSED  [ 34%]
tests/test_common.py::test_atomic[Int8-overload-ContextCpu] PASSED       [ 34%]
tests/test_common.py::test_atomic[Int8-overload-ContextCpu:auto] PASSED  [ 35%]
tests/test_common.py::test_atomic[Int8-overload-ContextCupy:0] PASSED    [ 35%]
tests/test_common.py::test_atomic[Int8-overload-ContextPyopencl:0.0] PASSED [ 35%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCpu] PASSED    [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCpu:auto] PASSED [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCupy:0] PASSED [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextPyopencl:0.0] PASSED [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCpu] PASSED      [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCpu:auto] PASSED [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCupy:0] PASSED   [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextPyopencl:0.0] PASSED [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCpu] PASSED   [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCpu:auto] PASSED [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCupy:0] PASSED [ 39%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextPyopencl:0.0] PASSED [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCpu] PASSED      [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCpu:auto] PASSED [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCupy:0] PASSED   [ 40%]
tests/test_common.py::test_atomic[Int32-overload-ContextPyopencl:0.0] PASSED [ 40%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCpu] PASSED   [ 40%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCpu:auto] PASSED [ 41%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCupy:0] PASSED [ 41%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextPyopencl:0.0] PASSED [ 41%]
tests/test_common.py::test_atomic[Int64-overload-ContextCpu] PASSED      [ 41%]
tests/test_common.py::test_atomic[Int64-overload-ContextCpu:auto] PASSED [ 42%]
tests/test_common.py::test_atomic[Int64-overload-ContextCupy:0] PASSED   [ 42%]
tests/test_common.py::test_atomic[Int64-overload-ContextPyopencl:0.0] PASSED [ 42%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCpu] PASSED   [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCpu:auto] PASSED [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCupy:0] PASSED [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextPyopencl:0.0] PASSED [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCpu] PASSED      [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCpu:auto] PASSED [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCupy:0] PASSED   [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextPyopencl:0.0] PASSED [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCpu] PASSED   [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCpu:auto] PASSED [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCupy:0] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextPyopencl:0.0] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCpu] PASSED     [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCpu:auto] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCupy:0] PASSED  [ 47%]
tests/test_common.py::test_atomic[Uint16-overload-ContextPyopencl:0.0] PASSED [ 47%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCpu] PASSED  [ 47%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCpu:auto] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCupy:0] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextPyopencl:0.0] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCpu] PASSED     [ 48%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCpu:auto] PASSED [ 49%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCupy:0] PASSED  [ 49%]
tests/test_common.py::test_atomic[Uint32-overload-ContextPyopencl:0.0] PASSED [ 49%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCpu] PASSED  [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCpu:auto] PASSED [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCupy:0] PASSED [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextPyopencl:0.0] PASSED [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCpu] PASSED     [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCpu:auto] PASSED [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCupy:0] PASSED  [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextPyopencl:0.0] PASSED [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCpu] PASSED  [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCpu:auto] PASSED [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCupy:0] PASSED [ 53%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextPyopencl:0.0] PASSED [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCpu] PASSED    [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCpu:auto] PASSED [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCupy:0] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-overload-ContextPyopencl:0.0] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCpu] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCpu:auto] PASSED [ 55%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCupy:0] PASSED [ 55%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextPyopencl:0.0] PASSED [ 55%]
tests/test_common.py::test_atomic[Float64-overload-ContextCpu] PASSED    [ 55%]
tests/test_common.py::test_atomic[Float64-overload-ContextCpu:auto] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-overload-ContextCupy:0] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-overload-ContextPyopencl:0.0] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCpu] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCpu:auto] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCupy:0] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextPyopencl:0.0] PASSED [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCpu] SKIPPED     [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCpu:auto] SKIPPED [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCupy:0] SKIPPED  [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextPyopencl:0.0] PASSED [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCpu] PASSED        [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCpu:auto] PASSED   [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCupy:0] PASSED     [ 60%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextPyopencl:0.0] PASSED [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCpu] PASSED      [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCpu:auto] PASSED [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCupy:0] PASSED   [ 61%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextPyopencl:0.0] PASSED [ 61%]
tests/test_hybrid_class.py::test_nested_hybrid_init_no_ref PASSED        [ 61%]
tests/test_hybrid_class.py::test_nested_hybrid_setattr_no_ref PASSED     [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_init_with_ref PASSED      [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_init_with_ref_different_buf PASSED [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_setattr_with_ref PASSED   [ 62%]
tests/test_hybrid_class.py::test_rename_of_two_xo_fields_to_same_name_fails PASSED [ 63%]
tests/test_hybrid_class.py::test_rename_with_ambiguous_fields_fails PASSED [ 63%]
tests/test_hybrid_class.py::test_move_nested_objects_between_contexts_no_ref PASSED [ 63%]
tests/test_hybrid_class.py::test_move_nested_objects_with_ref_fails PASSED [ 64%]
tests/test_hybrid_class.py::test_move_field_of_nested_fails PASSED       [ 64%]
tests/test_hybrid_class.py::test_to_json_defaults PASSED                 [ 64%]
tests/test_hybrid_class.py::test_to_dict_python_vars PASSED              [ 65%]
tests/test_kernel.py::test_kernel_cpu PASSED                             [ 65%]
tests/test_kernel.py::test_kernels[ContextCpu] PASSED                    [ 65%]
tests/test_kernel.py::test_kernels[ContextCpu:auto] PASSED               [ 65%]
tests/test_kernel.py::test_kernels[ContextCupy:0] PASSED                 [ 66%]
tests/test_kernel.py::test_kernels[ContextPyopencl:0.0] PASSED           [ 66%]
tests/test_kernel.py::test_kernels_manual_add[ContextCpu] PASSED         [ 66%]
tests/test_kernel.py::test_kernels_manual_add[ContextCpu:auto] PASSED    [ 67%]
tests/test_kernel.py::test_kernels_manual_add[ContextCupy:0] PASSED      [ 67%]
tests/test_kernel.py::test_kernels_manual_add[ContextPyopencl:0.0] PASSED [ 67%]
tests/test_kernel.py::test_kernels_save_files PASSED                     [ 67%]
tests/test_kernel.py::test_kernels_save_load_with_classes PASSED         [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCpu] PASSED        [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCpu:auto] PASSED   [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCupy:0] PASSED     [ 69%]
tests/test_linked_array.py::test_linked_arrays[ContextPyopencl:0.0] PASSED [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCpu] PASSED                [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCpu:auto] PASSED           [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCupy:0] PASSED             [ 70%]
tests/test_nplike_arrays.py::test_type[ContextPyopencl:0.0] PASSED       [ 70%]
tests/test_nplike_arrays.py::test_ffts[ContextCpu] PASSED                [ 70%]
tests/test_nplike_arrays.py::test_ffts[ContextCpu:auto] PASSED           [ 71%]
tests/test_nplike_arrays.py::test_ffts[ContextCupy:0] PASSED             [ 71%]
tests/test_nplike_arrays.py::test_ffts[ContextPyopencl:0.0] PASSED       [ 71%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCpu] PASSED           [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCpu:auto] PASSED      [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCupy:0] PASSED        [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextPyopencl:0.0] PASSED  [ 72%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCpu] PASSED           [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCpu:auto] PASSED      [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCupy:0] PASSED        [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextPyopencl:0.0] PASSED  [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCpu] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCpu:auto] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCupy:0] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextPyopencl:0.0] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCpu] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCpu:auto] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCupy:0] PASSED [ 76%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextPyopencl:0.0] PASSED [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCpu] PASSED            [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCpu:auto] PASSED       [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCupy:0] PASSED         [ 77%]
tests/test_ref.py::test_ref_to_static_type[ContextPyopencl:0.0] PASSED   [ 77%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCpu] PASSED           [ 77%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCpu:auto] PASSED      [ 78%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCupy:0] PASSED        [ 78%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextPyopencl:0.0] PASSED  [ 78%]
tests/test_ref.py::test_ref_nested PASSED                                [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCpu] PASSED                     [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCpu:auto] PASSED                [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCupy:0] PASSED                  [ 79%]
tests/test_ref.py::test_ref_c_api[ContextPyopencl:0.0] PASSED            [ 80%]
tests/test_ref.py::test_unionref[ContextCpu] PASSED                      [ 80%]
tests/test_ref.py::test_unionref[ContextCpu:auto] PASSED                 [ 80%]
tests/test_ref.py::test_unionref[ContextCupy:0] PASSED                   [ 81%]
tests/test_ref.py::test_unionref[ContextPyopencl:0.0] PASSED             [ 81%]
tests/test_ref.py::test_has_refs PASSED                                  [ 81%]
tests/test_scalars.py::test_scalar_class PASSED                          [ 81%]
tests/test_scalars.py::test_scalar_buffer[ContextCpu] PASSED             [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextCpu:auto] PASSED        [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextCupy:0] PASSED          [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextPyopencl:0.0] PASSED    [ 83%]
tests/test_shared_memory.py::test_shared_memory PASSED                   [ 83%]
tests/test_strides.py::test_strides PASSED                               [ 83%]
tests/test_strides.py::test_iter_index PASSED                            [ 83%]
tests/test_string.py::test_string_class PASSED                           [ 84%]
tests/test_string.py::test_string_fixed PASSED                           [ 84%]
tests/test_string.py::test_string_init1 PASSED                           [ 84%]
tests/test_string.py::test_string_init2 PASSED                           [ 85%]
tests/test_string.py::test_string_init3[ContextCpu] PASSED               [ 85%]
tests/test_string.py::test_string_init3[ContextCpu:auto] PASSED          [ 85%]
tests/test_string.py::test_string_init3[ContextCupy:0] PASSED            [ 86%]
tests/test_string.py::test_string_init3[ContextPyopencl:0.0] PASSED      [ 86%]
tests/test_string.py::test_string_array[ContextCpu] PASSED               [ 86%]
tests/test_string.py::test_string_array[ContextCpu:auto] PASSED          [ 86%]
tests/test_string.py::test_string_array[ContextCupy:0] PASSED            [ 87%]
tests/test_string.py::test_string_array[ContextPyopencl:0.0] PASSED      [ 87%]
tests/test_struct.py::test_static_struct_def PASSED                      [ 87%]
tests/test_struct.py::test_static_struct[ContextCpu] PASSED              [ 88%]
tests/test_struct.py::test_static_struct[ContextCpu:auto] PASSED         [ 88%]
tests/test_struct.py::test_static_struct[ContextCupy:0] PASSED           [ 88%]
tests/test_struct.py::test_static_struct[ContextPyopencl:0.0] PASSED     [ 88%]
tests/test_struct.py::test_nested_struct[ContextCpu] PASSED              [ 89%]
tests/test_struct.py::test_nested_struct[ContextCpu:auto] PASSED         [ 89%]
tests/test_struct.py::test_nested_struct[ContextCupy:0] PASSED           [ 89%]
tests/test_struct.py::test_nested_struct[ContextPyopencl:0.0] PASSED     [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCpu] PASSED             [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCpu:auto] PASSED        [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCupy:0] PASSED          [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextPyopencl:0.0] PASSED    [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCpu] PASSED      [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCpu:auto] PASSED [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCupy:0] PASSED   [ 92%]
tests/test_struct.py::test_dynamic_nested_struct[ContextPyopencl:0.0] PASSED [ 92%]
tests/test_struct.py::test_assign_full_struct[ContextCpu] PASSED         [ 92%]
tests/test_struct.py::test_assign_full_struct[ContextCpu:auto] PASSED    [ 93%]
tests/test_struct.py::test_assign_full_struct[ContextCupy:0] PASSED      [ 93%]
tests/test_struct.py::test_assign_full_struct[ContextPyopencl:0.0] PASSED [ 93%]
tests/test_struct.py::test_preinit PASSED                                [ 93%]
tests/test_struct.py::test_init_from_xobj PASSED                         [ 94%]
tests/test_struct.py::test_nestednested PASSED                           [ 94%]
tests/test_struct.py::test_copy_dynamic PASSED                           [ 94%]
tests/test_struct.py::test_kernel_namings PASSED                         [ 95%]
tests/test_struct.py::test_compile_kernels_only_if_needed PASSED         [ 95%]
tests/test_to_dict.py::test_to_dict PASSED                               [ 95%]
tests/test_to_dict.py::test_to_dict_array PASSED                         [ 95%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_none_offset_none PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_none_offset_given PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_given_offset_none PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_given_offset_given PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_none_offset_none PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_none_offset_given PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_none_ok PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_none PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given_ok[packed] PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given_ok[aligned] PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given PASSED [ 99%]
tests/test_unionref.py::test_classdef PASSED                             [ 99%]
tests/test_unionref.py::test_init PASSED                                 [ 99%]
tests/test_unionref.py::test_array PASSED                                [100%]

=============================== warnings summary ===============================
../../anaconda3/envs/gpu_cf/lib/python3.11/site-packages/cupyx/jit/_interface.py:173
  /home/ekatrali/anaconda3/envs/gpu_cf/lib/python3.11/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
    cupy._util.experimental('cupyx.jit.rawkernel')

xobjects/test_helpers.py:47
  /home/ekatrali/xsuite-dev/xobjects/xobjects/test_helpers.py:47: PytestUnknownMarkWarning: Unknown pytest.mark.context_dependent - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    return pytest.mark.context_dependent(test)

xobjects/test_helpers.py:85
  /home/ekatrali/xsuite-dev/xobjects/xobjects/test_helpers.py:85: PytestUnknownMarkWarning: Unknown pytest.mark.context_dependent - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    return pytest.mark.context_dependent

tests/test_capi.py: 40 warnings
tests/test_common.py: 42 warnings
tests/test_kernel.py: 7 warnings
tests/test_ref.py: 4 warnings
tests/test_struct.py: 2 warnings
  /home/ekatrali/anaconda3/envs/gpu_cf/lib/python3.11/site-packages/setuptools/config/expand.py:126: SetuptoolsWarning: File '/home/ekatrali/xsuite-dev/xobjects/README.md' cannot be found
    return '\n'.join(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================= 340 passed, 3 skipped, 98 warnings in 39.02s =================
Tests output on AMD
(cupy_v69) ekatrali@pcbe15600:~/Documents/CERN/xsuite_fun/xobjects$ git pull
Already up to date.
(cupy_v69) ekatrali@pcbe15600:~/Documents/CERN/xsuite_fun/xobjects$ git remote -v
origin	git@github.com:ekatralis/xobjects.git (fetch)
origin	git@github.com:ekatralis/xobjects.git (push)
(cupy_v69) ekatrali@pcbe15600:~/Documents/CERN/xsuite_fun/xobjects$ git branch
  AddSparseSolvers
  RocmSupport
* RocmSupportMain
  main
(cupy_v69) ekatrali@pcbe15600:~/Documents/CERN/xsuite_fun/xobjects$ pytest -v
============================= test session starts ==============================
platform linux -- Python 3.11.14, pytest-9.0.2, pluggy-1.6.0 -- /home/ekatrali/miniconda3/envs/cupy_v69/bin/python3.11
cachedir: .pytest_cache
rootdir: /home/ekatrali/Documents/CERN/xsuite_fun/xobjects
configfile: pyproject.toml
plugins: mock-3.15.1, requests-mock-1.12.1
collected 343 items                                                            

tests/test_align.py::test_create_aligned_objects[ContextCpu] PASSED      [  0%]
tests/test_align.py::test_create_aligned_objects[ContextCpu:auto] PASSED [  0%]
tests/test_align.py::test_create_aligned_objects[ContextCupy:0] PASSED   [  0%]
tests/test_align.py::test_create_aligned_objects[ContextPyopencl:0.0] PASSED [  1%]
tests/test_array.py::test_get_shape PASSED                               [  1%]
tests/test_array.py::test_class_creation PASSED                          [  1%]
tests/test_array.py::test_class_mk_array PASSED                          [  2%]
tests/test_array.py::test_inspect_args PASSED                            [  2%]
tests/test_array.py::test_array_allocation PASSED                        [  2%]
tests/test_array.py::test_static_array_allocation_with_none PASSED       [  2%]
tests/test_array.py::test_array_sshape_stype PASSED                      [  3%]
tests/test_array.py::test_array_dshape_stype PASSED                      [  3%]
tests/test_array.py::test_array_sshape_dtype PASSED                      [  3%]
tests/test_array.py::test_array_dshape_dtype PASSED                      [  4%]
tests/test_array.py::test_array_in_struct PASSED                         [  4%]
tests/test_array.py::test_initialize_from_array PASSED                   [  4%]
tests/test_array.py::test_init_with_nparray PASSED                       [  4%]
tests/test_array.py::test_init_with_nparray2d PASSED                     [  5%]
tests/test_array.py::test_init_with_list PASSED                          [  5%]
tests/test_array.py::test_init_with_nparray2d_dynamic PASSED             [  5%]
tests/test_array.py::test_update PASSED                                  [  6%]
tests/test_array.py::test_array_custom_strides[ContextCpu] PASSED        [  6%]
tests/test_array.py::test_array_custom_strides[ContextCpu:auto] PASSED   [  6%]
tests/test_array.py::test_array_custom_strides[ContextCupy:0] PASSED     [  6%]
tests/test_array.py::test_array_custom_strides[ContextPyopencl:0.0] PASSED [  7%]
tests/test_buffer.py::test_cl_print_devices PASSED                       [  7%]
tests/test_buffer.py::test_cl_init PASSED                                [  7%]
tests/test_buffer.py::test_new_buffer[ContextCpu] PASSED                 [  8%]
tests/test_buffer.py::test_new_buffer[ContextCpu:auto] PASSED            [  8%]
tests/test_buffer.py::test_new_buffer[ContextCupy:0] PASSED              [  8%]
tests/test_buffer.py::test_new_buffer[ContextPyopencl:0.0] PASSED        [  9%]
tests/test_buffer.py::test_read_write[ContextCpu] PASSED                 [  9%]
tests/test_buffer.py::test_read_write[ContextCpu:auto] PASSED            [  9%]
tests/test_buffer.py::test_read_write[ContextCupy:0] PASSED              [  9%]
tests/test_buffer.py::test_read_write[ContextPyopencl:0.0] PASSED        [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCpu] PASSED         [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCpu:auto] PASSED    [ 10%]
tests/test_buffer.py::test_to_from_byterarray[ContextCupy:0] PASSED      [ 11%]
tests/test_buffer.py::test_to_from_byterarray[ContextPyopencl:0.0] PASSED [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCpu] PASSED            [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCpu:auto] PASSED       [ 11%]
tests/test_buffer.py::test_allocate_simple[ContextCupy:0] PASSED         [ 12%]
tests/test_buffer.py::test_allocate_simple[ContextPyopencl:0.0] PASSED   [ 12%]
tests/test_buffer.py::test_free_simple[ContextCpu] PASSED                [ 12%]
tests/test_buffer.py::test_free_simple[ContextCpu:auto] PASSED           [ 13%]
tests/test_buffer.py::test_free_simple[ContextCupy:0] PASSED             [ 13%]
tests/test_buffer.py::test_free_simple[ContextPyopencl:0.0] PASSED       [ 13%]
tests/test_buffer.py::test_free[ContextCpu] PASSED                       [ 13%]
tests/test_buffer.py::test_free[ContextCpu:auto] PASSED                  [ 14%]
tests/test_buffer.py::test_free[ContextCupy:0] PASSED                    [ 14%]
tests/test_buffer.py::test_free[ContextPyopencl:0.0] PASSED              [ 14%]
tests/test_buffer.py::test_grow[ContextCpu] PASSED                       [ 15%]
tests/test_buffer.py::test_grow[ContextCpu:auto] PASSED                  [ 15%]
tests/test_buffer.py::test_grow[ContextCupy:0] PASSED                    [ 15%]
tests/test_buffer.py::test_grow[ContextPyopencl:0.0] PASSED              [ 16%]
tests/test_buffer.py::test_random_string[ContextCpu] PASSED              [ 16%]
tests/test_buffer.py::test_random_string[ContextCpu:auto] PASSED         [ 16%]
tests/test_buffer.py::test_random_string[ContextCupy:0] PASSED           [ 16%]
tests/test_buffer.py::test_random_string[ContextPyopencl:0.0] PASSED     [ 17%]
tests/test_buffer.py::test_nplike[ContextCpu] PASSED                     [ 17%]
tests/test_buffer.py::test_nplike[ContextCpu:auto] PASSED                [ 17%]
tests/test_buffer.py::test_nplike[ContextCupy:0] PASSED                  [ 18%]
tests/test_buffer.py::test_nplike[ContextPyopencl:0.0] PASSED            [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr2Int64-example_shape0] PASSED [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNInt64-example_shape1] PASSED [ 18%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr3Int8-example_shape2] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNInt8-example_shape3] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr4x5Int32-example_shape4] PASSED [ 19%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr4xNInt32-example_shape5] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNx5Int32-example_shape6] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr2x3x5Int64-example_shape7] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[ArrNx3xMInt64-example_shape8] PASSED [ 20%]
tests/test_capi.py::test_array_static_type_init_get_set[Arr5xNx2Int64-example_shape9] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr3DynLenType-example_shape0] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNDynLenType-example_shape1] PASSED [ 21%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr3x4DynLenType-example_shape2] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNx4DynLenType-example_shape3] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNxMDynLenType-example_shape4] PASSED [ 22%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr2x3x4DynLenType-example_shape5] PASSED [ 23%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[Arr2xNx4DynLenType-example_shape6] PASSED [ 23%]
tests/test_capi.py::test_array_dynamic_type_init_get_set[ArrNx3xMDynLenType-example_shape7] PASSED [ 23%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCpu] PASSED [ 23%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCpu:auto] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextCupy:0] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[Arr3x5x7Uint64-ContextPyopencl:0.0] PASSED [ 24%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCpu] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCpu:auto] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextCupy:0] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNxMxOUint64-ContextPyopencl:0.0] PASSED [ 25%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCpu] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCpu:auto] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextCupy:0] PASSED [ 26%]
tests/test_capi.py::test_array_get_shape[ArrNx5xMUint64-ContextPyopencl:0.0] PASSED [ 27%]
tests/test_capi.py::test_struct1 PASSED                                  [ 27%]
tests/test_capi.py::test_struct2 PASSED                                  [ 27%]
tests/test_capi.py::test_struct2r PASSED                                 [ 27%]
tests/test_capi.py::test_struct3 PASSED                                  [ 28%]
tests/test_capi.py::test_struct3r PASSED                                 [ 28%]
tests/test_capi.py::test_struct4 PASSED                                  [ 28%]
tests/test_capi.py::test_struct5 PASSED                                  [ 29%]
tests/test_capi.py::test_unionref PASSED                                 [ 29%]
tests/test_capi.py::test_get_two_indices PASSED                          [ 29%]
tests/test_capi.py::test_dependencies PASSED                             [ 30%]
tests/test_capi.py::test_getp1_dyn_length_static_type_array PASSED       [ 30%]
tests/test_capi.py::test_getp1_dyn_length_dyn_type_array PASSED          [ 30%]
tests/test_capi.py::test_getp1_dyn_length_dyn_type_string_array PASSED   [ 30%]
tests/test_capi.py::test_gpu_api[ContextCpu] PASSED                      [ 31%]
tests/test_capi.py::test_gpu_api[ContextCpu:auto] PASSED                 [ 31%]
tests/test_capi.py::test_gpu_api[ContextCupy:0] PASSED                   [ 31%]
tests/test_capi.py::test_gpu_api[ContextPyopencl:0.0] PASSED             [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCpu] PASSED              [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCpu:auto] PASSED         [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextCupy:0] PASSED           [ 32%]
tests/test_capi.py::test_array_of_arrays[ContextPyopencl:0.0] PASSED     [ 33%]
tests/test_chunk.py::test_chunk PASSED                                   [ 33%]
tests/test_common.py::test_common_atomicadd[ContextCpu] PASSED           [ 33%]
tests/test_common.py::test_common_atomicadd[ContextCpu:auto] PASSED      [ 34%]
tests/test_common.py::test_common_atomicadd[ContextCupy:0] PASSED        [ 34%]
tests/test_common.py::test_common_atomicadd[ContextPyopencl:0.0] PASSED  [ 34%]
tests/test_common.py::test_atomic[Int8-overload-ContextCpu] PASSED       [ 34%]
tests/test_common.py::test_atomic[Int8-overload-ContextCpu:auto] PASSED  [ 35%]
tests/test_common.py::test_atomic[Int8-overload-ContextCupy:0] PASSED    [ 35%]
tests/test_common.py::test_atomic[Int8-overload-ContextPyopencl:0.0] PASSED [ 35%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCpu] PASSED    [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCpu:auto] PASSED [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextCupy:0] PASSED [ 36%]
tests/test_common.py::test_atomic[Int8-no_overload-ContextPyopencl:0.0] PASSED [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCpu] PASSED      [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCpu:auto] PASSED [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextCupy:0] PASSED   [ 37%]
tests/test_common.py::test_atomic[Int16-overload-ContextPyopencl:0.0] PASSED [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCpu] PASSED   [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCpu:auto] PASSED [ 38%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextCupy:0] PASSED [ 39%]
tests/test_common.py::test_atomic[Int16-no_overload-ContextPyopencl:0.0] PASSED [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCpu] PASSED      [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCpu:auto] PASSED [ 39%]
tests/test_common.py::test_atomic[Int32-overload-ContextCupy:0] PASSED   [ 40%]
tests/test_common.py::test_atomic[Int32-overload-ContextPyopencl:0.0] PASSED [ 40%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCpu] PASSED   [ 40%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCpu:auto] PASSED [ 41%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextCupy:0] PASSED [ 41%]
tests/test_common.py::test_atomic[Int32-no_overload-ContextPyopencl:0.0] PASSED [ 41%]
tests/test_common.py::test_atomic[Int64-overload-ContextCpu] PASSED      [ 41%]
tests/test_common.py::test_atomic[Int64-overload-ContextCpu:auto] PASSED [ 42%]
tests/test_common.py::test_atomic[Int64-overload-ContextCupy:0] PASSED   [ 42%]
tests/test_common.py::test_atomic[Int64-overload-ContextPyopencl:0.0] PASSED [ 42%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCpu] PASSED   [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCpu:auto] PASSED [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextCupy:0] PASSED [ 43%]
tests/test_common.py::test_atomic[Int64-no_overload-ContextPyopencl:0.0] PASSED [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCpu] PASSED      [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCpu:auto] PASSED [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextCupy:0] PASSED   [ 44%]
tests/test_common.py::test_atomic[Uint8-overload-ContextPyopencl:0.0] PASSED [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCpu] PASSED   [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCpu:auto] PASSED [ 45%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextCupy:0] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint8-no_overload-ContextPyopencl:0.0] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCpu] PASSED     [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCpu:auto] PASSED [ 46%]
tests/test_common.py::test_atomic[Uint16-overload-ContextCupy:0] PASSED  [ 47%]
tests/test_common.py::test_atomic[Uint16-overload-ContextPyopencl:0.0] PASSED [ 47%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCpu] PASSED  [ 47%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCpu:auto] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextCupy:0] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint16-no_overload-ContextPyopencl:0.0] PASSED [ 48%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCpu] PASSED     [ 48%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCpu:auto] PASSED [ 49%]
tests/test_common.py::test_atomic[Uint32-overload-ContextCupy:0] PASSED  [ 49%]
tests/test_common.py::test_atomic[Uint32-overload-ContextPyopencl:0.0] PASSED [ 49%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCpu] PASSED  [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCpu:auto] PASSED [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextCupy:0] PASSED [ 50%]
tests/test_common.py::test_atomic[Uint32-no_overload-ContextPyopencl:0.0] PASSED [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCpu] PASSED     [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCpu:auto] PASSED [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextCupy:0] PASSED  [ 51%]
tests/test_common.py::test_atomic[Uint64-overload-ContextPyopencl:0.0] PASSED [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCpu] PASSED  [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCpu:auto] PASSED [ 52%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextCupy:0] PASSED [ 53%]
tests/test_common.py::test_atomic[Uint64-no_overload-ContextPyopencl:0.0] PASSED [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCpu] PASSED    [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCpu:auto] PASSED [ 53%]
tests/test_common.py::test_atomic[Float32-overload-ContextCupy:0] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-overload-ContextPyopencl:0.0] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCpu] PASSED [ 54%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCpu:auto] PASSED [ 55%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextCupy:0] PASSED [ 55%]
tests/test_common.py::test_atomic[Float32-no_overload-ContextPyopencl:0.0] PASSED [ 55%]
tests/test_common.py::test_atomic[Float64-overload-ContextCpu] PASSED    [ 55%]
tests/test_common.py::test_atomic[Float64-overload-ContextCpu:auto] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-overload-ContextCupy:0] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-overload-ContextPyopencl:0.0] PASSED [ 56%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCpu] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCpu:auto] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextCupy:0] PASSED [ 57%]
tests/test_common.py::test_atomic[Float64-no_overload-ContextPyopencl:0.0] PASSED [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCpu] SKIPPED     [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCpu:auto] SKIPPED [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextCupy:0] SKIPPED  [ 58%]
tests/test_context_opencl.py::test_opencl_device[ContextPyopencl:0.0] PASSED [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCpu] PASSED        [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCpu:auto] PASSED   [ 59%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextCupy:0] PASSED     [ 60%]
tests/test_hybrid_class.py::test_hybrid_struct[ContextPyopencl:0.0] PASSED [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCpu] PASSED      [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCpu:auto] PASSED [ 60%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextCupy:0] PASSED   [ 61%]
tests/test_hybrid_class.py::test_explicit_buffer[ContextPyopencl:0.0] PASSED [ 61%]
tests/test_hybrid_class.py::test_nested_hybrid_init_no_ref PASSED        [ 61%]
tests/test_hybrid_class.py::test_nested_hybrid_setattr_no_ref PASSED     [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_init_with_ref PASSED      [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_init_with_ref_different_buf PASSED [ 62%]
tests/test_hybrid_class.py::test_nested_hybrid_setattr_with_ref PASSED   [ 62%]
tests/test_hybrid_class.py::test_rename_of_two_xo_fields_to_same_name_fails PASSED [ 63%]
tests/test_hybrid_class.py::test_rename_with_ambiguous_fields_fails PASSED [ 63%]
tests/test_hybrid_class.py::test_move_nested_objects_between_contexts_no_ref PASSED [ 63%]
tests/test_hybrid_class.py::test_move_nested_objects_with_ref_fails PASSED [ 64%]
tests/test_hybrid_class.py::test_move_field_of_nested_fails PASSED       [ 64%]
tests/test_hybrid_class.py::test_to_json_defaults PASSED                 [ 64%]
tests/test_hybrid_class.py::test_to_dict_python_vars PASSED              [ 65%]
tests/test_kernel.py::test_kernel_cpu PASSED                             [ 65%]
tests/test_kernel.py::test_kernels[ContextCpu] PASSED                    [ 65%]
tests/test_kernel.py::test_kernels[ContextCpu:auto] PASSED               [ 65%]
tests/test_kernel.py::test_kernels[ContextCupy:0] PASSED                 [ 66%]
tests/test_kernel.py::test_kernels[ContextPyopencl:0.0] PASSED           [ 66%]
tests/test_kernel.py::test_kernels_manual_add[ContextCpu] PASSED         [ 66%]
tests/test_kernel.py::test_kernels_manual_add[ContextCpu:auto] PASSED    [ 67%]
tests/test_kernel.py::test_kernels_manual_add[ContextCupy:0] PASSED      [ 67%]
tests/test_kernel.py::test_kernels_manual_add[ContextPyopencl:0.0] PASSED [ 67%]
tests/test_kernel.py::test_kernels_save_files PASSED                     [ 67%]
tests/test_kernel.py::test_kernels_save_load_with_classes PASSED         [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCpu] PASSED        [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCpu:auto] PASSED   [ 68%]
tests/test_linked_array.py::test_linked_arrays[ContextCupy:0] PASSED     [ 69%]
tests/test_linked_array.py::test_linked_arrays[ContextPyopencl:0.0] PASSED [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCpu] PASSED                [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCpu:auto] PASSED           [ 69%]
tests/test_nplike_arrays.py::test_type[ContextCupy:0] PASSED             [ 70%]
tests/test_nplike_arrays.py::test_type[ContextPyopencl:0.0] PASSED       [ 70%]
tests/test_nplike_arrays.py::test_ffts[ContextCpu] PASSED                [ 70%]
tests/test_nplike_arrays.py::test_ffts[ContextCpu:auto] PASSED           [ 71%]
tests/test_nplike_arrays.py::test_ffts[ContextCupy:0] PASSED             [ 71%]
tests/test_nplike_arrays.py::test_ffts[ContextPyopencl:0.0] PASSED       [ 71%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCpu] PASSED           [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCpu:auto] PASSED      [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextCupy:0] PASSED        [ 72%]
tests/test_nplike_arrays.py::test_slicing[C-ContextPyopencl:0.0] PASSED  [ 72%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCpu] PASSED           [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCpu:auto] PASSED      [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextCupy:0] PASSED        [ 73%]
tests/test_nplike_arrays.py::test_slicing[F-ContextPyopencl:0.0] PASSED  [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCpu] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCpu:auto] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextCupy:0] PASSED [ 74%]
tests/test_nplike_arrays.py::test_nplike_from_xoarray[ContextPyopencl:0.0] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCpu] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCpu:auto] PASSED [ 75%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextCupy:0] PASSED [ 76%]
tests/test_nplike_arrays.py::test_nparray_from_xoarray[ContextPyopencl:0.0] PASSED [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCpu] PASSED            [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCpu:auto] PASSED       [ 76%]
tests/test_ref.py::test_ref_to_static_type[ContextCupy:0] PASSED         [ 77%]
tests/test_ref.py::test_ref_to_static_type[ContextPyopencl:0.0] PASSED   [ 77%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCpu] PASSED           [ 77%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCpu:auto] PASSED      [ 78%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextCupy:0] PASSED        [ 78%]
tests/test_ref.py::test_ref_to_dynamic_type[ContextPyopencl:0.0] PASSED  [ 78%]
tests/test_ref.py::test_ref_nested PASSED                                [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCpu] PASSED                     [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCpu:auto] PASSED                [ 79%]
tests/test_ref.py::test_ref_c_api[ContextCupy:0] PASSED                  [ 79%]
tests/test_ref.py::test_ref_c_api[ContextPyopencl:0.0] PASSED            [ 80%]
tests/test_ref.py::test_unionref[ContextCpu] PASSED                      [ 80%]
tests/test_ref.py::test_unionref[ContextCpu:auto] PASSED                 [ 80%]
tests/test_ref.py::test_unionref[ContextCupy:0] PASSED                   [ 81%]
tests/test_ref.py::test_unionref[ContextPyopencl:0.0] PASSED             [ 81%]
tests/test_ref.py::test_has_refs PASSED                                  [ 81%]
tests/test_scalars.py::test_scalar_class PASSED                          [ 81%]
tests/test_scalars.py::test_scalar_buffer[ContextCpu] PASSED             [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextCpu:auto] PASSED        [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextCupy:0] PASSED          [ 82%]
tests/test_scalars.py::test_scalar_buffer[ContextPyopencl:0.0] PASSED    [ 83%]
tests/test_shared_memory.py::test_shared_memory PASSED                   [ 83%]
tests/test_strides.py::test_strides PASSED                               [ 83%]
tests/test_strides.py::test_iter_index PASSED                            [ 83%]
tests/test_string.py::test_string_class PASSED                           [ 84%]
tests/test_string.py::test_string_fixed PASSED                           [ 84%]
tests/test_string.py::test_string_init1 PASSED                           [ 84%]
tests/test_string.py::test_string_init2 PASSED                           [ 85%]
tests/test_string.py::test_string_init3[ContextCpu] PASSED               [ 85%]
tests/test_string.py::test_string_init3[ContextCpu:auto] PASSED          [ 85%]
tests/test_string.py::test_string_init3[ContextCupy:0] PASSED            [ 86%]
tests/test_string.py::test_string_init3[ContextPyopencl:0.0] PASSED      [ 86%]
tests/test_string.py::test_string_array[ContextCpu] PASSED               [ 86%]
tests/test_string.py::test_string_array[ContextCpu:auto] PASSED          [ 86%]
tests/test_string.py::test_string_array[ContextCupy:0] PASSED            [ 87%]
tests/test_string.py::test_string_array[ContextPyopencl:0.0] PASSED      [ 87%]
tests/test_struct.py::test_static_struct_def PASSED                      [ 87%]
tests/test_struct.py::test_static_struct[ContextCpu] PASSED              [ 88%]
tests/test_struct.py::test_static_struct[ContextCpu:auto] PASSED         [ 88%]
tests/test_struct.py::test_static_struct[ContextCupy:0] PASSED           [ 88%]
tests/test_struct.py::test_static_struct[ContextPyopencl:0.0] PASSED     [ 88%]
tests/test_struct.py::test_nested_struct[ContextCpu] PASSED              [ 89%]
tests/test_struct.py::test_nested_struct[ContextCpu:auto] PASSED         [ 89%]
tests/test_struct.py::test_nested_struct[ContextCupy:0] PASSED           [ 89%]
tests/test_struct.py::test_nested_struct[ContextPyopencl:0.0] PASSED     [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCpu] PASSED             [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCpu:auto] PASSED        [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextCupy:0] PASSED          [ 90%]
tests/test_struct.py::test_dynamic_struct[ContextPyopencl:0.0] PASSED    [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCpu] PASSED      [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCpu:auto] PASSED [ 91%]
tests/test_struct.py::test_dynamic_nested_struct[ContextCupy:0] PASSED   [ 92%]
tests/test_struct.py::test_dynamic_nested_struct[ContextPyopencl:0.0] PASSED [ 92%]
tests/test_struct.py::test_assign_full_struct[ContextCpu] PASSED         [ 92%]
tests/test_struct.py::test_assign_full_struct[ContextCpu:auto] PASSED    [ 93%]
tests/test_struct.py::test_assign_full_struct[ContextCupy:0] PASSED      [ 93%]
tests/test_struct.py::test_assign_full_struct[ContextPyopencl:0.0] PASSED [ 93%]
tests/test_struct.py::test_preinit PASSED                                [ 93%]
tests/test_struct.py::test_init_from_xobj PASSED                         [ 94%]
tests/test_struct.py::test_nestednested PASSED                           [ 94%]
tests/test_struct.py::test_copy_dynamic PASSED                           [ 94%]
tests/test_struct.py::test_kernel_namings PASSED                         [ 95%]
tests/test_struct.py::test_compile_kernels_only_if_needed PASSED         [ 95%]
tests/test_to_dict.py::test_to_dict PASSED                               [ 95%]
tests/test_to_dict.py::test_to_dict_array PASSED                         [ 95%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_none_offset_none PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_none_offset_given PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_given_offset_none PASSED [ 96%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_none_buff_given_offset_given PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_none_offset_none PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_none_offset_given PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_none_ok PASSED [ 97%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_none PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given_ok[packed] PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given_ok[aligned] PASSED [ 98%]
tests/test_typeutils.py::test_allocate_on_buffer_ctx_given_buff_given_offset_given PASSED [ 99%]
tests/test_unionref.py::test_classdef PASSED                             [ 99%]
tests/test_unionref.py::test_init PASSED                                 [ 99%]
tests/test_unionref.py::test_array PASSED                                [100%]

=============================== warnings summary ===============================
../../../../miniconda3/envs/cupy_v69/lib/python3.11/site-packages/cupyx/jit/_interface.py:173
  /home/ekatrali/miniconda3/envs/cupy_v69/lib/python3.11/site-packages/cupyx/jit/_interface.py:173: FutureWarning: cupyx.jit.rawkernel is experimental. The interface can change in the future.
    cupy._util.experimental('cupyx.jit.rawkernel')

../../../../miniconda3/envs/cupy_v69/lib/python3.11/site-packages/pyopencl/cache.py:517: 1 warning
tests/test_align.py: 1 warning
tests/test_array.py: 1 warning
tests/test_buffer.py: 10 warnings
tests/test_capi.py: 5 warnings
tests/test_common.py: 21 warnings
tests/test_context_opencl.py: 1 warning
tests/test_hybrid_class.py: 2 warnings
tests/test_kernel.py: 2 warnings
tests/test_linked_array.py: 1 warning
tests/test_nplike_arrays.py: 6 warnings
tests/test_ref.py: 4 warnings
tests/test_scalars.py: 1 warning
tests/test_shared_memory.py: 1 warning
tests/test_string.py: 2 warnings
tests/test_struct.py: 5 warnings
  /home/ekatrali/miniconda3/envs/cupy_v69/lib/python3.11/site-packages/pyopencl/cache.py:517: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.
    _create_built_program_from_source_cached(

xobjects/test_helpers.py:47
  /home/ekatrali/Documents/CERN/xsuite_fun/xobjects/xobjects/test_helpers.py:47: PytestUnknownMarkWarning: Unknown pytest.mark.context_dependent - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    return pytest.mark.context_dependent(test)

xobjects/test_helpers.py:85
  /home/ekatrali/Documents/CERN/xsuite_fun/xobjects/xobjects/test_helpers.py:85: PytestUnknownMarkWarning: Unknown pytest.mark.context_dependent - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    return pytest.mark.context_dependent

tests/test_capi.py: 40 warnings
tests/test_common.py: 42 warnings
tests/test_kernel.py: 7 warnings
tests/test_ref.py: 4 warnings
tests/test_struct.py: 2 warnings
  /home/ekatrali/miniconda3/envs/cupy_v69/lib/python3.11/site-packages/setuptools/config/expand.py:126: SetuptoolsWarning: File '/home/ekatrali/Documents/CERN/xsuite_fun/xobjects/README.md' cannot be found
    return '\n'.join(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
================ 340 passed, 3 skipped, 162 warnings in 59.41s =================
(cupy_v69) ekatrali@pcbe15600:~/Documents/CERN/xsuite_fun/xobjects$ 

When this is merged, I think it would also be a good idea to merge the installation instructions for cupy on ROCm in the xsuite docs:
xsuite/xsuite#754

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants