2022-09-22 12:26:48 -07:00
|
|
|
# Copyright 2018 The JAX Authors.
|
2018-11-19 13:29:47 -08:00
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2022-08-01 16:00:16 -07:00
|
|
|
from distutils import spawn
|
|
|
|
import subprocess
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
2018-12-11 15:45:56 -08:00
|
|
|
from setuptools import setup, find_packages
|
2019-02-13 20:02:14 -08:00
|
|
|
|
2023-06-07 15:25:57 -07:00
|
|
|
_current_jaxlib_version = '0.4.12'
|
2022-02-10 11:29:06 -08:00
|
|
|
# The following should be updated with each new jaxlib release.
|
2023-06-08 16:53:22 -07:00
|
|
|
_latest_jaxlib_version_on_pypi = '0.4.12'
|
2022-10-27 14:53:19 +00:00
|
|
|
_available_cuda11_cudnn_versions = ['82', '86']
|
|
|
|
_default_cuda11_cudnn_version = '86'
|
|
|
|
_default_cuda12_cudnn_version = '88'
|
2023-06-07 15:25:57 -07:00
|
|
|
_libtpu_version = '0.1.dev20230608'
|
2019-08-04 12:12:53 -04:00
|
|
|
|
2021-03-17 10:46:38 -07:00
|
|
|
_dct = {}
|
2023-01-05 09:41:18 -08:00
|
|
|
with open('jax/version.py', encoding='utf-8') as f:
|
2021-03-17 10:46:38 -07:00
|
|
|
exec(f.read(), _dct)
|
|
|
|
__version__ = _dct['__version__']
|
|
|
|
_minimum_jaxlib_version = _dct['_minimum_jaxlib_version']
|
2018-11-18 15:17:32 -08:00
|
|
|
|
2023-01-05 09:41:18 -08:00
|
|
|
with open('README.md', encoding='utf-8') as f:
|
2022-07-13 14:03:32 -07:00
|
|
|
_long_description = f.read()
|
|
|
|
|
2022-08-01 16:00:16 -07:00
|
|
|
if 'PROTOC' in os.environ and os.path.exists(os.environ['PROTOC']):
|
|
|
|
protoc = os.environ['PROTOC']
|
|
|
|
else:
|
|
|
|
protoc = spawn.find_executable('protoc')
|
|
|
|
|
|
|
|
def generate_proto(source):
|
|
|
|
if not protoc or not os.path.exists(source):
|
|
|
|
return
|
|
|
|
protoc_command = [protoc, '-I.', '--python_out=.', source]
|
|
|
|
if subprocess.call(protoc_command) != 0:
|
|
|
|
sys.exit(-1)
|
|
|
|
|
|
|
|
generate_proto("jax/experimental/australis/executable.proto")
|
|
|
|
generate_proto("jax/experimental/australis/petri.proto")
|
|
|
|
|
2018-11-18 15:17:32 -08:00
|
|
|
setup(
|
|
|
|
name='jax',
|
2019-02-13 20:02:14 -08:00
|
|
|
version=__version__,
|
2018-11-18 15:17:32 -08:00
|
|
|
description='Differentiate, compile, and transform Numpy code.',
|
2022-07-13 14:03:32 -07:00
|
|
|
long_description=_long_description,
|
|
|
|
long_description_content_type='text/markdown',
|
2018-11-18 15:17:32 -08:00
|
|
|
author='JAX team',
|
2018-12-06 21:35:03 -05:00
|
|
|
author_email='jax-dev@google.com',
|
2023-02-16 15:29:12 -08:00
|
|
|
packages=find_packages(exclude=["examples", "jax/src/internal_test_util"]),
|
2022-09-27 12:55:20 -07:00
|
|
|
package_data={'jax': ['py.typed', "*.pyi", "**/*.pyi"]},
|
2023-05-02 15:32:57 -07:00
|
|
|
python_requires='>=3.8',
|
2019-01-15 20:14:19 -05:00
|
|
|
install_requires=[
|
2023-05-04 10:40:44 -07:00
|
|
|
'ml_dtypes>=0.1.0',
|
2023-02-06 11:32:28 -05:00
|
|
|
'numpy>=1.21',
|
2020-12-30 11:29:34 +00:00
|
|
|
'opt_einsum',
|
2023-02-06 11:32:28 -05:00
|
|
|
'scipy>=1.7',
|
2023-05-31 18:28:09 +00:00
|
|
|
# Required by xla_bridge.discover_pjrt_plugins for forwards compat with
|
|
|
|
# Python versions < 3.10. Can be dropped when 3.10 is the minimum
|
|
|
|
# required Python version.
|
|
|
|
'importlib_metadata>=4.6;python_version<"3.10"',
|
2019-01-15 20:14:19 -05:00
|
|
|
],
|
2021-03-16 11:40:46 -07:00
|
|
|
extras_require={
|
2021-03-17 10:46:38 -07:00
|
|
|
# Minimum jaxlib version; used in testing.
|
|
|
|
'minimum-jaxlib': [f'jaxlib=={_minimum_jaxlib_version}'],
|
|
|
|
|
2021-03-16 11:40:46 -07:00
|
|
|
# CPU-only jaxlib can be installed via:
|
|
|
|
# $ pip install jax[cpu]
|
2021-07-02 09:49:49 -07:00
|
|
|
'cpu': [f'jaxlib=={_current_jaxlib_version}'],
|
2021-03-16 11:40:46 -07:00
|
|
|
|
2022-02-10 11:29:06 -08:00
|
|
|
# Used only for CI builds that install JAX from github HEAD.
|
2022-02-10 11:58:30 -08:00
|
|
|
'ci': [f'jaxlib=={_latest_jaxlib_version_on_pypi}'],
|
2022-02-10 11:29:06 -08:00
|
|
|
|
2021-06-23 02:18:53 +00:00
|
|
|
# Cloud TPU VM jaxlib can be installed via:
|
2022-09-28 13:33:52 +00:00
|
|
|
# $ pip install jax[tpu] -f https://storage.googleapis.com/jax-releases/libtpu_releases.html
|
2021-06-23 02:18:53 +00:00
|
|
|
'tpu': [f'jaxlib=={_current_jaxlib_version}',
|
2023-05-31 18:28:09 +00:00
|
|
|
f'libtpu-nightly=={_libtpu_version}'],
|
2021-06-23 02:18:53 +00:00
|
|
|
|
2022-08-08 12:57:16 -07:00
|
|
|
# $ pip install jax[australis]
|
|
|
|
'australis': ['protobuf>=3.13,<4'],
|
|
|
|
|
2023-03-27 09:50:56 -07:00
|
|
|
# CUDA installations require adding the JAX CUDA releases URL, e.g.,
|
2021-10-18 19:55:51 -07:00
|
|
|
# Cuda installation defaulting to a CUDA and Cudnn version defined above.
|
2022-10-25 10:39:39 -07:00
|
|
|
# $ pip install jax[cuda] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
|
2022-10-27 14:53:19 +00:00
|
|
|
'cuda': [f"jaxlib=={_current_jaxlib_version}+cuda11.cudnn{_default_cuda11_cudnn_version}"],
|
|
|
|
|
|
|
|
'cuda11_pip': [
|
|
|
|
f"jaxlib=={_current_jaxlib_version}+cuda11.cudnn{_default_cuda11_cudnn_version}",
|
2023-03-28 21:55:32 -04:00
|
|
|
"nvidia-cublas-cu11>=11.11",
|
2023-04-04 12:54:55 -07:00
|
|
|
"nvidia-cuda-cupti-cu11>=11.8",
|
2023-03-28 21:55:32 -04:00
|
|
|
"nvidia-cuda-nvcc-cu11>=11.8",
|
|
|
|
"nvidia-cuda-runtime-cu11>=11.8",
|
2023-05-25 14:46:39 -04:00
|
|
|
"nvidia-cudnn-cu11>=8.8",
|
2023-03-28 21:55:32 -04:00
|
|
|
"nvidia-cufft-cu11>=10.9",
|
|
|
|
"nvidia-cusolver-cu11>=11.4",
|
|
|
|
"nvidia-cusparse-cu11>=11.7",
|
2022-10-27 14:53:19 +00:00
|
|
|
],
|
|
|
|
|
|
|
|
'cuda12_pip': [
|
|
|
|
f"jaxlib=={_current_jaxlib_version}+cuda12.cudnn{_default_cuda12_cudnn_version}",
|
|
|
|
"nvidia-cublas-cu12",
|
2023-04-04 12:54:55 -07:00
|
|
|
"nvidia-cuda-cupti-cu12",
|
2022-10-27 14:53:19 +00:00
|
|
|
"nvidia-cuda-nvcc-cu12",
|
|
|
|
"nvidia-cuda-runtime-cu12",
|
2023-05-26 10:04:34 -04:00
|
|
|
"nvidia-cudnn-cu12>=8.9",
|
2022-10-27 14:53:19 +00:00
|
|
|
"nvidia-cufft-cu12",
|
|
|
|
"nvidia-cusolver-cu12",
|
|
|
|
"nvidia-cusparse-cu12",
|
|
|
|
],
|
|
|
|
|
|
|
|
# Target that does not depend on the CUDA pip wheels, for those who want
|
|
|
|
# to use a preinstalled CUDA.
|
|
|
|
'cuda11_local': [
|
|
|
|
f"jaxlib=={_current_jaxlib_version}+cuda11.cudnn{_default_cuda11_cudnn_version}",
|
|
|
|
],
|
|
|
|
'cuda12_local': [
|
|
|
|
f"jaxlib=={_current_jaxlib_version}+cuda12.cudnn{_default_cuda12_cudnn_version}",
|
|
|
|
],
|
2021-10-18 19:55:51 -07:00
|
|
|
|
|
|
|
# CUDA installations require adding jax releases URL; e.g.
|
2022-10-25 10:39:39 -07:00
|
|
|
# $ pip install jax[cuda11_cudnn82] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
|
2022-12-07 16:01:43 -08:00
|
|
|
# $ pip install jax[cuda11_cudnn86] -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
|
2022-10-27 14:53:19 +00:00
|
|
|
**{f'cuda11_cudnn{cudnn_version}': f"jaxlib=={_current_jaxlib_version}+cuda11.cudnn{cudnn_version}"
|
|
|
|
for cudnn_version in _available_cuda11_cudnn_versions}
|
2021-03-16 11:40:46 -07:00
|
|
|
},
|
2018-11-18 15:17:32 -08:00
|
|
|
url='https://github.com/google/jax',
|
|
|
|
license='Apache-2.0',
|
2020-12-30 11:29:34 +00:00
|
|
|
classifiers=[
|
2020-12-30 13:20:13 -08:00
|
|
|
"Programming Language :: Python :: 3.8",
|
2021-07-09 12:42:39 -07:00
|
|
|
"Programming Language :: Python :: 3.9",
|
2022-05-07 13:38:55 +01:00
|
|
|
"Programming Language :: Python :: 3.10",
|
2022-10-14 14:56:07 +00:00
|
|
|
"Programming Language :: Python :: 3.11",
|
2021-06-10 16:06:11 +02:00
|
|
|
],
|
|
|
|
zip_safe=False,
|
2018-11-18 15:17:32 -08:00
|
|
|
)
|