C/C++ :: OpenMP Can Make For Loop Faster?
Dec 9, 2014
I'm trying to optimize this code using openMP. The line I added made it run about twice as fast but I'm trying to figure out how to make it even faster. Could reshaping the loops potentially increase the speed?
//4 threads
int listsize=15000;
#pragma omp parallel for shared(f) private(i,j,hash)
for(i = 0; i < listsize; i++) {
printf("Thread: %d i: %zu wl_size: %zu
",omp_get_thread_num(),i,wl_size);
for (j = 0; j < num; j++) {
h = f[j] (getw(list, i));
c[h] = 1;
} }
View 2 Replies
ADVERTISEMENT
Aug 25, 2014
I have this code which performs the analysis part of discrete wavelet transform. It works pretty well. However, I wish to reduce the time that it consumes even further. I did use reserve() and it worked upto few msec.
int rows = signal.size();
int cols = signal[0].size();
int cols_lp1 =(int) ceil( (double) cols / 2);
vector<vector<double> > lp_dn1(rows, vector<double>(cols_lp1));
vector<double> temp_row;
temp_row.reserve(512);
[Code] ....
View 5 Replies
View Related
Jan 30, 2014
I have a 125X125 array, each element is 55 bits. The cache line for the CPU ( Cortex A9) is 32 bits. Is there anyway to do optimizations, like loop tiling that would make multiplication and calculations faster?
View 5 Replies
View Related
Oct 19, 2014
Can I possibly get a better implementation of a prime number detecting algorithm than the one I already have below?
Code:
#include <cstdio>
#include <cstdlib>
int main() {
int no, high, low;
int divisor;
[Code] .....
View 8 Replies
View Related
Nov 20, 2014
I'm trying to write a program for a lab, I know how easy it is but cant see to crack it.
I need to make a program using while or for loop.
I must have the user type a number, for an input value an output value but then do it again several times but without it going on forever asking again and again.
View 4 Replies
View Related
Aug 29, 2014
How to make a loop so program never end, it end only by typing "EXIT"
View 1 Replies
View Related
Oct 26, 2013
I need to do make a loop inside a condition. Can it be done? I don't want to call another function to do it. Any way at all without calling separate function inside the if? I just want to do:
if (
for (int i = 0; i<=10; i++)
{
//stuff related to the for loop
} )
{
//stuff related to the initial if condition
};
View 7 Replies
View Related
Nov 15, 2013
I have an exam in C programming I'm a little stuck on loops..I have to make a program that multiplies the loop variable by 2 then takes away 1... easy, that was a for loop no problem
for (x=3; x<=65; x=x*2-1)
that should print out 3 5 9 17 33 65 however, my lecturer has given the task for it to reverse, but not to display the number 17 on the way back down using an if statement...however, this time it must be a do while loop... This is what I have so far.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x = 129;
}
[code]....
View 7 Replies
View Related
Apr 4, 2013
I'm making a program for a MMO I play. It calculates the cash and resources needed to build certain 'modules'. I'm having trouble to do something very simple : make a loop until the user asks to break the loop. Here is what the interface looks like :
What module do you want to install?
(Examples: 'Avenger' or 'VLLT')
dd // I input this
DD. COST each : 60,000 cr.
How many do you want? (Modules left:15)
(NOTE : You may enter a negative number if you made a mistake)
3 // I input this
Current Total Module Price : 180000 cr
+6 droids
[Code] ....
The bigger code box below is a part of the code I made. What I deleted is uninteresting, it's just the same thing again : other resources, other 'modules'...
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
struct resources// Defines the amount of resources and their price
[Code] ....
View 8 Replies
View Related
Dec 11, 2013
Something that does something like this
at this point run a loop for all players, in this loop use random to determine the face and depending on the face run a loop (for roll again etc) or give next user the chance.
And this loop is 2-12 people, all rolling die.
They draw 3 die out of a cup of 12.
Then they roll the 3 die, getting fish, hook, or boot on each die.
View 1 Replies
View Related
Dec 11, 2013
[URL] ....
This is my code, but how can I implement this?
View 1 Replies
View Related
Apr 10, 2013
I wrote code that finds the number of prime numbers in a range entered by the user. Now I'm attempting to make it run in parallel with the number of threads I assign it to have. I'm using blocking technique, so I'm assigning, in this scenario, 4 threads - 1/4 of the numbers in the range to the first array, and the next 1/4 of the numbers in the range to the next array and so on. Then I want to execute the prime number counting code in parallel. I'm using openMP to do this. I'm having difficulty setting it all up properly. I have a little experience with pthreads but little with openMP and am struggling in how this should be done.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
[Code]....
View 2 Replies
View Related
Dec 19, 2012
I am using map for assigning an identifiers for a line from file in c++. Also i am using IDs for a pattern in line {name, operator, val} which is separated by ';'. I am using read_pub() for calculating how many patterns are there in a line.
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<fstream>
#include<omp.h>
#include<map>
#include <sstream>
using namespace std;
struct predicate {
[Code] ....
View 1 Replies
View Related
Mar 29, 2014
I am creating a reaction game using a series of lasers and LRDs and need to make a function which waits for a specific pin in portb to be triggered high before it can move onto waiting for the next pin to be triggered. The time lasped before the "game loses" needs to get exponentially faster as the game goes on.
I am using statements such as if(input(PIN_B0)==1 generate_tone(G_note[2], 1000); but unsure how to write in c "wait x amount of time, if trigger move onto next random pin or no trigger go to lose function.
View 8 Replies
View Related
Feb 15, 2015
is it better to reuse an existing variable or create a new variable for the following situation:
/* Is this faster: */
glm::mat4 newViewModelMatrix = (*existingViewMatrix) * (*existingModelMatrix);
/* Or is this faster? */
glm::mat4 existingViewModelMatrix; /* declared in class header - initial value assigned in class constructor */
existingViewModelMatrix = (*existingViewMatrix) * (*existingModelMatrix);
Just wondering if it makes a difference or not.
View 1 Replies
View Related
Dec 31, 2013
I'm working on a code that needs to loop a switch case back to the beginning after a certain input is entered.
ex) Code:
printf("Select an option);
printf("1. Play game");
printf("2. Status");
printf("3. Exit");
scanf("%i", &userinput);
switch(userinput);
[Code]...
For my program, I want option 2 to display something, then loop back to "select and option" after the user presses enter. How would I write that? Would i use a while? do while?
View 3 Replies
View Related
Nov 27, 2014
Write a program to make a table for any input number and then continuesly ask to press y to print more table and if you press any key other than y then program must be terminate using while loop and do while loop. How to start or end with it.
View 2 Replies
View Related
May 20, 2013
I'm quite new to openMP, mostly used pthreads and mpi before. Now I like to tinker a bit with openMP, but haven't found any good docs, reference list or similar.
What's the equivalent to pthread's mutex lock in openMP?
Code:
#pragma omp parallel for
for(i=0; i<n ; i++){
// Do something intelligent...
// If needed handle a shared variable.
}
How do I protect the shared variable?
View 1 Replies
View Related
Oct 14, 2014
I'm trying to write a small brute force application in C on Ubuntu 14.04.1 using Code::Blocks with gcc-4.8.2. It's nothing special and just for practice.The focus is on a parallel procedure that generates strings by use of OpenMP. Every time a string is generated, the counter variable should be incremented. At the end, regardless of whether the search string was matched or not, it outputs the correct number of all generated strings (counts).It works fine so far.Here is my source code example:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <omp.h>
/* Global variables */
const char Literals[] = "abcdefghijklmnopqrstuvwxyz";
const int NLiterals = sizeof( Literals ) - 1; // NLiterals = 26 Bytes.
const char SearchString[] = "test"; // I.e. until 'test' there are 355414 counts.
char MatchString[16];
}
[code]...
This should speed up the process of generating strings. But if I do so, always when the program has a match the number of counted strings is wrong. Here are some possible "wrong" outputs: Code: Match: 'test'! 40710 tries. <-- number of tries (counts) is wrong! or Code: Match: 'test'! 40375 tries. <-- number of tries (counts) is wrong! But if the program doesn't have a match (i.e. when I change SearchString to something like the following line), then the number of counts is correct: Code: const char SearchString[] = "test0"; The only thing I have to do before, is to change the follow line from:
Code:
printf( "
No match! %u tries.
", Count / 8 ); to Code: printf( "
No match! %u tries.
", Count );
But also it can happen that there is no output. Like an infinite or endless loop. How can I improve the source code in order that the correct number of counts is always displayed and what can be the reason for the endless loops time after time? Both issues appears only by the use of Code: #pragma omp for schedule( dynamic ).
View 5 Replies
View Related
May 22, 2013
I'm trying to implement Parallel loop with OpenMP. I just googled and got the below sample, but it seems its not executing parallely. It takes same amount time for code which is with parallel and without parallel.
Without Parallel : It takes 39 secs.
-----------------
for (int I=0;I<100000;I++){
cout<<I<<" ";
}
With Parallel : It takes 39 secs.
--------------
#include<omp.h>
#pragma omp parallel {
#pragma omp for
for (int I=0;I<100000;I++) {
cout<<I<<endl;
}
}
Why parallel is not working and it takes same time. My machine is Dual Core.
View 4 Replies
View Related
Jul 31, 2014
My while loop is the problem. I want to use a non-recursive function to make the triangle number the sum of all whole numbers from 1 to N.
#include "stdafx.h"
#include <iostream>
using namespace std;
int triangle(int t);
[Code] ....
View 2 Replies
View Related
Feb 9, 2015
I have to make a function that i'll later be able to use for a ceasar cypher. The letters should shift a user inputted number. This is what I have so far:
char shiftChar(char c, int s) {
char ch = c;
int shift = s;
int newC;
newC = int(ch) + shift;
return newC;
}
The problem with this, is that it doesn't loop back to the start of the alphabet once i get past z.
View 2 Replies
View Related
Feb 6, 2014
Is there a way of knowing which indices a thread is assigned in a parallel openMP scope?
View 6 Replies
View Related
Apr 11, 2013
I recently picked up multithreading with OpenMP, so it is still new to me. While processing data, I would like to store it in a vector, as shown here:
vector<int> vect;
#pragma omp parallel for
for(int c=0; c<500; ++c) {
vect.push_back(c)
}
However, since it is multithreaded, I would like (and need!) to have one dedicated vector per thread. I haven't been able to find an example of how to do this online. Is it even possible?
View 1 Replies
View Related
May 2, 2013
I am trying to parallelize some of my code with OpenMP. When I switch to using multiple threads I start getting random numbers that are out of the expected range.
Here is a small example:
Code:
#include <stdio.h>
#include </usr/local/include/gsl/gsl_rng.h>
#include </usr/local/include/gsl/gsl_randist.h>
int main() {
int mySeed=0;
const gsl_rng_type *T;
T = gsl_rng_ranlxs2;
gsl_rng *r_1 ;
[Code] .....
gsl_rng_uniform should only output number in the range [0,1) but with multiple threads it outputs larger number as well.
View 2 Replies
View Related
Oct 13, 2014
We are making a program--but every time we input a value for scanf, the following for loop does not work and the program quits without displaying the for loop's function. We are not getting any errors.
View 11 Replies
View Related