diff --git a/lib/BUILD b/lib/BUILD index 9be39dea9..7547cda65 100644 --- a/lib/BUILD +++ b/lib/BUILD @@ -12,13 +12,14 @@ package(default_visibility = ["//visibility:public"]) cc_library( name = "qsim_lib", hdrs = [ + # keep sorted "bits.h", "bitstring.h", "channel.h", "channels_cirq.h", + "circuit.h", "circuit_noisy.h", "circuit_qsim_parser.h", - "circuit.h", "expect.h", "formux.h", "fuser.h", @@ -29,8 +30,8 @@ cc_library( "gates_cirq.h", "gates_qsim.h", "hybrid.h", - "io_file.h", "io.h", + "io_file.h", "matrix.h", "mps_simulator.h", "mps_statespace.h", @@ -41,29 +42,34 @@ cc_library( "seqfor.h", "simmux.h", "simulator.h", - "simulator_avx.h", - "simulator_avx512.h", "simulator_basic.h", - "simulator_sse.h", - "statespace_avx.h", - "statespace_avx512.h", - "statespace_basic.h", - "statespace_sse.h", "statespace.h", + "statespace_basic.h", "umux.h", + "unitary_calculator_basic.h", "unitaryspace.h", - "unitaryspace_avx.h", - "unitaryspace_avx512.h", "unitaryspace_basic.h", - "unitaryspace_sse.h", - "unitary_calculator_avx.h", - "unitary_calculator_avx512.h", - "unitary_calculator_basic.h", - "unitary_calculator_sse.h", "util.h", "util_cpu.h", "vectorspace.h", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + # keep sorted + "simulator_avx.h", + "simulator_avx512.h", + "simulator_sse.h", + "statespace_avx.h", + "statespace_avx512.h", + "statespace_sse.h", + "unitary_calculator_avx.h", + "unitary_calculator_avx512.h", + "unitary_calculator_sse.h", + "unitaryspace_avx.h", + "unitaryspace_avx512.h", + "unitaryspace_sse.h", + ], + "//conditions:default": [], + }), ) # Full qsim library, including CUDA @@ -75,9 +81,9 @@ cc_library( "bitstring.h", "channel.h", "channels_cirq.h", + "circuit.h", "circuit_noisy.h", "circuit_qsim_parser.h", - "circuit.h", "expect.h", "formux.h", "fuser.h", @@ -88,8 +94,8 @@ cc_library( "gates_cirq.h", "gates_qsim.h", "hybrid.h", - "io_file.h", "io.h", + "io_file.h", "matrix.h", "mps_simulator.h", "mps_statespace.h", @@ -100,41 +106,47 @@ cc_library( "seqfor.h", "simmux.h", "simulator.h", - "simulator_avx.h", - "simulator_avx512.h", "simulator_basic.h", - "simulator_sse.h", "simulator_cuda.h", "simulator_cuda_kernels.h", - "statespace_avx.h", - "statespace_avx512.h", + "statespace.h", "statespace_basic.h", - "statespace_sse.h", "statespace_cuda.h", "statespace_cuda_kernels.h", - "statespace.h", "umux.h", + "unitary_calculator_basic.h", "unitaryspace.h", - "unitaryspace_avx.h", - "unitaryspace_avx512.h", "unitaryspace_basic.h", - "unitaryspace_sse.h", - "unitary_calculator_avx.h", - "unitary_calculator_avx512.h", - "unitary_calculator_basic.h", - "unitary_calculator_sse.h", "util.h", "util_cpu.h", "util_cuda.h", "vectorspace.h", "vectorspace_cuda.h", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + # keep sorted + "simulator_avx.h", + "simulator_avx512.h", + "simulator_sse.h", + "statespace_avx.h", + "statespace_avx512.h", + "statespace_sse.h", + "unitary_calculator_avx.h", + "unitary_calculator_avx512.h", + "unitary_calculator_sse.h", + "unitaryspace_avx.h", + "unitaryspace_avx512.h", + "unitaryspace_sse.h", + ], + "//conditions:default": [], + }), ) # Library to run qsim with qsim circuit parser and parallel `for` cc_library( name = "run_qsim_lib", hdrs = [ + # keep sorted "bits.h", "circuit.h", "circuit_qsim_parser.h", @@ -154,33 +166,39 @@ cc_library( "seqfor.h", "simmux.h", "simulator.h", - "simulator_avx.h", - "simulator_avx512.h", "simulator_basic.h", - "simulator_sse.h", "statespace.h", - "statespace_avx.h", - "statespace_avx512.h", "statespace_basic.h", - "statespace_sse.h", "umux.h", + "unitary_calculator_basic.h", "unitaryspace.h", - "unitaryspace_avx.h", "unitaryspace_basic.h", - "unitaryspace_sse.h", - "unitary_calculator_avx.h", - "unitary_calculator_basic.h", - "unitary_calculator_sse.h", "util.h", "util_cpu.h", "vectorspace.h", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + # keep sorted + "simulator_avx.h", + "simulator_avx512.h", + "simulator_sse.h", + "statespace_avx.h", + "statespace_avx512.h", + "statespace_sse.h", + "unitary_calculator_avx.h", + "unitary_calculator_sse.h", + "unitaryspace_avx.h", + "unitaryspace_sse.h", + ], + "//conditions:default": [], + }), ) # Library to run qsimh with qsim circuit parser and parallel `for` cc_library( name = "run_qsimh_lib", hdrs = [ + # keep sorted "bits.h", "circuit.h", "circuit_qsim_parser.h", @@ -201,19 +219,24 @@ cc_library( "seqfor.h", "simmux.h", "simulator.h", - "simulator_avx.h", - "simulator_avx512.h", "simulator_basic.h", - "simulator_sse.h", "statespace.h", - "statespace_avx.h", - "statespace_avx512.h", "statespace_basic.h", - "statespace_sse.h", "util.h", "util_cpu.h", "vectorspace.h", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + # keep sorted + "simulator_avx.h", + "simulator_avx512.h", + "simulator_sse.h", + "statespace_avx.h", + "statespace_avx512.h", + "statespace_sse.h", + ], + "//conditions:default": [], + }), ) ##### Basic libraries ##### @@ -539,11 +562,15 @@ cc_library( name = "simulator", hdrs = ["simmux.h"], deps = [ - ":simulator_avx", - ":simulator_avx512", ":simulator_basic", - ":simulator_sse", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + ":simulator_avx", + ":simulator_avx512", + ":simulator_sse", + ], + "//conditions:default": [], + }), ) # Hybrid simulator @@ -684,11 +711,15 @@ cc_library( name = "umux", hdrs = ["umux.h"], deps = [ - ":unitary_calculator_avx", - ":unitary_calculator_avx512", ":unitary_calculator_basic", - ":unitary_calculator_sse", - ], + ] + select({ + "@platforms//cpu:x86_64": [ + ":unitary_calculator_avx", + ":unitary_calculator_avx512", + ":unitary_calculator_sse", + ], + "//conditions:default": [], + }), ) ### All MPS headers ### diff --git a/tests/BUILD b/tests/BUILD index a6c05c966..05bcde64f 100644 --- a/tests/BUILD +++ b/tests/BUILD @@ -1,7 +1,12 @@ # Options for testing different simulator types. -avx_copts = ['-mavx2', '-mfma'] -avx512_copts = ['-march=native'] -sse_copts = ['-msse4'] +avx_copts = [ + "-mavx2", + "-mfma", +] + +avx512_copts = ["-march=native"] + +sse_copts = ["-msse4"] windows_copts = [ "/arch:AVX", @@ -26,33 +31,36 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:bitstring", + "@com_google_googletest//:gtest_main", ], ) cc_test( name = "channel_test", srcs = ["channel_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": [], + }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:channel", "//lib:formux", "//lib:gates_cirq", "//lib:matrix", "//lib:simulator", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": [], - }), ) cc_test( name = "channels_cirq_test", srcs = ["channels_cirq_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": [], + }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:channels_cirq", "//lib:circuit", "//lib:formux", @@ -61,11 +69,8 @@ cc_test( "//lib:io", "//lib:qtrajectory", "//lib:simulator", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": [], - }), ) cc_test( @@ -76,17 +81,20 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:circuit_qsim_parser", "//lib:gates_qsim", + "@com_google_googletest//:gtest_main", ], ) cc_test( name = "expect_test", srcs = ["expect_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": [], + }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:expect", "//lib:formux", "//lib:fuser_mqubit", @@ -94,11 +102,8 @@ cc_test( "//lib:gates_qsim", "//lib:io", "//lib:simulator", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": [], - }), ) cc_test( @@ -109,10 +114,10 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:circuit_qsim_parser", "//lib:fuser_basic", "//lib:gates_qsim", + "@com_google_googletest//:gtest_main", ], ) @@ -124,25 +129,25 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:formux", "//lib:fuser_mqubit", "//lib:gate", "//lib:gate_appl", "//lib:matrix", "//lib:simulator", + "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gates_cirq_testfixture", + testonly = 1, hdrs = ["gates_cirq_testfixture.h"], deps = [ - "@com_google_googletest//:gtest_main", "//lib:circuit", "//lib:gates_cirq", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( @@ -153,43 +158,43 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:gates_qsim", + "@com_google_googletest//:gtest_main", ], ) cc_library( name = "hybrid_testfixture", + testonly = 1, hdrs = ["hybrid_testfixture.h"], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:circuit_qsim_parser", "//lib:formux", "//lib:fuser_basic", "//lib:gates_qsim", "//lib:hybrid", "//lib:io", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( name = "hybrid_avx_test", srcs = ["hybrid_avx_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": avx_copts, + }), deps = [ ":hybrid_testfixture", - "@com_google_googletest//:gtest_main", "//lib:seqfor", "//lib:simulator_avx", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": avx_copts, - }), ) cc_test( @@ -200,20 +205,20 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:matrix", + "@com_google_googletest//:gtest_main", ], ) cc_library( name = "qtrajectory_testfixture", + testonly = 1, hdrs = ["qtrajectory_testfixture.h"], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:channel", "//lib:channels_cirq", "//lib:circuit_noisy", @@ -223,224 +228,225 @@ cc_library( "//lib:gates_cirq", "//lib:io", "//lib:qtrajectory", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( name = "qtrajectory_avx_test", srcs = ["qtrajectory_avx_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": avx_copts, + }), deps = [ ":qtrajectory_testfixture", - "@com_google_googletest//:gtest_main", "//lib:seqfor", "//lib:simulator_avx", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": avx_copts, - }), ) cc_test( name = "run_qsim_test", srcs = ["run_qsim_test.cc"], - deps = [ - ":gates_cirq_testfixture", - "@com_google_googletest//:gtest_main", - "//lib:run_qsim_lib", - ], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), + deps = [ + ":gates_cirq_testfixture", + "//lib:run_qsim_lib", + "@com_google_googletest//:gtest_main", + ], ) cc_test( name = "run_qsimh_test", srcs = ["run_qsimh_test.cc"], - deps = [ - ":gates_cirq_testfixture", - "@com_google_googletest//:gtest_main", - "//lib:run_qsimh_lib", - ], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), + deps = [ + ":gates_cirq_testfixture", + "//lib:run_qsimh_lib", + "@com_google_googletest//:gtest_main", + ], ) cc_library( name = "simulator_testfixture", + testonly = 1, hdrs = ["simulator_testfixture.h"], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:expect", "//lib:fuser_mqubit", "//lib:gate_appl", "//lib:gates_qsim", "//lib:io", "//lib:util_cpu", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( name = "simulator_avx_test", srcs = ["simulator_avx_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": avx_copts, + }), deps = [ ":simulator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_avx", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": avx_copts, - }), ) cc_test( name = "simulator_avx512_test", srcs = ["simulator_avx512_test.cc"], + copts = select({ + ":windows": windows_avx512_copts, + "//conditions:default": avx512_copts, + }), deps = [ ":simulator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_avx512", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_avx512_copts, - "//conditions:default": avx512_copts, - }), ) cc_test( name = "simulator_basic_test", srcs = ["simulator_basic_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": [], + }), deps = [ ":simulator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_basic", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": [], - }), ) cc_test( name = "simulator_sse_test", srcs = ["simulator_sse_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": sse_copts, + }), deps = [ ":simulator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_sse", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": sse_copts, - }), ) cc_library( name = "statespace_testfixture", + testonly = 1, hdrs = ["statespace_testfixture.h"], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:circuit_qsim_parser", "//lib:fuser_basic", "//lib:gates_qsim", "//lib:io", "//lib:run_qsim", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( name = "statespace_avx_test", srcs = ["statespace_avx_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": avx_copts, + }), deps = [ ":statespace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_avx", "//lib:statespace_avx", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": avx_copts, - }), ) cc_test( name = "statespace_avx512_test", srcs = ["statespace_avx512_test.cc"], + copts = select({ + ":windows": windows_avx512_copts, + "//conditions:default": avx512_copts, + }), deps = [ ":statespace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_avx512", "//lib:statespace_avx512", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_avx512_copts, - "//conditions:default": avx512_copts, - }), ) cc_test( name = "statespace_basic_test", srcs = ["statespace_basic_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": [], + }), deps = [ ":statespace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_basic", "//lib:statespace_basic", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": [], - }), ) cc_test( name = "statespace_sse_test", srcs = ["statespace_sse_test.cc"], + copts = select({ + ":windows": windows_copts, + "//conditions:default": sse_copts, + }), deps = [ ":statespace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:parfor", "//lib:seqfor", "//lib:simulator_sse", "//lib:statespace_sse", + "@com_google_googletest//:gtest_main", ], - copts = select({ - ":windows": windows_copts, - "//conditions:default": sse_copts, - }), ) cc_library( name = "unitaryspace_testfixture", + testonly = 1, hdrs = ["unitaryspace_testfixture.h"], copts = select({ ":windows": windows_copts, @@ -449,7 +455,6 @@ cc_library( deps = [ "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( @@ -461,9 +466,9 @@ cc_test( }), deps = [ ":unitaryspace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_avx" + "//lib:unitaryspace_avx", + "@com_google_googletest//:gtest_main", ], ) @@ -476,9 +481,9 @@ cc_test( }), deps = [ ":unitaryspace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_avx512" + "//lib:unitaryspace_avx512", + "@com_google_googletest//:gtest_main", ], ) @@ -491,9 +496,9 @@ cc_test( }), deps = [ ":unitaryspace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_basic" + "//lib:unitaryspace_basic", + "@com_google_googletest//:gtest_main", ], ) @@ -506,26 +511,26 @@ cc_test( }), deps = [ ":unitaryspace_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_sse" + "//lib:unitaryspace_sse", + "@com_google_googletest//:gtest_main", ], ) cc_library( name = "unitary_calculator_testfixture", + testonly = 1, hdrs = ["unitary_calculator_testfixture.h"], copts = select({ ":windows": windows_copts, "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:fuser", "//lib:gate_appl", "//lib:gates_cirq", + "@com_google_googletest//:gtest_main", ], - testonly = 1, ) cc_test( @@ -537,10 +542,10 @@ cc_test( }), deps = [ ":unitary_calculator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_avx", "//lib:unitary_calculator_avx", + "//lib:unitaryspace_avx", + "@com_google_googletest//:gtest_main", ], ) @@ -553,10 +558,10 @@ cc_test( }), deps = [ ":unitary_calculator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_avx512", "//lib:unitary_calculator_avx512", + "//lib:unitaryspace_avx512", + "@com_google_googletest//:gtest_main", ], ) @@ -569,10 +574,10 @@ cc_test( }), deps = [ ":unitary_calculator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_basic", "//lib:unitary_calculator_basic", + "//lib:unitaryspace_basic", + "@com_google_googletest//:gtest_main", ], ) @@ -585,10 +590,10 @@ cc_test( }), deps = [ ":unitary_calculator_testfixture", - "@com_google_googletest//:gtest_main", "//lib:formux", - "//lib:unitaryspace_sse", "//lib:unitary_calculator_sse", + "//lib:unitaryspace_sse", + "@com_google_googletest//:gtest_main", ], ) @@ -600,9 +605,9 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", "//lib:formux", "//lib:vectorspace", + "@com_google_googletest//:gtest_main", ], ) @@ -614,13 +619,12 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", - "//lib:mps_statespace", "//lib:formux", + "//lib:mps_statespace", + "@com_google_googletest//:gtest_main", ], ) - cc_test( name = "mps_simulator_test", srcs = ["mps_simulator_test.cc"], @@ -629,11 +633,11 @@ cc_test( "//conditions:default": [], }), deps = [ - "@com_google_googletest//:gtest_main", + "//lib:formux", "//lib:gate_appl", "//lib:gates_cirq", "//lib:gates_qsim", "//lib:mps_simulator", - "//lib:formux", + "@com_google_googletest//:gtest_main", ], )