Cant find EvalMult() defined

I was thinking of trying to use Cuda to speed up some operations. So far I was just looking for the EvalMult() function so I can better understand what is going on there, but I cannot seem to find it? Can someone tell me the file/directory it is in so I can look at it? I am using it in CKKS if that makes a difference.

@bwade you will find EvalMult() in cryptocontext.h. this header provides all API functions you would need.

I found the virtual function here:
Ciphertext EvalMult(ConstCiphertext ciphertext1, ConstCiphertext ciphertext2) const {
TypeCheck(ciphertext1, ciphertext2);

    const auto evalKeyVec = GetEvalMultKeyVector(ciphertext1->GetKeyTag());
    if (!evalKeyVec.size()) {
        OPENFHE_THROW(type_error, "Evaluation key has not been generated for EvalMult");
    }

    return GetScheme()->EvalMult(ciphertext1, ciphertext2, evalKeyVec[0]);
}

but I am still not sure what this is doing. Maybe I am not understanding the code but I was expecting to see some multiplication operations or something. Can this be explained?

Again, I was hoping to implement CUDA or some form of hardware acceleration. I know Duality is working on the DARPA Drive project which is doing things in this area?

I also see a response from November 2023 (Homomorphic operations in in CUDA kernel) which asks about this.

Is this something that can be done by an individual or is this something much more complicated than I am anticipating. My computations take minutes to compute and looking to see how to speed them up.

Hi @bwade,

I suggest looking at Plans for GPU Support (BFV, TFHE, CKKS) Feel to reach out to me directly.

Thanks,
Yuriy