Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arm64 support as documented here: … #5360

Closed
wants to merge 177 commits into from
Closed

Conversation

ArielleA
Copy link
Contributor

http://zhiyisun.github.io/2017/02/15/Running-Google-Machine-Learning-Library-Tensorflow-On-ARM-64-bit-Platform.html

These instructions are a little out of date so I have re-biased the patch.
Not included in this patch are changes to the iOS and Android rulebases.

@googlebot
Copy link

Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

📝 Please visit https://cla.developers.google.com/ to sign.

Once you've signed (or fixed any issues), please reply here (e.g. I signed it!) and we'll verify it.


What to do if you already signed the CLA

Individual signers
Corporate signers

@ArielleA
Copy link
Contributor Author

I signed it

@googlebot
Copy link

CLAs look good, thanks!

@laszlocsomor
Copy link
Contributor

What's the motivation of this PR? Is there a corresponding GitHub issue?

@laszlocsomor laszlocsomor self-assigned this Jun 11, 2018
@ArielleA
Copy link
Contributor Author

My main workstation is a Samsung Chromebook Plus running Debian Stretch, which is arm64 architecture. The patch is allow me to build my project locally using Bazel.
Also as Tensorflow is quite widely used, adding support for Arm64 would be useful especially as SOCs with accelerators are becoming available.
There is a related issue is bazel-contrib/rules_go#1506

@laszlocsomor
Copy link
Contributor

@ulfjack: ping

@futurejones
Copy link

I have been testing Bazel on aarch64 systems with these changes.
https://github.com/futurejones/bazel/tree/futurejones-aarch64-patch
(Obtained from the same source as above.)
http://zhiyisun.github.io/2017/02/15/Running-Google-Machine-Learning-Library-Tensorflow-On-ARM-64-bit-Platform.html
I can confirm successful builds and use of Bazel on a variety of arm64/aarch64 machines.

@@ -4,6 +4,18 @@ package(
default_visibility = ["//visibility:public"],
)

filegroup(
Copy link
Contributor

Choose a reason for hiding this comment

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

What is this needed for?

@ArielleA
Copy link
Contributor Author

Sorry, that was my error, those lines should not have been there.

@ulfjack
Copy link
Contributor

ulfjack commented Jun 15, 2018

@dslomov

@@ -107,6 +112,7 @@ platform(
":x86_64",
":ppc",
":arm",
":aarch64",
Copy link
Contributor

Choose a reason for hiding this comment

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

indentation is slightly wrong

@@ -128,6 +134,7 @@ platform(
":x86_64",
":ppc",
":arm",
":aarch64",
Copy link
Contributor

Choose a reason for hiding this comment

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

indentation is slightly wrong

@@ -95,6 +100,7 @@ platform(
":x86_64",
":ppc",
":arm",
":aarch64",
Copy link
Contributor

Choose a reason for hiding this comment

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

indentation is slightly wrong

@@ -116,6 +122,7 @@ platform(
":x86_64",
":ppc",
":arm",
":aarch64",
Copy link
Contributor

Choose a reason for hiding this comment

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

indentation is slightly wrong

@ArielleA
Copy link
Contributor Author

Indentation fixed thankyou :)

laszlocsomor and others added 3 commits June 19, 2018 22:05
Fixes bazelbuild#5272

Change-Id: Ia49c084f1fe036ff0e5b18fea096f31642cf8b5b

Closes bazelbuild#5280.

Change-Id: Ia49c084f1fe036ff0e5b18fea096f31642cf8b5b
PiperOrigin-RevId: 200005785
- use an internal event wrapper to unify handling
- rewrite the test to be more explicit about event names and ordering

This a part split out of unknown commit.

PiperOrigin-RevId: 200015904
Instead, add some simple APIs to ExecutorBuilder and inline all the previous
subclasses into their corresponding modules. This removes a bunch of
boilerplate.

PiperOrigin-RevId: 200017162
andyscott and others added 24 commits June 19, 2018 22:05
This adds a flag to the installer to skip uncompressing the base image during installation.

Uncompressing the base image during installation can be problematic:
1. If you configure the startup option `output_user_root` you'll wind up extracting the image twice. Once during installation and a second time during the first bazel invocation in your project.
2. If you're bootstrapping Bazel in a controlled environment (in my case via Nix) then you can get permission errors if Bazel defaults to extracting to the home directory. There's no way to skip this extraction and for the time being I have resorted to seting `HOME` to a throw away directory during install.

Closes bazelbuild#5303.

PiperOrigin-RevId: 201004235
This functionality will be useful for node restarting. More than one
parent node may request the restart of a shared child node, and this
should not fail.

Instead, the returned MarkedDirtyResult indicates whether the dirtying
was redundant, and the calling code can assert on that.

RELNOTES: None.
PiperOrigin-RevId: 201005663
Change-Id: I3655868d34dd98f5cde084a61995dfae8e4b94c0

Closes bazelbuild#5374.

Change-Id: I3655868d34dd98f5cde084a61995dfae8e4b94c0
PiperOrigin-RevId: 201032126
…ache.

ConfiguredRuleClassProvider can specify a predicate which accepts an
OptionsDiff and the new BuildOptions in order to make a decision on whether
the given diff requires the analysis cache to be dropped.

This predicate is only called if all of the following hold:
* there was an old configuration collection (if not, the cache is not
  dropped because there wasn't one yet)
* the old configuration collection is not exactly equal to the new
  configuration collection (if it is, the cache is not dropped because
  it definitely hasn't changed)
* the old configuration collection has the same number of configurations
  as the new collection (if not, the cache is always dropped because
  experimental_multi_cpu has changed, definitely not a flag which should
  cause old analysis cache to stick around!)

If all of these hold, the old target configurations are paired up with
the new target configurations by index in the configuration collection,
and each pair is diffed. The predicate is called with each diff and the
corresponding new configuration's build options. If any of these
invocations returns true, the cache is dropped. Otherwise, the cache is
kept for the next build.

No implementation of this predicate is actually supplied for this
change, so the old behavior (always drop the cache if the configuration
changes at all) holds.

RELNOTES: None.
PiperOrigin-RevId: 201050049
*** Reason for rollback ***

See linked bug.

*** Original change description ***

C++: Refactors PyWrapCc to make it easier to migrate to Skylark

Rolling forward bazelbuild@6c87715. When I first tried to roll forward this CL I missed one place where PyCcLinkParamsProvider.TO_LINK_PARAMS should have been called.

The target //production/midas/config:client_config_pb builds fine now.

RELNOTES:none
PiperOrigin-RevId: 201070354
The memory savings from this flag are not worth the complexity, and it interferes with action restarting.

RELNOTES: Remove support for --discard_actions_after_execution.
PiperOrigin-RevId: 201077905
…xception. We can construct the exception message eagerly, since it is going to be thrown with very high likelihood in any case.

The complex objects inside it made it hard to serialize.

PiperOrigin-RevId: 201130522
…ation

as this isn't supported by `((... == 0))` below.

See bazelbuild#5413

PiperOrigin-RevId: 201135798
…ionConfig that are needed for FeatureConfiguration creation

In the future CcToolchainFeatures will not be created from a CToolchain but from a CrosstoolInfo provider that will encapsule all relevant information from the CROSSTOOL. Feature and ActionConfig classes need to carry all the information that is currently obtained from CToolchain.

Work towards issue bazelbuild#5380

RELNOTES: None.
PiperOrigin-RevId: 201147336
Rolls forward bazelbuild@c720152.

This CL includes testing to make sure that linker parameters coming from every possible provider in Python rules is propagated.

RELNOTES:none
PiperOrigin-RevId: 201160720
For paths passed to Bazel on the command line, the shell expands these variables, but for hardcoded defaults, we must make the library call ourselves.

We do not add similar support in Posix systems, where it is less common to rely on standard path-related variables.

Prerequisit for issue bazelbuild#4502.

RELNOTES: None.
PiperOrigin-RevId: 201183214
…'t expect equality, not because there's no implementation.

PiperOrigin-RevId: 201191262
… tag lambdas as Serializable.

PiperOrigin-RevId: 201191461
…t be

checked for restricted_to and compatible_with constraints, because they are part
of the execution, not providing new dependencies.

PiperOrigin-RevId: 201196891
…mbdas. Get rid of a useless tag, because the Function being tagged is a concrete class, so won't be serializable. Will deal with it in a follow-up. Implement equality for BazelInfo.

PiperOrigin-RevId: 201199255
…ion, and have DynamicCodec add to it. It's very useful to have this trail available when debugging or whitelisting.

PiperOrigin-RevId: 201205884
Turns out the event handler (BlazeCommandEventHandler) prints almost all
event types, and I don't believe there's a way to tune it.

We certainly don't want these messages printed to the console unless
we're debugging the debugger, so turn them off by default.

PiperOrigin-RevId: 201211355
…ER_TARGET

but the "exec_compatible_with" attribute is present.

PiperOrigin-RevId: 201219412
When set, any action parameter files are written locally upon action execution, even when the action is executed remotely. This is mainly useful for debugging.

This option is effectively implied by --subcommands and --verbose_failures, as it is likely that the user is debugging actions when using these flags.

RELNOTES: Add --materialize_param_files flag to write parameter files even when actions are executed remotely.
PiperOrigin-RevId: 201225566
@googlebot
Copy link

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and have the pull request author add another comment and the bot will run again. If the bot doesn't comment, it means it doesn't think anything has changed.

@bazel-io bazel-io closed this in 886d01c Jun 20, 2018
werkt pushed a commit to werkt/bazel that referenced this pull request Aug 2, 2018
Based on work of Sun Zhiyi <[email protected]>.

Closes bazelbuild#5360.

PiperOrigin-RevId: 201339882
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.