Skip to content

Commit

Permalink
tests(mont): replace ScalarField with BaseField in mont_mul benchmark…
Browse files Browse the repository at this point in the history
…s and tests
  • Loading branch information
moven0831 committed Jan 3, 2025
1 parent a29e9c6 commit 5350f18
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::msm::metal_msm::utils::limbs_conversion::{FromLimbs, ToLimbs};
use crate::msm::metal_msm::utils::mont_params::{
calc_bitwidth, calc_mont_radix, calc_nsafe, calc_num_limbs, calc_rinv_and_n0,
};
use ark_bn254::Fr as ScalarField;
use ark_bn254::Fq as BaseField;
use ark_ff::{BigInt, PrimeField};
use metal::*;
use num_bigint::{BigUint, RandBigInt};
Expand Down Expand Up @@ -54,7 +54,7 @@ fn expensive_computation(
}

pub fn benchmark(log_limb_size: u32, shader_file: &str) -> Result<i64, String> {
let p: BigUint = ScalarField::MODULUS.try_into().unwrap();
let p: BigUint = BaseField::MODULUS.try_into().unwrap();

let p_bitwidth = calc_bitwidth(&p);
let num_limbs = calc_num_limbs(log_limb_size, p_bitwidth);
Expand All @@ -77,20 +77,20 @@ pub fn benchmark(log_limb_size: u32, shader_file: &str) -> Result<i64, String> {

let cost = 2u32.pow(16u32) as usize;
let expected = expensive_computation(cost, &a, &b, &p, &r);
let expected_limbs = ScalarField::from_bigint(expected.clone().try_into().unwrap())
let expected_limbs = BaseField::from_bigint(expected.clone().try_into().unwrap())
.unwrap()
.into_bigint()
.to_limbs(num_limbs, log_limb_size);

let ar_limbs = ScalarField::from_bigint(a_r.clone().try_into().unwrap())
let ar_limbs = BaseField::from_bigint(a_r.clone().try_into().unwrap())
.unwrap()
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
let br_limbs = ScalarField::from_bigint(b_r.clone().try_into().unwrap())
let br_limbs = BaseField::from_bigint(b_r.clone().try_into().unwrap())
.unwrap()
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
let p_limbs = &ScalarField::MODULUS.to_limbs(num_limbs, log_limb_size);
let p_limbs = &BaseField::MODULUS.to_limbs(num_limbs, log_limb_size);

let device = get_default_device();

Expand Down
14 changes: 7 additions & 7 deletions mopro-msm/src/msm/metal_msm/tests/mont_backend/mont_mul_cios.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use crate::msm::metal_msm::host::gpu::{
use crate::msm::metal_msm::host::shader::{compile_metal, write_constants};
use crate::msm::metal_msm::utils::limbs_conversion::{FromLimbs, ToLimbs};
use crate::msm::metal_msm::utils::mont_params::{calc_mont_radix, calc_nsafe, calc_rinv_and_n0};
use ark_bn254::Fr as ScalarField;
use ark_bn254::Fq as BaseField;
use ark_ff::{BigInt, PrimeField};
use metal::*;
use num_bigint::{BigUint, RandBigInt};
Expand All @@ -25,11 +25,11 @@ pub fn test_mont_mul_15() {
}

pub fn do_test(log_limb_size: u32) {
let modulus_bits = ScalarField::MODULUS_BIT_SIZE as u32;
let modulus_bits = BaseField::MODULUS_BIT_SIZE as u32;
let num_limbs = ((modulus_bits + log_limb_size - 1) / log_limb_size) as usize;

let r = calc_mont_radix(num_limbs, log_limb_size);
let p: BigUint = ScalarField::MODULUS.try_into().unwrap();
let p: BigUint = BaseField::MODULUS.try_into().unwrap();
let nsafe = calc_nsafe(log_limb_size);

let res = calc_rinv_and_n0(&p, &r, log_limb_size);
Expand All @@ -43,9 +43,9 @@ pub fn do_test(log_limb_size: u32) {
let b_r = &b * &r % &p;
let expected = (&a * &b * &r) % &p;

let a_r_in_ark = ScalarField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = ScalarField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = ScalarField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let a_r_in_ark = BaseField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = BaseField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = BaseField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let expected_limbs = expected_in_ark
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
Expand All @@ -61,7 +61,7 @@ pub fn do_test(log_limb_size: u32) {
);
let p_buf = create_buffer(
&device,
&ScalarField::MODULUS.to_limbs(num_limbs, log_limb_size),
&BaseField::MODULUS.to_limbs(num_limbs, log_limb_size),
);
let result_buf = create_empty_buffer(&device, num_limbs);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use crate::msm::metal_msm::host::gpu::{
use crate::msm::metal_msm::host::shader::{compile_metal, write_constants};
use crate::msm::metal_msm::utils::limbs_conversion::{FromLimbs, ToLimbs};
use crate::msm::metal_msm::utils::mont_params::{calc_mont_radix, calc_nsafe, calc_rinv_and_n0};
use ark_bn254::Fr as ScalarField;
use ark_bn254::Fq as BaseField;
use ark_ff::{BigInt, PrimeField};
use metal::*;
use num_bigint::{BigUint, RandBigInt};
Expand All @@ -25,11 +25,11 @@ pub fn test_mont_mul_15() {
}

pub fn do_test(log_limb_size: u32) {
let modulus_bits = ScalarField::MODULUS_BIT_SIZE as u32;
let modulus_bits = BaseField::MODULUS_BIT_SIZE as u32;
let num_limbs = ((modulus_bits + log_limb_size - 1) / log_limb_size) as usize;

let r = calc_mont_radix(num_limbs, log_limb_size);
let p: BigUint = ScalarField::MODULUS.try_into().unwrap();
let p: BigUint = BaseField::MODULUS.try_into().unwrap();
let nsafe = calc_nsafe(log_limb_size);

let res = calc_rinv_and_n0(&p, &r, log_limb_size);
Expand All @@ -43,9 +43,9 @@ pub fn do_test(log_limb_size: u32) {
let b_r = &b * &r % &p;
let expected = (&a * &b * &r) % &p;

let a_r_in_ark = ScalarField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = ScalarField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = ScalarField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let a_r_in_ark = BaseField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = BaseField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = BaseField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let expected_limbs = expected_in_ark
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
Expand All @@ -61,7 +61,7 @@ pub fn do_test(log_limb_size: u32) {
);
let p_buf = create_buffer(
&device,
&ScalarField::MODULUS.to_limbs(num_limbs, log_limb_size),
&BaseField::MODULUS.to_limbs(num_limbs, log_limb_size),
);
let result_buf = create_empty_buffer(&device, num_limbs);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use crate::msm::metal_msm::host::gpu::{
use crate::msm::metal_msm::host::shader::{compile_metal, write_constants};
use crate::msm::metal_msm::utils::limbs_conversion::{FromLimbs, ToLimbs};
use crate::msm::metal_msm::utils::mont_params::{calc_mont_radix, calc_rinv_and_n0};
use ark_bn254::Fr as ScalarField;
use ark_bn254::Fq as BaseField;
use ark_ff::{BigInt, PrimeField};
use metal::*;
use num_bigint::{BigUint, RandBigInt};
Expand All @@ -29,11 +29,11 @@ pub fn test_mont_mul_13() {

pub fn do_test(log_limb_size: u32) {
// Calculate num_limbs based on modulus size and limb size
let modulus_bits = ScalarField::MODULUS_BIT_SIZE as u32;
let modulus_bits = BaseField::MODULUS_BIT_SIZE as u32;
let num_limbs = ((modulus_bits + log_limb_size - 1) / log_limb_size) as usize;

let r = calc_mont_radix(num_limbs, log_limb_size);
let p: BigUint = ScalarField::MODULUS.try_into().unwrap();
let p: BigUint = BaseField::MODULUS.try_into().unwrap();

let res = calc_rinv_and_n0(&p, &r, log_limb_size);
let n0 = res.1;
Expand All @@ -46,9 +46,9 @@ pub fn do_test(log_limb_size: u32) {
let b_r = &b * &r % &p;
let expected = (&a * &b * &r) % &p;

let a_r_in_ark = ScalarField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = ScalarField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = ScalarField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let a_r_in_ark = BaseField::from_bigint(a_r.clone().try_into().unwrap()).unwrap();
let b_r_in_ark = BaseField::from_bigint(b_r.clone().try_into().unwrap()).unwrap();
let expected_in_ark = BaseField::from_bigint(expected.clone().try_into().unwrap()).unwrap();
let expected_limbs = expected_in_ark
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
Expand All @@ -64,7 +64,7 @@ pub fn do_test(log_limb_size: u32) {
);
let p_buf = create_buffer(
&device,
&ScalarField::MODULUS.to_limbs(num_limbs, log_limb_size),
&BaseField::MODULUS.to_limbs(num_limbs, log_limb_size),
);
let result_buf = create_empty_buffer(&device, num_limbs);

Expand Down Expand Up @@ -133,17 +133,17 @@ pub fn do_test(log_limb_size: u32) {
pub fn test_number_conversions() {
// Setup parameters
let log_limb_size = 12;
let modulus_bits = ScalarField::MODULUS_BIT_SIZE as u32;
let modulus_bits = BaseField::MODULUS_BIT_SIZE as u32;
let num_limbs = ((modulus_bits + log_limb_size - 1) / log_limb_size) as usize;

// Create test values using small numbers for clarity
let original_biguint = BigUint::parse_bytes(b"123456789", 10).unwrap();

// Convert BigUint to ScalarField
// Convert BigUint to BaseField
let scalar_field_value =
ScalarField::from_bigint(original_biguint.clone().try_into().unwrap()).unwrap();
BaseField::from_bigint(original_biguint.clone().try_into().unwrap()).unwrap();

// Convert ScalarField to limbs
// Convert BaseField to limbs
let limbs = scalar_field_value
.into_bigint()
.to_limbs(num_limbs, log_limb_size);
Expand All @@ -168,7 +168,7 @@ pub fn test_number_conversions() {
];

for value in test_values {
let scalar = ScalarField::from_bigint(value.clone().try_into().unwrap()).unwrap();
let scalar = BaseField::from_bigint(value.clone().try_into().unwrap()).unwrap();
let value_limbs = scalar.into_bigint().to_limbs(num_limbs, log_limb_size);
let converted: BigUint = BigInt::from_limbs(&value_limbs, log_limb_size)
.try_into()
Expand Down

0 comments on commit 5350f18

Please sign in to comment.