Skip to content

Instantly share code, notes, and snippets.

@matthewfeickert
Forked from Moelf/gpu_hist.md
Last active July 17, 2025 22:37
Show Gist options
  • Save matthewfeickert/aca1336bbf819def38a74042ab387d79 to your computer and use it in GitHub Desktop.
Save matthewfeickert/aca1336bbf819def38a74042ab387d79 to your computer and use it in GitHub Desktop.
GPU Histogram for Python via `juliacall`
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true
# pixi environments
.pixi
from juliacall import Main as jl
import numpy as np
jl.seval("using FHist, CUDA, KernelAbstractions")
data = jl.cu(np.random.rand(10**5))
print(data[:3])
# 3-element view(::CuArray{Float32, 1, CUDA.DeviceMemory}, 1:1:3) with eltype Float32:
# 0.6631426
# 0.6895298
# 0.6301632
print(jl.FHist.gpu_bincounts(data, sync=True, binedges=jl.range(0, 1, step=0.01)))
# 100-element CuArray{Float32, 1, CUDA.DeviceMemory}:
# 1027.0
# 960.0
# 982.0
# 1040.0
# 1045.0
# 1035.0

GPU Experiments on histograms with Jerry!

Setup

  1. Install Pixi
  2. Run
pixi run start

Code

setup.py

from juliacall import Main as jl
jl.seval("using Pkg")

jl.Pkg.add("CUDA")
jl.Pkg.add("KernelAbstractions")
jl.Pkg.add(jl.Pkg.PackageSpec(url="https://github.com/Moelf/FHist.jl/", rev="gpu_ext"))

experiment.py

from juliacall import Main as jl
import numpy as np

jl.seval("using FHist, CUDA, KernelAbstractions")

data = jl.cu(np.random.rand(10**5));

data[:3]
# 3-element view(::CuArray{Float32, 1, CUDA.DeviceMemory}, 1:1:3) with eltype Float32:
#  0.6631426
#  0.6895298
#  0.6301632

