#include <iostream>
#include <vector>
#include <omp.h>
#define VECTOR_SIZE 1000000
int main() {
// Initialize vectors
std::vector<int> A(VECTOR_SIZE);
std::vector<int> B(VECTOR_SIZE);
// Initialize vectors with random values
for (int i = 0; i < VECTOR_SIZE; ++i) {
A[i] = i;
B[i] = VECTOR_SIZE - i;
}
int dot_product = 0;
// Perform dot product in parallel
#pragma omp parallel for reduction(+:dot_product)
for (int i = 0; i < VECTOR_SIZE; ++i) {
dot_product += A[i] * B[i];
}
// Output the result
std::cout << "Dot product result: " << dot_product << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8b21wLmg+CgojZGVmaW5lIFZFQ1RPUl9TSVpFIDEwMDAwMDAKCmludCBtYWluKCkgewogICAgLy8gSW5pdGlhbGl6ZSB2ZWN0b3JzCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IEEoVkVDVE9SX1NJWkUpOwogICAgc3RkOjp2ZWN0b3I8aW50PiBCKFZFQ1RPUl9TSVpFKTsKCiAgICAvLyBJbml0aWFsaXplIHZlY3RvcnMgd2l0aCByYW5kb20gdmFsdWVzCiAgICBmb3IgKGludCBpID0gMDsgaSA8IFZFQ1RPUl9TSVpFOyArK2kpIHsKICAgICAgICBBW2ldID0gaTsKICAgICAgICBCW2ldID0gVkVDVE9SX1NJWkUgLSBpOwogICAgfQoKICAgIGludCBkb3RfcHJvZHVjdCA9IDA7CgogICAgLy8gUGVyZm9ybSBkb3QgcHJvZHVjdCBpbiBwYXJhbGxlbAogICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHJlZHVjdGlvbigrOmRvdF9wcm9kdWN0KQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBWRUNUT1JfU0laRTsgKytpKSB7CiAgICAgICAgZG90X3Byb2R1Y3QgKz0gQVtpXSAqIEJbaV07CiAgICB9CgogICAgLy8gT3V0cHV0IHRoZSByZXN1bHQKICAgIHN0ZDo6Y291dCA8PCAiRG90IHByb2R1Y3QgcmVzdWx0OiAiIDw8IGRvdF9wcm9kdWN0IDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=