#include #include #include using namespace std; #define kDim 2000 #define kOffset 127 #define kFactor 31 typedef double Matrix[kDim][kDim]; // Thread base class. Derive subclass and implement Run struct Thread { pthread_t id; // ID of created thread static void *ThreadMain(void *vThread) { return ((Thread *)vThread)->Run(); } Thread() { pthread_create(&id, NULL, ThreadMain, this); } virtual void Join() { pthread_join(id, NULL); } virtual void *Run() = 0; }; void fillMat(Matrix trg, int seed) { int row, col, val = seed; for (row = 0; row < kDim; row++) for (col = 0; col < kDim; col++) { val = val * kFactor + kOffset; trg[row][col] = val / (double)INT_MAX; } } void printMat(Matrix mat) { int row, col; for (row = 0; row < kDim; row++) { for (col = 0; col < kDim; col++) printf("%0.4lf ", mat[row][col]); printf("\n"); } printf("\n"); } Matrix m1, m2, prd; int main(int argc, char **argv) { int tIdx, numThreads; double checkSum = 0.0; fillMat(m1, 10); fillMat(m2, 20); // printMat(m1); // printMat(m2); printf("\n%lf\n", checkSum); // printMat(prd); }