diff --git a/.circleci/config.yml b/.circleci/config.yml index 29ed643f..ea98f999 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -108,6 +108,19 @@ jobs: - run: cd rust && cargo install cargo-lipo - build_project - compile_tests + + # SupraSeal pulls in a C++ code base, make sure everything compiles properly. + build_linux_supraseal: + executor: golang + resource_class: medium + working_directory: ~/go/src/github.com/filecoin-project/filecoin-ffi + steps: + - configure_environment_variables + - prepare + - run: + name: Build project with `FFI_USE_CUDA_SUPRASEAL=1` + command: FFI_BUILD_FROM_SOURCE=1 FFI_USE_CUDA_SUPRASEAL=1 make + publish_linux_x86_64_staticlib: executor: golang resource_class: medium @@ -173,6 +186,7 @@ workflows: - build_and_test_aarch64_linux_cgo_bindings: run_leak_detector: false - build_darwin_cgo_bindings + - build_linux_supraseal - publish_linux_x86_64_staticlib: filters: tags: @@ -209,7 +223,12 @@ commands: condition: << parameters.linux >> steps: - run: sudo apt-get update - - run: sudo apt-get install --no-install-recommends -y valgrind ocl-icd-opencl-dev libssl-dev libhwloc-dev nvidia-cuda-toolkit + - run: sudo apt-get install --no-install-recommends -y valgrind ocl-icd-opencl-dev libssl-dev libhwloc-dev nvidia-cuda-toolkit g++-10 + - run: + name: Downgrade to GCC 10, as CUDA 11 doesn't play nice with GCC 11 + command: | + sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-10 10 + sudo update-alternatives --set c++ /usr/bin/g++-10 - when: condition: << parameters.darwin >> steps: diff --git a/README.md b/README.md index 2bcfafe5..3d373631 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,8 @@ rm .install-filcrypto \ CUDA for GPU support is now enabled by default in the proofs library. This feature can optionally be replaced by OpenCL by using `FFI_USE_OPENCL=1` set in the environment when building from source. Alternatively, if the CUDA toolkit (such as `nvcc`) cannot be located in the environment, OpenCL support is used instead. To disable GPU support entirely, set `FFI_USE_GPU=0` in the environment when building from source. +There is experimental support for faster C2 named "SupraSeal". To enable it, set `FFI_USE_CUDA_SUPRASEAL=1`. It's specific to CUDA and won't work with OpenCL. + ```shell rm .install-filcrypto \ ; make clean \ diff --git a/install-filcrypto b/install-filcrypto index b375e68f..ef594b69 100755 --- a/install-filcrypto +++ b/install-filcrypto @@ -172,11 +172,15 @@ build_from_source() { # Check if GPU support is disabled. if [ "${FFI_USE_GPU}" == "0" ]; then gpu_flags="" + elif [ "${FFI_USE_CUDA_SUPRASEAL}" == "1" ]; then + # If SupraSeal is enabled, just use the `cuda-supraseal` eature and + # nothing else GPU related. + gpu_flags=",cuda-supraseal" else - # If not, default to CUDA support where possible. - # First ensure that nvcc (as part of the CUDA toolkit) is - # available -- if it's not warn that we are defaulting GPU to - # OpenCL instead. + # If GPUs are enabled and SupraSeal is not, default to CUDA support + # where possible. + # First ensure that nvcc (as part of the CUDA toolkit) is available -- + # if it's not warn that we are defaulting GPU to OpenCL instead. gpu_flags=",cuda" # Unless OpenCL support is specified or we're building on Darwin. diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 96810590..8c515688 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -50,9 +50,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" dependencies = [ "memchr", ] @@ -113,7 +113,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] @@ -144,7 +144,7 @@ dependencies = [ "cfg-if", "libc", "miniz_oxide", - "object 0.32.0", + "object 0.32.1", "rustc-demangle", ] @@ -160,6 +160,30 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +[[package]] +name = "bellpepper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0271a107b5f600ee41bdafbb3c8ddf4afa52983d4b078917d89dbb920116e987" +dependencies = [ + "bellpepper-core", + "byteorder", + "ff 0.13.0", +] + +[[package]] +name = "bellpepper-core" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2c9a1b2f748c59938bc72165ebdf34efffeecee9cfbe0bb7d6b01aea21cd523" +dependencies = [ + "blake2s_simd 1.0.1", + "byteorder", + "ff 0.13.0", + "serde", + "thiserror", +] + [[package]] name = "bellperson" version = "0.24.1" @@ -191,10 +215,11 @@ dependencies = [ [[package]] name = "bellperson" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93eaee4b4753554139ae52ecf0e8b8c128cbc561b32e1bfaa32f70cba8518c1f" +checksum = "5c41bd83b8437856d267eb311de13dcd9bff9077cc5ba35c7ec886070dea8a45" dependencies = [ + "bellpepper-core", "bincode", "blake2s_simd 1.0.1", "blstrs 0.7.1", @@ -202,7 +227,7 @@ dependencies = [ "crossbeam-channel", "digest 0.10.7", "ec-gpu", - "ec-gpu-gen 0.6.0", + "ec-gpu-gen 0.7.0", "ff 0.13.0", "fs2", "group 0.13.0", @@ -215,6 +240,7 @@ dependencies = [ "rustversion", "serde", "sha2 0.10.7", + "supraseal-c2", "thiserror", ] @@ -336,8 +362,7 @@ dependencies = [ [[package]] name = "bls-signatures" version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fcead733e20b9afbf3784a3f33cc6d728e0f11a593a35bd6c5c4503db19e06e" +source = "git+https://github.com/filecoin-project/bls-signatures?branch=release/v0.13#d64fd6d06e06f224f9efd89fcc0bf55015b16b52" dependencies = [ "blst", "blstrs 0.6.1", @@ -351,9 +376,9 @@ dependencies = [ [[package]] name = "bls-signatures" -version = "0.14.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edceb821f01a1c93593fbbe47786e01c69c3141baa8e349366f15472b9252bc9" +checksum = "ecc7fce0356b52c2483bb6188cc8bdc11add526bce75d1a44e5e5d889a6ab008" dependencies = [ "blst", "blstrs 0.7.1", @@ -367,22 +392,20 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a30d0edd9dd1c60ddb42b80341c7852f6f985279a5c1a83659dcb65899dec99" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" dependencies = [ "cc", "glob", "threadpool", - "which", "zeroize", ] [[package]] name = "blstrs" version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ecb6f3a9429706971633edf4b84f922aba9d2e3a7d71bfb450337e64ccb7df0" +source = "git+https://github.com/filecoin-project/blstrs?branch=release/v0.6#0680cb1448156747212fd1ab4c85b38233a49f59" dependencies = [ "blst", "byte-slice-cast", @@ -454,6 +477,7 @@ version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ + "jobserver", "libc", ] @@ -463,16 +487,27 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chacha20" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3613f74bd2eac03dad61bd53dbe620703d4371614fe0bc3b9f04dd36fe4e818" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "d87d9d13be47a5b7c3907137f1290b0459a7f80efb26be8c52afb11963bccb02" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "winapi 0.3.9", + "windows-targets", ] [[package]] @@ -1069,6 +1104,29 @@ dependencies = [ "yastl", ] +[[package]] +name = "ec-gpu-gen" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c3a1c7cc1906cead1b1763ab4ad1b86f0fa037c4407e2c7f90568f9c2eeb78" +dependencies = [ + "bitvec", + "crossbeam-channel", + "ec-gpu", + "execute", + "ff 0.13.0", + "group 0.13.0", + "hex", + "log", + "num_cpus", + "once_cell", + "rayon", + "rust-gpu-tools 0.7.2", + "sha2 0.10.7", + "thiserror", + "yastl", +] + [[package]] name = "either" version = "1.9.0" @@ -1094,9 +1152,9 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" dependencies = [ "errno-dragonfly", "libc", @@ -1141,7 +1199,7 @@ checksum = "55a9a55d1dab3b07854648d48e366f684aefe2ac78ae28cec3bf65e3cd53d9a3" dependencies = [ "execute-command-tokens", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] @@ -1243,14 +1301,14 @@ name = "filcrypto" version = "0.7.5" dependencies = [ "anyhow", - "bls-signatures 0.14.0", + "bls-signatures 0.15.0", "blstrs 0.7.1", "byteorder", "cid", "fil_logger", - "filecoin-proofs-api 15.0.0", + "filecoin-proofs-api 16.0.0", "filepath", - "fr32 7.0.0", + "fr32 8.0.0", "fvm 2.6.0", "fvm 3.7.0", "fvm_ipld_blockstore", @@ -1296,19 +1354,19 @@ dependencies = [ [[package]] name = "filecoin-hashers" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad606b5bfcd1cb270d95168b9d534e5e6323abc09ac37e676a91cbf529a4a04" +checksum = "3eb5ea33790e200a7d77b929e848fba8c3ee0d206dba6dc41e15286e433f62aa" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "blstrs 0.7.1", "ff 0.13.0", "generic-array", "hex", "lazy_static", "merkletree 0.23.0", - "neptune 9.0.0", + "neptune 11.0.0", "rand", "serde", "sha2 0.10.7", @@ -1348,18 +1406,18 @@ dependencies = [ [[package]] name = "filecoin-proofs" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd41a47bd4e201fd55c509343e1de2869967a2cda541d1acad7e790379bce399" +checksum = "e3840a583825e720be353549dca7e2cbd247bf2876adc9a79a8a1752eb95ab96" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "bincode", "blake2b_simd", "blstrs 0.7.1", "ff 0.13.0", - "filecoin-hashers 10.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "fr32 9.0.0", "generic-array", "hex", "iowrap", @@ -1373,10 +1431,10 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.7", - "storage-proofs-core 15.0.0", - "storage-proofs-porep 15.0.0", - "storage-proofs-post 15.0.0", - "storage-proofs-update 15.0.0", + "storage-proofs-core 16.0.0", + "storage-proofs-porep 16.0.0", + "storage-proofs-post 16.0.0", + "storage-proofs-update 16.0.0", "typenum", ] @@ -1400,20 +1458,20 @@ dependencies = [ [[package]] name = "filecoin-proofs-api" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96752d1c1ec928d31a7f9bee93f565b0216beae57ce9dcd0d965e0b6ae6ae37" +checksum = "c61bdd3ba08899866a2b2c7f0fbe1fcb55cc6ad3c2f0b20026ef63263ac8ac50" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "bincode", "blstrs 0.7.1", - "filecoin-hashers 10.0.0", - "filecoin-proofs 15.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "filecoin-proofs 16.0.0", + "fr32 9.0.0", "lazy_static", "serde", - "storage-proofs-core 15.0.0", + "storage-proofs-core 16.0.0", ] [[package]] @@ -1504,6 +1562,20 @@ dependencies = [ "thiserror", ] +[[package]] +name = "fr32" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "308ab8ad1457d722a3d247549c759ca0ce4a58796c633c956f6186f6923ea371" +dependencies = [ + "anyhow", + "blstrs 0.7.1", + "byte-slice-cast", + "byteorder", + "ff 0.13.0", + "thiserror", +] + [[package]] name = "fs2" version = "0.4.3" @@ -1535,7 +1607,7 @@ dependencies = [ "derive_more", "filecoin-proofs-api 14.0.0", "fvm-wasm-instrument 0.2.0", - "fvm_ipld_amt", + "fvm_ipld_amt 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt 0.7.0", @@ -1560,17 +1632,16 @@ dependencies = [ [[package]] name = "fvm" version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18c99b65d6210f87addf30511f677edd89200d93798f74bdb64fb14d94c335c" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" dependencies = [ "anyhow", "blake2b_simd", "byteorder", "cid", "derive_more", - "filecoin-proofs-api 14.0.0", + "filecoin-proofs-api 16.0.0", "fvm-wasm-instrument 0.4.0", - "fvm_ipld_amt", + "fvm_ipld_amt 0.6.1 (git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep)", "fvm_ipld_blockstore", "fvm_ipld_encoding", "fvm_ipld_hamt 0.8.0", @@ -1631,11 +1702,25 @@ dependencies = [ "thiserror", ] +[[package]] +name = "fvm_ipld_amt" +version = "0.6.1" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" +dependencies = [ + "anyhow", + "cid", + "fvm_ipld_blockstore", + "fvm_ipld_encoding", + "itertools 0.11.0", + "once_cell", + "serde", + "thiserror", +] + [[package]] name = "fvm_ipld_blockstore" version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417f52f6915b9f9a68de8462e1cf46f14a2c16420f484b8d2066873de2ffe420" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" dependencies = [ "anyhow", "cid", @@ -1645,8 +1730,7 @@ dependencies = [ [[package]] name = "fvm_ipld_encoding" version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90608092e31d9a06236268c58f7c36668ab4b2a48afafe3a97e08f094ad7ae50" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" dependencies = [ "anyhow", "cid", @@ -1682,8 +1766,7 @@ dependencies = [ [[package]] name = "fvm_ipld_hamt" version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a53e14c789449cec999ca0e93d909490c921b967adb7a9ec8f12286fb809bd" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" dependencies = [ "anyhow", "byteorder", @@ -1734,17 +1817,16 @@ dependencies = [ [[package]] name = "fvm_shared" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "946a75899d7e476a4843cd54dea951fe9b1fa3e1e63da388b001691842880b4c" +source = "git+https://github.com/filecoin-project/ref-fvm?branch=synthetic-porep#ec4e9f91b756bfe7786e9665b9ee4e661c5b0e2c" dependencies = [ "anyhow", "bitflags 2.4.0", "blake2b_simd", - "bls-signatures 0.13.0", + "bls-signatures 0.15.0", "cid", "data-encoding", "data-encoding-macro", - "filecoin-proofs-api 14.0.0", + "filecoin-proofs-api 16.0.0", "fvm_ipld_encoding", "lazy_static", "libsecp256k1", @@ -1810,7 +1892,7 @@ checksum = "ba330b70a5341d3bc730b8e205aaee97ddab5d9c448c4f51a7c2d924266fa8f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] @@ -2097,6 +2179,15 @@ version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + [[package]] name = "js-sys" version = "0.3.64" @@ -2248,9 +2339,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memfd" @@ -2354,9 +2445,9 @@ dependencies = [ [[package]] name = "minstant" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5dcfca9a0725105ac948b84cfeb69c3942814c696326743797215413f854b9" +checksum = "7df94bf4a15ed69e64ea45405e504ef293a3614413e7d8f5529112c5acd4a114" dependencies = [ "ctor", "libc", @@ -2431,11 +2522,12 @@ dependencies = [ [[package]] name = "neptune" -version = "9.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4227e5557caad6d2a910b7770f2479f0c9aeb8ddc1dc537623cb6ffec7f01d31" +checksum = "7eaa7f90368545907dce7d5652a78f96a77d1e97019b230edbf54ce2440d5698" dependencies = [ - "bellperson 0.25.0", + "bellpepper", + "bellpepper-core", "blake2s_simd 0.5.11", "blstrs 0.7.1", "byteorder", @@ -2557,9 +2649,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -2905,9 +2997,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.3" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", @@ -2917,9 +3009,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" dependencies = [ "aho-corasick", "memchr", @@ -2928,9 +3020,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "replace_with" @@ -2989,7 +3081,7 @@ dependencies = [ "once_cell", "opencl3 0.9.3", "sha2 0.10.7", - "temp-env 0.3.4", + "temp-env 0.3.5", "thiserror", ] @@ -3038,7 +3130,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", - "errno 0.3.2", + "errno 0.3.3", "io-lifetimes", "libc", "linux-raw-sys 0.3.8", @@ -3047,12 +3139,12 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" dependencies = [ "bitflags 2.4.0", - "errno 0.3.2", + "errno 0.3.3", "libc", "linux-raw-sys 0.4.5", "windows-sys", @@ -3110,9 +3202,9 @@ checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" [[package]] name = "serde" -version = "1.0.185" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] @@ -3137,20 +3229,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.185" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] name = "serde_ipld_dagcbor" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace39c1b7526be78c755a4c698313f699cf44e62408c0029bf9ab9450fe836da" +checksum = "74e4c1e1617be5feb2f03f629f8097f76b51373785a83a875453c2b04c880f4e" dependencies = [ "cbor4ii", "cid", @@ -3177,7 +3269,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] @@ -3252,9 +3344,9 @@ dependencies = [ [[package]] name = "sha2raw" -version = "10.0.0" +version = "11.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d3d6621f457b828550620ce46c9bea88910df2c89e51cbabdc3f7202ea633ec" +checksum = "b502b7bf556833b39551a1379b1ea715ce293016da621f18c3583fb13249a2ec" dependencies = [ "byteorder", "cpufeatures", @@ -3302,6 +3394,16 @@ dependencies = [ "lock_api", ] +[[package]] +name = "sppark" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba7a6d98937866ea8917015cd4a72d56d6e7feee8979dbccf83fc0c870053c46" +dependencies = [ + "cc", + "which", +] + [[package]] name = "sptr" version = "0.3.2" @@ -3357,21 +3459,21 @@ dependencies = [ [[package]] name = "storage-proofs-core" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c42e2e116f3b39518249421ba3060675e8820b538dfc9c831f8a979d43627e" +checksum = "807382fd21c163e7666587a9f9142881c1caa00db33e14784dd31f7eb9982bee" dependencies = [ "aes", "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "blake2b_simd", "blstrs 0.7.1", "byteorder", "cbc", "config", "ff 0.13.0", - "filecoin-hashers 10.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "fr32 9.0.0", "fs2", "generic-array", "itertools 0.10.5", @@ -3431,21 +3533,23 @@ dependencies = [ [[package]] name = "storage-proofs-porep" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef3341b3520dac77a0908d0fd908245dae4863e835dd8bf5e8d3abe6f316c403" +checksum = "f4c9539ca32203ac4c7e888f967b6343defd29c935614d2defa4912a10148ff8" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "bincode", + "blake2b_simd", "blstrs 0.7.1", "byte-slice-cast", "byteorder", + "chacha20", "crossbeam", "fdlimit", "ff 0.13.0", - "filecoin-hashers 10.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "fr32 9.0.0", "generic-array", "hex", "hwloc", @@ -3454,7 +3558,7 @@ dependencies = [ "log", "memmap2", "merkletree 0.23.0", - "neptune 9.0.0", + "neptune 11.0.0", "num-bigint", "num-traits", "num_cpus", @@ -3464,8 +3568,8 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.7", - "sha2raw 10.0.0", - "storage-proofs-core 15.0.0", + "sha2raw 11.0.0", + "storage-proofs-core 16.0.0", "yastl", ] @@ -3494,25 +3598,25 @@ dependencies = [ [[package]] name = "storage-proofs-post" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3c1c1c156ab693d94096ed288f616c31c4703cda6a76581fd80468e2724cc9" +checksum = "b1780ccdd466460d78ac70290e289c4e7a20721272ffc9ac19736e9f34fcafbc" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "blake2b_simd", "blstrs 0.7.1", "byteorder", "ff 0.13.0", - "filecoin-hashers 10.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "fr32 9.0.0", "generic-array", "hex", "log", "rayon", "serde", "sha2 0.10.7", - "storage-proofs-core 15.0.0", + "storage-proofs-core 16.0.0", ] [[package]] @@ -3541,26 +3645,26 @@ dependencies = [ [[package]] name = "storage-proofs-update" -version = "15.0.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65c9cbd244a8cd5e682700134eaa15455599a8172a6d3a4131db81960a041f47" +checksum = "c9a9c5760889cffd415961e6c1637c300aa40732e753646e8d4885baa4f48d72" dependencies = [ "anyhow", - "bellperson 0.25.0", + "bellperson 0.26.0", "blstrs 0.7.1", "ff 0.13.0", - "filecoin-hashers 10.0.0", - "fr32 8.0.0", + "filecoin-hashers 11.0.0", + "fr32 9.0.0", "generic-array", "lazy_static", "log", "memmap2", "merkletree 0.23.0", - "neptune 9.0.0", + "neptune 11.0.0", "rayon", "serde", - "storage-proofs-core 15.0.0", - "storage-proofs-porep 15.0.0", + "storage-proofs-core 16.0.0", + "storage-proofs-porep 16.0.0", ] [[package]] @@ -3575,6 +3679,17 @@ version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +[[package]] +name = "supraseal-c2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd636fe8d238305b3022c399f9973c88f58d75212ef36d2ff1ebd51e20285d5b" +dependencies = [ + "blst", + "cc", + "sppark", +] + [[package]] name = "syn" version = "1.0.109" @@ -3588,9 +3703,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "718fa2415bcb8d8bd775917a1bf12a7931b6dfa890753378538118181e0cb398" dependencies = [ "proc-macro2", "quote", @@ -3632,9 +3747,9 @@ dependencies = [ [[package]] name = "temp-env" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9547444bfe52cbd79515c6c8087d8ae6ca8d64d2d31a27746320f5cb81d1a15c" +checksum = "e010429b1f3ea1311190c658c7570100f03c1dab05c16cfab774181c648d656a" dependencies = [ "parking_lot", ] @@ -3648,28 +3763,28 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix 0.38.8", + "rustix 0.38.11", "windows-sys", ] [[package]] name = "thiserror" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.47" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] [[package]] @@ -3757,9 +3872,9 @@ checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna", @@ -3811,7 +3926,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", "wasm-bindgen-shared", ] @@ -3833,7 +3948,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3875,9 +3990,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.111.0" +version = "0.112.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad71036aada3f6b09251546e97e4f4f176dd6b41cf6fa55e7e0f65e86aec319a" +checksum = "e986b010f47fcce49cf8ea5d5f9e5d2737832f12b53ae8ae785bbe895d0877bf" dependencies = [ "indexmap 2.0.0", "semver", @@ -3885,12 +4000,12 @@ dependencies = [ [[package]] name = "wasmprinter" -version = "0.2.63" +version = "0.2.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8cc41d341939dce08ee902b50e36cd35add940f6044c94b144e8f73fe07a6" +checksum = "34ddf5892036cd4b780d505eff1194a0cbc10ed896097656fdcea3744b5e7c2f" dependencies = [ "anyhow", - "wasmparser 0.111.0", + "wasmparser 0.112.0", ] [[package]] @@ -4073,13 +4188,14 @@ dependencies = [ [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.11", ] [[package]] @@ -4233,5 +4349,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.31", ] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 8117fd7c..7b43ff27 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -18,7 +18,7 @@ publish = false crate-type = ["rlib", "staticlib"] [dependencies] -bls-signatures = { version = "0.14.0", default-features = false, features = ["blst"] } +bls-signatures = { version = "0.15.0", default-features = false, features = ["blst"] } blstrs = "0.7" byteorder = "1.4.3" filepath = "0.1.1" @@ -32,7 +32,7 @@ rayon = "1.2.1" anyhow = "1.0.23" serde_json = "1.0.46" rust-gpu-tools = { version = "0.7", optional = true, default-features = false } -fr32 = { version = "~7.0", default-features = false } +fr32 = { version = "~8.0", default-features = false } fvm3 = { package = "fvm", version = "~3.7.0", default-features = false, features = ["nv21-dev"] } fvm3_shared = { package = "fvm_shared", version = "~3.5.0" } fvm2 = { package = "fvm", version = "~2.6", default-features = false } @@ -45,7 +45,7 @@ lazy_static = "1.4.0" serde = "1.0.117" serde_tuple = "0.5" safer-ffi = { version = "0.0.7", features = ["proc_macros"] } -filecoin-proofs-api = { version = "15.0", default-features = false } +filecoin-proofs-api = { version = "16.0", default-features = false } [dev-dependencies] memmap2 = "0.5" @@ -55,6 +55,16 @@ tempfile = "3.0.8" default = ["cuda", "multicore-sdr" ] blst-portable = ["bls-signatures/blst-portable", "blstrs/portable"] cuda = ["filecoin-proofs-api/cuda", "rust-gpu-tools/cuda", "fvm3/cuda", "fvm2/cuda"] +cuda-supraseal = ["filecoin-proofs-api/cuda-supraseal", "rust-gpu-tools/cuda", "fvm3/cuda-supraseal"] opencl = ["filecoin-proofs-api/opencl", "rust-gpu-tools/opencl", "fvm3/opencl", "fvm2/opencl"] multicore-sdr = ["filecoin-proofs-api/multicore-sdr"] c-headers = ["safer-ffi/headers"] + +[patch.crates-io] +blstrs = { git = "https://github.com/filecoin-project/blstrs", branch = "release/v0.6" } +bls-signatures = { git = "https://github.com/filecoin-project/bls-signatures", branch = "release/v0.13" } +# Those branches only add the `cuda-supraseal` feature to the FVM. +fvm3 = { package = "fvm", git = "https://github.com/filecoin-project/ref-fvm", branch = "synthetic-porep" } +fvm3_ipld_encoding = { package = "fvm_ipld_encoding", git = "https://github.com/filecoin-project/ref-fvm", branch = "synthetic-porep" } +fvm3_shared = { package = "fvm_shared", git = "https://github.com/filecoin-project/ref-fvm", branch = "synthetic-porep"} +fvm_ipld_blockstore = { git = "https://github.com/filecoin-project/ref-fvm", branch = "synthetic-porep"} diff --git a/rust/src/proofs/types.rs b/rust/src/proofs/types.rs index 593f2578..555875ed 100644 --- a/rust/src/proofs/types.rs +++ b/rust/src/proofs/types.rs @@ -69,6 +69,7 @@ impl From for RegisteredSealProof { StackedDrg512MiBV1_1 => RegisteredSealProof::StackedDrg512MiBV1_1, StackedDrg32GiBV1_1 => RegisteredSealProof::StackedDrg32GiBV1_1, StackedDrg64GiBV1_1 => RegisteredSealProof::StackedDrg64GiBV1_1, + _ => todo!(), } } }