jl.FHist.gpu_bincounts(data, sync=True, binedges=jl.range(0, 1, step=0.01))
# 100-element CuArray{Float32, 1, CUDA.DeviceMemory}:
#  1027.0
#   960.0
#   982.0
#  1040.0
#  1045.0
#  1035.0
version: 6
environments:
default:
channels:
- url: https://conda.anaconda.org/conda-forge/
packages:
linux-64:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/juliaup-1.17.21-h8fae777_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pyjuliacall-0.9.26-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/pyjuliapkg-0.1.17-pyhd8ed1ab_1.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhd8ed1ab_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
packages:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
md5: d7c89558ba9fa0495403155b64376d81
license: None
size: 2562
timestamp: 1578324546067
- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
build_number: 16
sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
md5: 73aaf86a425cc6e73fcf236a5a46396d
depends:
- _libgcc_mutex 0.1 conda_forge
- libgomp >=7.5.0
constrains:
- openmp_impl 9999
license: BSD-3-Clause
license_family: BSD
size: 23621
timestamp: 1650670423406
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda
sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d
md5: 62ee74e96c5ebb0af99386de58cf9553
depends:
- __glibc >=2.17,<3.0.a0
- libgcc-ng >=12
license: bzip2-1.0.6
license_family: BSD
size: 252783
timestamp: 1720974456583
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.7.14-hbd8a1cb_0.conda
sha256: 29defbd83c7829788358678ec996adeee252fa4d4274b7cd386c1ed73d2b201e
md5: d16c90324aef024877d8713c0b7fea5b
depends:
- __unix
license: ISC
size: 155658
timestamp: 1752482350666
- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.18.0-pyhd8ed1ab_0.conda
sha256: de7b6d4c4f865609ae88db6fa03c8b7544c2452a1aa5451eb7700aad16824570
md5: 4547b39256e296bb758166893e909a7c
depends:
- python >=3.9
license: Unlicense
size: 17887
timestamp: 1741969612334
- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
md5: 8b189310083baabfb622af68fd9d3ae3
depends:
- __glibc >=2.17,<3.0.a0
- libgcc-ng >=12
- libstdcxx-ng >=12
license: MIT
license_family: MIT
size: 12129203
timestamp: 1720853576813
- conda: https://conda.anaconda.org/conda-forge/linux-64/juliaup-1.17.21-h8fae777_0.conda
sha256: 0b4d117c00a42eafa8ac6d3977579e9ccdb453ecbd9d2bd054dfa5682d16d0e0
md5: 938dcf8143743eecf8be25bf2211c443
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
constrains:
- __glibc >=2.17
license: MIT
license_family: MIT
size: 3115136
timestamp: 1748076090661
- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda
sha256: 1a620f27d79217c1295049ba214c2f80372062fd251b569e9873d4a953d27554
md5: 0be7c6e070c19105f966d3758448d018
depends:
- __glibc >=2.17,<3.0.a0
constrains:
- binutils_impl_linux-64 2.44
license: GPL-3.0-only
license_family: GPL
size: 676044
timestamp: 1752032747103
- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda
build_number: 32
sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338
md5: 2af9f3d5c2e39f417ce040f5a35c40c6
depends:
- libopenblas >=0.3.30,<0.3.31.0a0
- libopenblas >=0.3.30,<1.0a0
constrains:
- libcblas 3.9.0 32*_openblas
- mkl <2025
- liblapacke 3.9.0 32*_openblas
- blas 2.132 openblas
- liblapack 3.9.0 32*_openblas
license: BSD-3-Clause
license_family: BSD
size: 17330
timestamp: 1750388798074
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda
build_number: 32
sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9
md5: 3d3f9355e52f269cd8bc2c440d8a5263
depends:
- libblas 3.9.0 32_h59b9bed_openblas
constrains:
- blas 2.132 openblas
- liblapack 3.9.0 32*_openblas
- liblapacke 3.9.0 32*_openblas
license: BSD-3-Clause
license_family: BSD
size: 17308
timestamp: 1750388809353
- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda
sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2
md5: 4211416ecba1866fab0c6470986c22d6
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
constrains:
- expat 2.7.1.*
license: MIT
license_family: MIT
size: 74811
timestamp: 1752719572741
- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab
md5: ede4673863426c0883c0063d853bbd85
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: MIT
license_family: MIT
size: 57433
timestamp: 1743434498161
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda
sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3
md5: 9e60c55e725c20d23125a5f0dd69af5d
depends:
- __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
constrains:
- libgcc-ng ==15.1.0=*_3
- libgomp 15.1.0 h767d61c_3
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 824921
timestamp: 1750808216066
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda
sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996
md5: e66f2b8ad787e7beb0f846e4bd7e8493
depends:
- libgcc 15.1.0 h767d61c_3
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 29033
timestamp: 1750808224854
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda
sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183
md5: bfbca721fd33188ef923dfe9ba172f29
depends:
- libgfortran5 15.1.0 hcea5267_3
constrains:
- libgfortran-ng ==15.1.0=*_3
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 29057
timestamp: 1750808257258
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda
sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a
md5: 530566b68c3b8ce7eec4cd047eae19fe
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=15.1.0
constrains:
- libgfortran 15.1.0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 1565627
timestamp: 1750808236464
- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda
sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1
md5: 3cd1a7238a0dd3d0860fdefc496cc854
depends:
- __glibc >=2.17,<3.0.a0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 447068
timestamp: 1750808138400
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda
build_number: 32
sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2
md5: 6c3f04ccb6c578138e9f9899da0bd714
depends:
- libblas 3.9.0 32_h59b9bed_openblas
constrains:
- libcblas 3.9.0 32*_openblas
- blas 2.132 openblas
- liblapacke 3.9.0 32*_openblas
license: BSD-3-Clause
license_family: BSD
size: 17316
timestamp: 1750388820745
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8
md5: 1a580f7796c7bf6393fddb8bbbde58dc
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
constrains:
- xz 5.8.1.*
license: 0BSD
size: 112894
timestamp: 1749230047870
- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee
md5: c7e925f37e3b40d893459e625f6a53f1
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: BSD-2-Clause
license_family: BSD
size: 91183
timestamp: 1748393666725
- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda
sha256: 225f4cfdb06b3b73f870ad86f00f49a9ca0a8a2d2afe59440521fafe2b6c23d9
md5: 323dc8f259224d13078aaf7ce96c3efe
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- libgfortran
- libgfortran5 >=14.3.0
constrains:
- openblas >=0.3.30,<0.3.31.0a0
license: BSD-3-Clause
license_family: BSD
size: 5916819
timestamp: 1750379877844
- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-hee844dc_2.conda
sha256: 62040da9b55f409cd43697eb7391381ffede90b2ea53634a94876c6c867dcd73
md5: be96b9fdd7b579159df77ece9bb80e48
depends:
- __glibc >=2.17,<3.0.a0
- icu >=75.1,<76.0a0
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: Unlicense
size: 935828
timestamp: 1752072043
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda
sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241
md5: 6d11a5edae89fe413c0569f16d308f5a
depends:
- __glibc >=2.17,<3.0.a0
- libgcc 15.1.0 h767d61c_3
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 3896407
timestamp: 1750808251302
- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda
sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b
md5: 57541755b5a51691955012b8e197c06c
depends:
- libstdcxx 15.1.0 h8f9b012_3
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
size: 29093
timestamp: 1750808292700
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda
sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18
md5: 40b61aab5c7ba9ff276c41cfffe6b80b
depends:
- libgcc-ng >=12
license: BSD-3-Clause
license_family: BSD
size: 33601
timestamp: 1680112270483
- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4
md5: edb0dca6bc32e4f4789199455a1dbeb8
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
constrains:
- zlib 1.3.1 *_2
license: Zlib
license_family: Other
size: 60963
timestamp: 1727963148474
- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586
md5: 47e340acb35de30501a76c7c799c41d7
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
license: X11 AND BSD-3-Clause
size: 891641
timestamp: 1738195959188
- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py313hf6604e3_1.conda
sha256: 634de365f5b2407defc11d3ffb4089316c8ec8d8343e83004a43469dfc7cd761
md5: 392b48cb8239fee6d03c6c38a74b0cf4
depends:
- python
- __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
- python_abi 3.13.* *_cp313
- liblapack >=3.9.0,<4.0a0
- libcblas >=3.9.0,<4.0a0
- libblas >=3.9.0,<4.0a0
constrains:
- numpy-base <0a0
license: BSD-3-Clause
license_family: BSD
size: 8888681
timestamp: 1752612967474
- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda
sha256: 942347492164190559e995930adcdf84e2fea05307ec8012c02a505f5be87462
md5: c87df2ab1448ba69169652ab9547082d
depends:
- __glibc >=2.17,<3.0.a0
- ca-certificates
- libgcc >=13
license: Apache-2.0
license_family: Apache
size: 3131002
timestamp: 1751390382076
- conda: https://conda.anaconda.org/conda-forge/noarch/pyjuliacall-0.9.26-pyhd8ed1ab_0.conda
sha256: 23af65e6fd62d3a72ee3f6cdda012ff5fa13bb4ffc0d1081f74fc9c126769b1e
md5: 4a59be1ec7771841ead3ba30cc82dab8
depends:
- pyjuliapkg >=0.1.17,<0.2.dev0
- python >=3.8
license: MIT
license_family: MIT
size: 17670
timestamp: 1752611888359
- conda: https://conda.anaconda.org/conda-forge/noarch/pyjuliapkg-0.1.17-pyhd8ed1ab_1.conda
sha256: 0386c2030f7cc594838f90b65c477948e8cd3fb2e95419b59b792943cba81222
md5: 58cc5228a594d536878547afecbf59a4
depends:
- filelock >=3.16,<4.dev0
- python >=3.8
- semver >=3.0,<4.dev0
license: MIT
license_family: MIT
size: 21545
timestamp: 1748276504504
- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda
build_number: 102
sha256: c2cdcc98ea3cbf78240624e4077e164dc9d5588eefb044b4097c3df54d24d504
md5: 89e07d92cf50743886f41638d58c4328
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-64 >=2.36.1
- libexpat >=2.7.0,<3.0a0
- libffi >=3.4.6,<3.5.0a0
- libgcc >=13
- liblzma >=5.8.1,<6.0a0
- libmpdec >=4.0.0,<5.0a0
- libsqlite >=3.50.1,<4.0a0
- libuuid >=2.38.1,<3.0a0
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- openssl >=3.5.0,<4.0a0
- python_abi 3.13.* *_cp313
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
license: Python-2.0
size: 33273132
timestamp: 1750064035176
python_site_packages_path: lib/python3.13/site-packages
- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda
build_number: 7
sha256: 0595134584589064f56e67d3de1d8fcbb673a972946bce25fb593fb092fdcd97
md5: e84b44e6300f1703cb25d29120c5b1d8
constrains:
- python 3.13.* *_cp313
license: BSD-3-Clause
license_family: BSD
size: 6988
timestamp: 1745258852285
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c
md5: 283b96675859b20a825f8fa30f311446
depends:
- libgcc >=13
- ncurses >=6.5,<7.0a0
license: GPL-3.0-only
license_family: GPL
size: 282480
timestamp: 1740379431762
- conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhd8ed1ab_0.conda
sha256: 7d3f5531269e15cb533b60009aa2a950f9844acf31f38c1b55c8000dbb316676
md5: 982aa48accc06494cbd2b51af69e17c7
depends:
- python >=3.9
license: BSD-3-Clause
license_family: BSD
size: 21110
timestamp: 1737841666447
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1
md5: a0116df4f4ed05c303811a837d5b39d8
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- libzlib >=1.3.1,<2.0a0
license: TCL
license_family: BSD
size: 3285204
timestamp: 1748387766691
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
md5: 4222072737ccff51314b5ece9c7d6f5a
license: LicenseRef-Public-Domain
size: 122968
timestamp: 1742727099393
[workspace]
channels = ["conda-forge"]
name = "jerry-gpu-hists"
platforms = ["linux-64"]
version = "0.1.0"
[tasks.setup]
description = "Get the Julia dependencies setup"
cmd = "python setup.py"
[tasks.experiment]
description = "Run the GPU experiment"
cmd = "python experiment.py"
[tasks.start]
depends-on = ["setup", "experiment"]
[dependencies]
juliaup = ">=1.17.21,<2"
pyjuliacall = ">=0.9.26,<0.10"
numpy = ">=2.3.1,<3"
from juliacall import Main as jl
jl.seval("using Pkg")
jl.Pkg.add("CUDA")
jl.Pkg.add("KernelAbstractions")
jl.Pkg.add(jl.Pkg.PackageSpec(url="https://github.com/Moelf/FHist.jl/", rev="gpu_ext"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment