I don't have much experience with openmp.
Is it possible to make the following code faster by using a for loop over pointer instead of index?
Are there anyway to make the following code faster?
The code multiplies an array by a constant.
Thank you.
code:
#include <iostream>
#include <stdlib.h>
#include <stdint.h>
#include <vector>
using namespace std;
int main(void){
size_t dim0, dim1;
dim0 = 100;
dim1 = 200;
std::vector<float> vec;
vec.resize(dim0*dim1);
float scalar = 0.9;
size_t size_sq = dim0*dim1;
#pragma omp parallel
{
#pragma omp for
for(size_t i = 0; i < size_sq; ++i){
vec[i] *= scalar;
}
}
}
serial pointer loop
float* ptr_start = vec.data();
float* ptr_end = ptr_start + dim0*dim1;
float* ptr_now;
for(ptr_now = ptr_start; ptr_now != ptr_end; ++ptr_now){
*(ptr_now) *= scalar;
}