java icon indicating copy to clipboard operation
java copied to clipboard

How can I change the build config for the platform natives to mkl_aarch64

Open ashesfall opened this issue 3 years ago • 7 comments
trafficstars

System information

  • OS Platform and Distribution (e.g., Linux Ubuntu 16.04 x86_64): Aarch64 (Apple Sillicon)
  • TensorFlow installed from (source or binary): Source
  • TensorFlow version: 2.7
  • Java version (i.e., the output of java -version): 17
  • Java command line flags (e.g., GC parameters):
  • Installed from Maven Central?: No
  • Bazel version (if compiling from source): 3.7.2
  • GCC/Compiler version (if compiling from source): Apple clang version 13.0.0
  • CUDA/cuDNN version: N/A
  • GPU model and memory: Apple M1

When building core-api I can see from the logs it is targeting x86_64. I wish to target Aarch64.

./build.sh in core-api

ashesfall avatar Jan 16 '22 21:01 ashesfall

Do you want to cross-compile from an x86 machine or compile natively on an M1?

I've got a branch where native compilation works, but you need to run the bazel build as the superuser due to some library discovery issue I've not figured out. https://github.com/tensorflow/java/issues/394#issuecomment-981722302

I don't think we know how to cross-compile it from an x86 Mac.

Craigacp avatar Jan 17 '22 00:01 Craigacp

The goal was compiling directly on the M1.

And yes I eventually found your old discussion and have succeeded.

When will this become more official?

ashesfall avatar Jan 17 '22 02:01 ashesfall

When I or someone else figures out how to compile it without needing to run bazel as root we'll merge it into master. We won't be able to do builds for it due to a lack of appropriate build resources unless we manage to figure out cross compiling.

Craigacp avatar Jan 17 '22 03:01 Craigacp

Okay. You can't lose this ticket.

ashesfall avatar Jan 17 '22 14:01 ashesfall

Oh one last thing. Is integration with tensorflow-metal on the road map either?

ashesfall avatar Jan 17 '22 14:01 ashesfall

We don't currently expose TF_LoadPluggableDeviceLibrary which is the entry point for the pluggable device infrastructure. If we did, then I think you should be able to download the tensorflow-metal whl, unzip it and then load it with that function. As far as I can tell tensorflow-metal is closed source, so I don't think we'd be able to repackage it for Java.

Apple's docs do say "V1 TensorFlow Networks" are unsupported, but I'm not sure what they mean by that.

Craigacp avatar Jan 17 '22 16:01 Craigacp

Yea it can't be included, but it would be great if I could load the pluggable device. You can close the ticket.

ashesfall avatar Jan 17 '22 18:01 ashesfall