نمای کلی هرمتیک CUDA، CUDNN، NCCL و NVSHMEM

نمای کلی و مثال های استفاده در پروژه rules_ml_toolchain آورده شده است.

منسوخ شده: استفاده غیرهرماتیک CUDA/CUDNN

اگرچه استفاده غیرهرمتیک CUDA/CUDNN منسوخ شده است، ممکن است برای برخی آزمایش‌ها که در حال حاضر به طور رسمی پشتیبانی نمی‌شوند (به عنوان مثال، ساختن چرخ‌ها در ویندوز با CUDA) استفاده شود.

در اینجا مراحل استفاده از CUDA غیر هرمتیک نصب شده به صورت محلی در پروژه های Google ML آمده است:

  1. تماس‌های قوانین مخزن هرمتیک CUDA را از فایل WORKSPACE پروژه وابسته به XLA حذف کنید.

  2. تماس‌ها را به قوانین مخزن CUDA غیرهرمتیک در پایین فایل WORKSPACE اضافه کنید.

    برای XLA و JAX:

    load("@xla//third_party/gpus:cuda_configure.bzl", "cuda_configure")
    cuda_configure(name = "local_config_cuda")
    load("@xla//third_party/nccl:nccl_configure.bzl", "nccl_configure")
    nccl_configure(name = "local_config_nccl")
    

    برای تنسورفلو:

    load("@local_xla//third_party/gpus:cuda_configure.bzl", "cuda_configure")
    cuda_configure(name = "local_config_cuda")
    load("@local_xla//third_party/nccl:nccl_configure.bzl", "nccl_configure")
    nccl_configure(name = "local_config_nccl")
    
  3. متغیرهای محیطی زیر را مستقیماً در پوسته خود یا در فایل .bazelrc مطابق شکل زیر تنظیم کنید:

    build:cuda --action_env=TF_CUDA_VERSION=<locally installed cuda version>
    build:cuda --action_env=TF_CUDNN_VERSION=<locally installed cudnn version>
    build:cuda --action_env=TF_CUDA_COMPUTE_CAPABILITIES=<CUDA compute capabilities>
    build:cuda --action_env=LD_LIBRARY_PATH=<CUDA/CUDNN libraries folder locations divided by : sign>
    build:cuda --action_env=CUDA_TOOLKIT_PATH=<preinstalled CUDA folder location>
    build:cuda --action_env=TF_CUDA_PATHS=<preinstalled CUDA/CUDNN folder locations divided by , sign>
    build:cuda --action_env=NCCL_INSTALL_PATH=<preinstalled NCCL library folder location>
    

    توجه داشته باشید که TF_CUDA_VERSION و TF_CUDNN_VERSION باید فقط از نسخه های اصلی و فرعی تشکیل شوند (مثلاً 12.3 برای CUDA و 9.1 برای CUDNN).

  4. اکنون می توانید دستور bazel را برای استفاده از CUDA و CUDNN نصب شده محلی اجرا کنید.

    برای XLA، هیچ تغییری در گزینه های فرمان لازم نیست.

    برای JAX، از پرچم --override_repository=tsl=<tsl_path> در گزینه های فرمان Bazel استفاده کنید.

    برای Tensorflow، از پرچم --override_repository=local_tsl=<tsl_path> در گزینه های فرمان Bazel استفاده کنید.