From 02f29ac74ca1824385ff2ac2b29bff1d23dca3c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Tue, 7 Nov 2023 12:23:44 +0000 Subject: [PATCH 1/4] feat: adding option to set initial and max memory --- barretenberg/acir_tests/browser-test-app/src/index.ts | 2 +- barretenberg/ts/README.md | 2 +- barretenberg/ts/src/barretenberg/index.ts | 10 ++++++++-- barretenberg/ts/src/barretenberg_api/blake2s.test.ts | 2 +- barretenberg/ts/src/barretenberg_api/common.test.ts | 2 +- barretenberg/ts/src/barretenberg_api/pedersen.test.ts | 2 +- barretenberg/ts/src/barretenberg_api/schnorr.test.ts | 2 +- barretenberg/ts/src/main.ts | 6 +++--- 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/barretenberg/acir_tests/browser-test-app/src/index.ts b/barretenberg/acir_tests/browser-test-app/src/index.ts index 46cc925c31cb..fbd4566e47f9 100644 --- a/barretenberg/acir_tests/browser-test-app/src/index.ts +++ b/barretenberg/acir_tests/browser-test-app/src/index.ts @@ -13,7 +13,7 @@ async function runTest( const CIRCUIT_SIZE = 2 ** 19; debug("starting test..."); - const api = await Barretenberg.new(threads); + const api = await Barretenberg.new({ threads }); // Important to init slab allocator as first thing, to ensure maximum memory efficiency. await api.commonInitSlabAllocator(CIRCUIT_SIZE); diff --git a/barretenberg/ts/README.md b/barretenberg/ts/README.md index 42cd716059af..4e3544af942c 100644 --- a/barretenberg/ts/README.md +++ b/barretenberg/ts/README.md @@ -89,7 +89,7 @@ To create the API and do a blake2s hash: ```typescript import { Crs, Barretenberg, RawBuffer } from './index.js'; -const api = await Barretenberg.new(/* num_threads */ 1); +const api = await Barretenberg.new(/* num_threads */ { threads: 1 }); const input = Buffer.from('hello world!'); const result = await api.blake2s(input); await api.destroy(); diff --git a/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/src/barretenberg/index.ts index 6ae070d4882c..da0d26037bfd 100644 --- a/barretenberg/ts/src/barretenberg/index.ts +++ b/barretenberg/ts/src/barretenberg/index.ts @@ -9,6 +9,12 @@ import createDebug from 'debug'; const debug = createDebug('bb.js:wasm'); +export type BackendOptions = { + threads?: number; + memory?: { initial?: number; maximum?: number }; +}; + + /** * The main class library consumers interact with. * It extends the generated api, and provides a static constructor "new" to compose components. @@ -24,10 +30,10 @@ export class Barretenberg extends BarretenbergApi { * and blocking the main thread in the browser is not allowed. * It threads > 1 (defaults to hardware availability), child threads will be created on their own workers. */ - static async new(threads?: number) { + static async new({ threads, memory }: BackendOptions = {}) { const worker = createMainWorker(); const wasm = getRemoteBarretenbergWasm(worker); - await wasm.init(threads, proxy(debug)); + await wasm.init(threads, proxy(debug), memory?.initial, memory?.maximum); return new Barretenberg(worker, wasm); } diff --git a/barretenberg/ts/src/barretenberg_api/blake2s.test.ts b/barretenberg/ts/src/barretenberg_api/blake2s.test.ts index 7f0257ef2a28..3ffda0d3822c 100644 --- a/barretenberg/ts/src/barretenberg_api/blake2s.test.ts +++ b/barretenberg/ts/src/barretenberg_api/blake2s.test.ts @@ -5,7 +5,7 @@ describe('blake2s', () => { let api: Barretenberg; beforeAll(async () => { - api = await Barretenberg.new(1); + api = await Barretenberg.new({ threads: 1 }); }); afterAll(async () => { diff --git a/barretenberg/ts/src/barretenberg_api/common.test.ts b/barretenberg/ts/src/barretenberg_api/common.test.ts index 1e1381829b5f..b21d69e93b20 100644 --- a/barretenberg/ts/src/barretenberg_api/common.test.ts +++ b/barretenberg/ts/src/barretenberg_api/common.test.ts @@ -4,7 +4,7 @@ describe('env', () => { let api: Barretenberg; beforeAll(async () => { - api = await Barretenberg.new(3); + api = await Barretenberg.new({ threads: 3 }); }, 15000); afterAll(async () => { diff --git a/barretenberg/ts/src/barretenberg_api/pedersen.test.ts b/barretenberg/ts/src/barretenberg_api/pedersen.test.ts index 1a3c23799894..e61a0f10583f 100644 --- a/barretenberg/ts/src/barretenberg_api/pedersen.test.ts +++ b/barretenberg/ts/src/barretenberg_api/pedersen.test.ts @@ -5,7 +5,7 @@ describe('pedersen', () => { let api: Barretenberg; beforeAll(async () => { - api = await Barretenberg.new(1); + api = await Barretenberg.new({ threads: 1 }); }, 30000); afterAll(async () => { diff --git a/barretenberg/ts/src/barretenberg_api/schnorr.test.ts b/barretenberg/ts/src/barretenberg_api/schnorr.test.ts index 6b161cfb1c98..9f06ecdffefe 100644 --- a/barretenberg/ts/src/barretenberg_api/schnorr.test.ts +++ b/barretenberg/ts/src/barretenberg_api/schnorr.test.ts @@ -8,7 +8,7 @@ describe('schnorr', () => { let api: Barretenberg; beforeAll(async () => { - api = await Barretenberg.new(1); + api = await Barretenberg.new({ threads: 1 }); }, 30000); afterAll(async () => { diff --git a/barretenberg/ts/src/main.ts b/barretenberg/ts/src/main.ts index a985ea59e796..ee8927472c7d 100755 --- a/barretenberg/ts/src/main.ts +++ b/barretenberg/ts/src/main.ts @@ -44,7 +44,7 @@ async function computeCircuitSize(bytecodePath: string, api: Barretenberg) { } async function init(bytecodePath: string, crsPath: string) { - const api = await Barretenberg.new(threads); + const api = await Barretenberg.new({ threads }); const circuitSize = await getGates(bytecodePath, api); const subgroupSize = Math.pow(2, Math.ceil(Math.log2(circuitSize))); @@ -70,7 +70,7 @@ async function init(bytecodePath: string, crsPath: string) { } async function initLite() { - const api = await Barretenberg.new(1); + const api = await Barretenberg.new({ threads: 1 }); // Plus 1 needed! (Move +1 into Crs?) const crs = await Crs.new(1); @@ -140,7 +140,7 @@ export async function prove( } export async function gateCount(bytecodePath: string) { - const api = await Barretenberg.new(1); + const api = await Barretenberg.new({ threads: 1 }); try { const numberOfGates = await getGates(bytecodePath, api); From 77c18a53ec24060fc60853f49ea496dfc3be1cdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Tue, 7 Nov 2023 12:43:39 +0000 Subject: [PATCH 2/4] chore: prettier --- barretenberg/ts/src/barretenberg/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/src/barretenberg/index.ts index da0d26037bfd..3e0d03a696d8 100644 --- a/barretenberg/ts/src/barretenberg/index.ts +++ b/barretenberg/ts/src/barretenberg/index.ts @@ -14,7 +14,6 @@ export type BackendOptions = { memory?: { initial?: number; maximum?: number }; }; - /** * The main class library consumers interact with. * It extends the generated api, and provides a static constructor "new" to compose components. From fd731ee1480bc39cc85db25a42edd9af69e6d55d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Fri, 15 Dec 2023 15:23:51 +0000 Subject: [PATCH 3/4] chore: prettier --- barretenberg/ts/src/barretenberg/blake2s.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/barretenberg/ts/src/barretenberg/blake2s.test.ts b/barretenberg/ts/src/barretenberg/blake2s.test.ts index 182c219733b9..49ae654fe74c 100644 --- a/barretenberg/ts/src/barretenberg/blake2s.test.ts +++ b/barretenberg/ts/src/barretenberg/blake2s.test.ts @@ -5,7 +5,7 @@ describe('blake2s async', () => { let api: Barretenberg; beforeAll(async () => { - api = await Barretenberg.new({threads: 1}); + api = await Barretenberg.new({ threads: 1 }); }); afterAll(async () => { From c30ac1cd82827970ed52e06b7d8f7d031f227851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Pedro=20Sousa?= Date: Fri, 15 Dec 2023 16:27:55 +0000 Subject: [PATCH 4/4] chore: removing yarn lock I'd accidentaly put in root --- yarn.lock | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fb57ccd13afb..000000000000 --- a/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - -