Skip to content
Snippets Groups Projects
Select Git revision
  • c4113b5f3da6bfbc544648cfdde6d3df01b0d7b4
  • master default protected
  • v0.10.0
  • v0.10.0-rc2
  • v0.10.0-rc1
  • v0.9.0
  • v0.9.0-rc1
  • v0.8.0
  • v0.8.0-rc2
  • v0.8.0-rc1
  • v0.7.0
  • v0.7.0-rc2
  • v0.7.0-rc1
  • v0.6.1
  • v0.6.0
  • v0.6.0-rc2
  • v0.6.0-rc1
  • v0.5.0
  • v0.5.0-rc2
  • v0.5.0-rc1
  • v0.4.0
  • v0.4.0-rc2
22 results

guess-rev.sh

Blame
    • dbrownell's avatar
      b1f7b359
      Change version labels to work better with GIT · b1f7b359
      dbrownell authored
       - The guess-rev.sh script is now a tweaked version of "setlocalversion" as
         seen in Linux, U-Boot, and various other projects.  When it finds source
         control support (git, hg, svn) it uses IDs from there.  Else (specific
         to this project) it reports itself as "-snapshot", e.g. from gitweb.
      
         I verified this new "guess-rev.sh" script runs under Cygwin.
      
       - Also update the generic version strings to be like "0.3.0-dev" (during
         development) instead of the very long "0.3.0-in-development".  These also
         show up in the PDF docs.  For better tracking, we might eventually change
         these strings to include the version IDs too.
      
       - Change the startup banner version strings so they include the guess-rev
         output.  Development and release versions with GIT will be like
      
          Open On-Chip Debugger 0.3.0-dev-00282-g7191a4f-dirty (2009-10-05-20:57) 
          Open On-Chip Debugger 0.3.0 (2009-10-05-20:57) 
      
         instead of the previous SVN-specific (even when using git-svn!)
      
          Open On-Chip Debugger 0.3.0-in-development (2009-10-05-01:39) svn:exported
          Open On-Chip Debugger 0.3.0 (2009-10-05-01:39) Release
      
      
      
      git-svn-id: svn://svn.berlios.de/openocd/trunk@2809 b42882b7-edfa-0310-969c-e2dbd0fdcd60
      b1f7b359
      History
      Change version labels to work better with GIT
      dbrownell authored
       - The guess-rev.sh script is now a tweaked version of "setlocalversion" as
         seen in Linux, U-Boot, and various other projects.  When it finds source
         control support (git, hg, svn) it uses IDs from there.  Else (specific
         to this project) it reports itself as "-snapshot", e.g. from gitweb.
      
         I verified this new "guess-rev.sh" script runs under Cygwin.
      
       - Also update the generic version strings to be like "0.3.0-dev" (during
         development) instead of the very long "0.3.0-in-development".  These also
         show up in the PDF docs.  For better tracking, we might eventually change
         these strings to include the version IDs too.
      
       - Change the startup banner version strings so they include the guess-rev
         output.  Development and release versions with GIT will be like
      
          Open On-Chip Debugger 0.3.0-dev-00282-g7191a4f-dirty (2009-10-05-20:57) 
          Open On-Chip Debugger 0.3.0 (2009-10-05-20:57) 
      
         instead of the previous SVN-specific (even when using git-svn!)
      
          Open On-Chip Debugger 0.3.0-in-development (2009-10-05-01:39) svn:exported
          Open On-Chip Debugger 0.3.0 (2009-10-05-01:39) Release
      
      
      
      git-svn-id: svn://svn.berlios.de/openocd/trunk@2809 b42882b7-edfa-0310-969c-e2dbd0fdcd60
    cudapit.cu 2.08 KiB
    //
    // cudapit.cu
    // Neil Gershenfeld 3/1/20
    // calculation of pi by a CUDA multi-GPU thread sum
    // pi = 3.14159265358979323846 
    //
    #include <iostream>
    #include <chrono>
    #include <thread>
    #include <vector>
    #include <cstdint>
    uint64_t blocks = 1024;
    uint64_t threads = 1024;
    uint64_t nloop = 10000000;
    uint64_t npts = blocks*threads;
    std::vector<double> results;
    __global__ void init(double *arr,uint64_t nloop,uint64_t npts,int index) {
       uint64_t i = blockIdx.x*blockDim.x+threadIdx.x;
       uint64_t start = nloop*i+npts*nloop*index+1;
       uint64_t end = nloop*(i+1)+npts*nloop*index+1;
       arr[i] = 0;
       for (uint64_t j = start; j < end; ++j)
          arr[i] += 0.5/((j-0.75)*(j-0.25));
       }
    __global__ void reduce_sum(double *arr,uint64_t len) {
       uint64_t i = blockIdx.x*blockDim.x+threadIdx.x;
       if (i < len)
          arr[i] += arr[i+len];
       }
    void reduce(double *arr) {
       uint64_t len = npts >> 1;
       while (1) {
          reduce_sum<<<blocks,threads>>>(arr,len);
          len = len >> 1;
          if (len == 0)
             return;
          }
       }
    void sum(int index) {
       cudaSetDevice(index);
       double harr[1],*darr;
       cudaMalloc(&darr,npts*sizeof(double));
       init<<<blocks,threads>>>(darr,nloop,npts,index);
       reduce(darr);
       cudaDeviceSynchronize();
       cudaMemcpy(harr,darr,8,cudaMemcpyDeviceToHost);
       results[index] = harr[0];
       cudaFree(darr);
       }
    int main(void) {
       int ngpus;
       cudaGetDeviceCount(&ngpus);
       std::thread threads[ngpus];
       double pi = 0;
       auto tstart = std::chrono::high_resolution_clock::now();        
       for (int i = 0; i < ngpus; ++i) {
          results.push_back(0);
          threads[i] = std::thread(sum,i);
          }
       for (int i = 0; i < ngpus; ++i) {
          threads[i].join();
          pi += results[i];
          }
       auto tend = std::chrono::high_resolution_clock::now();        
    	auto dt = std::chrono::duration_cast<std::chrono::microseconds>(tend-tstart).count();
       auto gflops = npts*nloop*ngpus*5.0/dt/1e3;
       std::cout << "npts: " << npts << " nloop: " << nloop << " ngpus: " << ngpus << " pi: " << pi << '\n';
       std::cout << "time: " << 1e-6*dt << " estimated GFlops: " << gflops << '\n';
       return 0;
       }